Мы конвертируем последовательность файлов DPX в MP4. Когда художник использует Adobe Media Encoder CC для создания видео, цвета соответствуют исходному DPX. Когда мы используем ffmpeg, видео имеет красноватый оттенок. Используемая команда:
ffmpeg -y -start_number 0101 -i \\path\to\filename.%04d.dpx -pix_fmt yuv420p sample.mp4
Как мы можем создать видео, которое соответствует цвету исходных файлов DPX?
Проверка файлов ffprobe
выявила следующие отличия (правильный файл/неправильный файл):
Ссылки зонда: dpx , правильный , неправильный
Я проверил yuv420p(tv, bt709)
часть кодировки и обнаружил, что это относится к Rec. Цветовое пространство 709 для HDTV. В ffmpeg цветовое пространство определяется фильтром цветовой матрицы . Однако вы должны преобразовать из некоторого цветового пространства. Согласно беседе из списка рассылки ffmpeg , цветовое пространство по умолчанию считается следующим bt601
:
ISTR, что если вы даете ffmpeg RGB, он предполагает весь свой диапазон, а также по умолчанию конвертирует с использованием матриц 601. Хотя в нем определено несколько цветовых пространств, доступ к которым можно получить в библиотеках с помощью API, сам ffmpeg их не использует (хотя у меня есть ноющее чувство, что это тоже может быть не совсем так).
Итак, последняя сработавшая команда ffmpeg была:
ffmpeg -y -start_number 0101 -i \\path\to\filename.%04d.dpx
-vf colormatrix=bt601:bt709 -pix_fmt yuv420p sample.mp4
Теперь цвет правильный, но заметной разницы в выводе ffprobe или MediaInfo нет. (Другими словами, цветовое пространство файла, сгенерированного ffmpeg, не отображается в выходных данных.)
Недавние исправления для ffmpeg исправили эту проблему https://github.com/FFmpeg/FFmpeg/search?q=dpx&type=commits.
Теперь он считывает диапазон, основные цвета, матрицу и передачу. Не говоря уже о тайм-коде SMPTE и альтернативной частоте кадров.
Есть еще баг, что пишет линейный перенос на все файлы.
Гьян
-colorspace 1
, чтобы пометить вывод.лофидевопс