Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Видео и аудио: обработка и кодирование (http://forum.oszone.net/forumdisplay.php?f=45)
-   -   ffmpeg transpose (http://forum.oszone.net/showthread.php?t=341529)

bredych 24-07-2019 09:32 2881207

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 2881312

Попробуйте без кавычек.

bredych 25-07-2019 10:33 2881321

Цитата:

Цитата DJ Mogarych
Попробуйте без кавычек. »

поворачивает на 180. с transpose=1
и с transpose=2
c transpose=3 и 0 - не поворачивает.
С rotate=90 - поворот на 120 градусов
Скрытый текст

Sham 25-07-2019 12:20 2881332

там passthrough ещё
Код:

transpose=1:none,scale=720:-2

bredych 25-07-2019 16:48 2881373

Цитата:

Цитата Sham
transpose=1:none, »

и снова 180 поворот.

DJ Mogarych 25-07-2019 16:54 2881374

bredych, я вводил ваши же параметры без кавычек, и у меня всё отрабатывает корректно.
Какая у вас версия ffmpeg?
Вот моя:
Цитата:

ffmpeg version N-94284-gf86f213a6d Copyright (c) 2000-2019 the FFmpeg developers
built with gcc 9.1.1 (GCC) 20190621

bredych 26-07-2019 10:59 2881419

у меня
Цитата:

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 2881508

Понятно. 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

bredych 31-07-2019 08:43 2882084

Цитата:

Цитата DJ Mogarych
Вот как можно управлять метаданными поворота: »

увы, это дело я тоже пробовал, еще тогда добавив в код стейтмент (по принципу "обнуление поворота точно не повредит")
с тем же результатом..

Код:

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 вертит

yurfed 31-07-2019 12:35 2882110

bredych, VirtualDubMod 1.5.10.2 не хотите попробовать? Простая и бесплатная.

Sham 31-07-2019 15:53 2882133

у меня вообще без transpose повернуло на 90!
upd: с transpose=1:portrait то же самое

yurfed 31-07-2019 16:22 2882137

Цитата:

Цитата Sham
у меня вообще без transpose повернуло на 90! »

Ещё раз, если не услышали - Virtual DubMode.
Вам поговорить или просто попробовать без лишней болтовни? Оригинал можете заархивировать в случае неудачи или переписать в другое место.

DJ Mogarych 31-07-2019 20:00 2882162

bredych, вы сначала уберите метаданные, а потом поворачивайте, не надо всё за один раз делать.

Цитата:

Цитата yurfed
Virtual DubMode »

Этой программе давно пора уже на пенсию, к тому же, она сохраняет только в AVI.

Если уж пользоваться программкой с GUI для обсуждаемого случая, лучше взять AVIDemux.

Sham 31-07-2019 20:53 2882172

DJ Mogarych, ffmpeg учитывает эти метаданные безо всяких transpose. Проверено на файле ТСа.

DJ Mogarych 31-07-2019 21:53 2882176

Да, конечно, учитывает. ffplay просто играет его уже в правильном положении, я об этом уже упоминал:
Цитата:

Цитата DJ Mogarych
Плееры, видя это, сразу переворачивают видео как надо, ffplay не исключение. »

Но задача стояла перевернуть (зачем - не ко мне вопрос), вертелось не так как надо, и я тот же файл ТС-а обработал без проблем - сначала убрал метаданные с сохранением промежуточного результата, а затем уже спокойно перевернул транспозом.

bredych 31-07-2019 23:19 2882186

Цитата:

Цитата DJ Mogarych
Но задача стояла перевернуть (зачем - не ко мне вопрос) »

так ответ был уже дан - в сеть залить хотел. Оригинал повален на левый бок, обработка заваливает на правый, а прямо - никто.
Цитата:

Цитата DJ Mogarych
вы сначала уберите метаданные, а потом поворачивайте, не надо всё за один раз делать. »

если правильно понимаю, он не перекодирует в этом процессе, то есть, качество не падает?
ок, попробую завтра...
Просто удивило, почему оно не желает удалять флаг заодно с поворотом..

Sham 01-08-2019 10:12 2882221

зачем удалять метаданные?
Код:

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

в обоих случаях видео стало портретным правильной ориентации. Цель то в этом же?

bredych 01-08-2019 15:10 2882276

Цитата:

Цитата Sham
Цель то в этом же? »

но здесь два перекодирования. А я старался этого избежать.

Цитата:

Цитата bredych
если правильно понимаю, он не перекодирует в этом процессе, то есть, качество не падает? »

запустил удаление - а он перекодирует.. не понял.
и итоговый файл на каких полметра толще оригинала. Это, конечно, немного для 1.4 гига, но всё-таки что-то добавилось, значит.


Время: 11:30.

Время: 11:30.
© OSzone.net 2001-