Показать полную графическую версию : ffmpeg transpose
или я глючу, или что.
Задача примитивная: ролик снят в портретной ориентации на 1920*1080, при заливке лежит боком, нужно повернуть 90 по часовой и уменьшить до 720*1280.
Скрипт тож примитивнее некуда:
ffmpeg -i input.mp4 -vf "transpose=1,scale=720:-2" output.mp4
(единичка - на 90 по часовой, 2 - против)
Итог - отлько уменьшает, без поворота.
Если использую rotate=90 - поворачивает, да.
Но на примерно 60 градусов и потом уменьшает-обрезает вот такое косое видео.
Что-то я не понял, тут же негде ошибку сделать, всё просто как валенок. Или я всё-таки ухитрился? Где меня глючит?
Попробовал еще вариант transpose=clock - на обычном ландшафтном сработало, повернуло набок.
На требуемом - перевернуло на 180 вместо 90. Тот же код, с точностью до символа.
Ничего не понимаю.
DJ Mogarych
25-07-2019, 08:53
Попробуйте без кавычек.
Попробуйте без кавычек. »
поворачивает на 180. с transpose=1
и с transpose=2
c transpose=3 и 0 - не поворачивает.
С rotate=90 - поворот на 120 градусов
http://static2.keep4u.ru/2019/07/25/out.mp4_000008800814f87f312b94d2d.md.jpg (http://keep4u.ru/image/SnCcd)
там passthrough ещё transpose=1:none,scale=720:-2
transpose=1:none, »
и снова 180 поворот.
DJ Mogarych
25-07-2019, 16:54
bredych, я вводил ваши же параметры без кавычек, и у меня всё отрабатывает корректно.
Какая у вас версия ffmpeg?
Вот моя:
ffmpeg version N-94284-gf86f213a6d Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.1.1 (GCC) 20190621
у меня
ffmpeg version N-94271-g2601eef850 Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.1.1 (GCC) 20190621 - того же дня билд, ток у меня под винду.
вот для опытов кусочек вырезал без перекодирования, в зип загнал, чтоб не трогало точно.
https://ufile.io/uc6u6lm7
DJ Mogarych
26-07-2019, 22:14
Понятно. ffmpeg здесь ни при чём, дело в том, что телефон при съёмке добавил в метаданные видеофайла вот такую информацию:
Metadata:
rotate : 90
handler_name : VideoHandle
Side data:
displaymatrix: rotation of -90.00 degrees
Плееры, видя это, сразу переворачивают видео как надо, ffplay не исключение. ffmpeg эти метаданные при повороте самого видео не трогает, поэтому и получается, что видео перевёрнуто само по себе + поворачивается метаданными.
Вот как можно управлять метаданными поворота:
ffmpeg -i .\101.mp4 -metadata:s:v rotate="0" -c copy 102.mp4
https://stackoverflow.com/a/31683689
Вот как можно управлять метаданными поворота: »
увы, это дело я тоже пробовал, еще тогда добавив в код стейтмент (по принципу "обнуление поворота точно не повредит")
с тем же результатом..
ffmpeg -i 20190720_200937.mp4 -vf transpose=1:none,scale=720:-2 -t 10 -metadata:s:v:0 rotate=0 -c:a copy -vcodec libx264 out.mp4
-t 10 добавлено в тестовых целях, чтоб делал только 10 секунд на пробу.
апд, при коде точно таком же, как в примере -
ffmpeg -i 20190720_200937.mp4 -vf transpose=1:none,scale=720:-2 -t 10 -metadata:s:v rotate="0" -c:a copy -vcodec libx264 out.mp4 - точно так же на 180 вертит
bredych, VirtualDubMod 1.5.10.2 (https://virtualdubmod.ru.uptodown.com/windows) не хотите попробовать? Простая и бесплатная.
у меня вообще без transpose повернуло на 90!
upd: с transpose=1:portrait то же самое
у меня вообще без transpose повернуло на 90! »Ещё раз, если не услышали - Virtual DubMode.
Вам поговорить или просто попробовать без лишней болтовни? Оригинал можете заархивировать в случае неудачи или переписать в другое место.
DJ Mogarych
31-07-2019, 20:00
bredych, вы сначала уберите метаданные, а потом поворачивайте, не надо всё за один раз делать.
Virtual DubMode »
Этой программе давно пора уже на пенсию, к тому же, она сохраняет только в AVI.
Если уж пользоваться программкой с GUI для обсуждаемого случая, лучше взять AVIDemux (http://avidemux.sourceforge.net/download.html).
DJ Mogarych, ffmpeg учитывает эти метаданные безо всяких transpose. Проверено на файле ТСа.
DJ Mogarych
31-07-2019, 21:53
Да, конечно, учитывает. ffplay просто играет его уже в правильном положении, я об этом уже упоминал:
Плееры, видя это, сразу переворачивают видео как надо, ffplay не исключение. »
Но задача стояла перевернуть (зачем - не ко мне вопрос), вертелось не так как надо, и я тот же файл ТС-а обработал без проблем - сначала убрал метаданные с сохранением промежуточного результата, а затем уже спокойно перевернул транспозом.
Но задача стояла перевернуть (зачем - не ко мне вопрос) »
так ответ был уже дан - в сеть залить хотел. Оригинал повален на левый бок, обработка заваливает на правый, а прямо - никто.
вы сначала уберите метаданные, а потом поворачивайте, не надо всё за один раз делать. »
если правильно понимаю, он не перекодирует в этом процессе, то есть, качество не падает?
ок, попробую завтра...
Просто удивило, почему оно не желает удалять флаг заодно с поворотом..
зачем удалять метаданные? ffmpeg -i 101.mp4 -vf transpose=1:portrait,scale=720:-2 -c:a copy -vcodec libx264 101_.mp4
или вообще без transpose
ffmpeg -i 101.mp4 -vf scale=720:-2 -c:a copy -vcodec libx264 101_.mp4
в обоих случаях видео стало портретным правильной ориентации. Цель то в этом же?
Цель то в этом же? »
но здесь два перекодирования. А я старался этого избежать.
если правильно понимаю, он не перекодирует в этом процессе, то есть, качество не падает? »
запустил удаление - а он перекодирует.. не понял.
и итоговый файл на каких полметра толще оригинала. Это, конечно, немного для 1.4 гига, но всё-таки что-то добавилось, значит.
© OSzone.net 2001-2012
vBulletin v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.