ffmpeg обратное разрешение видео после сжатия

Я пытаюсь сжать видео в формат mp4 с помощью ffmpeg.

С фильтром против накипи:

cmd = "-i, "+in+" -vf scale=480:-2,setsar=1:1, "+out;

Или так просто:

cmd = "-i, "+in+" "+out;

Если я попробую эту команду, вывод будет в порядке во многих проигрывателях, таких как potPlayer (win) или mxPlayer (android), но в некоторых проигрывателях, таких как kmPlayer.v3 (win), он растянут. с фильтром накипи или без него.

Я попробовал такое же сжатие видео с Handbrake и обнаружил, что с моим плеером все в порядке.

Результат одинаков для всех видео, сжатых с помощью библиотеки ffmpeg.

И есть еще одна проблема, которая более раздражает, разрешение выходного видео меняется на противоположное. Например:

Вход: w1280 h720

Выход: w720 х1280

Я много гуглил, но ничего не нашел.


person Mehran    schedule 08.04.2018    source источник
comment
Если вы снимаете видео в портретном режиме на устройстве Android, оно может иметь метаданные поворота установлены, и ваш ffmpeg не смог правильно использовать их с масштабным фильтром.   -  person Alex Cohn    schedule 09.04.2018
comment
Попробуйте добавить -noautorotate в командную строку ffmpeg.   -  person Alex Cohn    schedule 09.04.2018
comment
@AlexCohn Да, -noautorotate раскрыл дело. Конечно, если вы хотите ответить на вопрос, я приму его. благодарю вас.   -  person Mehran    schedule 09.04.2018


Ответы (1)


Когда вы записываете видео в портретном режиме, оно может иметь поворот метаданные установлены, и ffmpeg не может правильно использовать их с масштабным фильтром.

Вы можете добавить параметр -noautorotate в командную строку ffmpeg или, может быть, есть способ исправить метаданные.

person Alex Cohn    schedule 09.04.2018
comment
в Android я добавляю -noautorotate в команду ffmpeg, но ffmpeg не распознает. взгляните на эту команду: String[] cmd = {-i,videoPathtem,-i,watermarkImagePath,-filter_complex,overlay=0:0,-strict,-2,-metadata:s:v:0,rotate= +videoRotation,resultVideoPath}; - person Muhammad Hassaan; 01.08.2018
comment
@MuhammadHassaan, у вас есть команда rotate, поэтому ffmpeg будет игнорировать -noautorotate. - person Alex Cohn; 01.08.2018
comment
это все еще не работает, потому что ffmpeg не распознает эту команду, эта команда и все остальные команды написаны в определенном порядке в ffmpeg? - person Muhammad Hassaan; 01.08.2018