Несовместимый формат пикселей YUV420P с mjpeg

Я использую ffmpeg для создания видео из изображений jpeg с использованием кодека mjpeg. я использую эту команду

ffmpeg -i frame%d.jpg -c:v mjpeg -pix_fmt yuv420p -q:v 1 -y out.mp4

и у меня есть это предупреждение, что вместо него был выбран yuvj420p. Прочитав об этом формате пикселей, я обнаружил, что использовать YUV420p не рекомендуется, и установил параметр -color_range. Я так и сделал и установил для color_range значение 2, но ничего не изменилось.


person mohamed    schedule 22.06.2015    source источник


Ответы (1)


Вы получаете предупреждение, потому что внутренний кодировщик JPEG ffmpeg ожидает ввода диапазона JPEG и делает это, используя старый (устаревший) pixfmt YUVJ420P вместо нового метода (установка pixfmt=YUV420P с цветовым диапазоном).

Однако это подводит нас к сути вопроса: почему вы перекодируете исходные изображения JPEG в JPEG? Вам не нужно! Вы можете просто использовать -c:v copy (вместо -c:v mjpeg), чтобы скопировать существующие изображения JPEG как есть в файл .mp4.

person Ronald S. Bultje    schedule 22.06.2015
comment
Я хочу получить видео самого высокого качества для последующего использования, так лучше ли использование копии, чем кодирование? - person mohamed; 22.06.2015
comment
Ну да, потому что вы никогда не станете лучше оригинала. Выход всегда будет настолько хорош, как и вход, никогда не лучше, часто хуже, иногда намного хуже. Компромисс между качеством/битрейтом может быть лучше, если вы перекодируете (это то, что делают, например, оптимизаторы JPEG), но качество не изменится. Если вы хотите перекодировать в том же кодеке с тем же качеством, но с лучшим соотношением качества/битрейта, рассмотрите возможность использования -sameq. - person Ronald S. Bultje; 23.06.2015
comment
Даже -v:copy может создавать неподдерживаемый формат пикселей с помощью ffmpeg. Это произошло с вводом yuvj444p. - person MSalters; 28.08.2017