Как кодировать серию файлов.dpx с использованием X264
Я полный новичок в кодировании видео. Я пытаюсь закодировать серию файлов.dpx в один файл O/P с закодированным видео в любом из следующих форматов. ( .mp4,.avi,.h264,.mkv и т. д.)
Я пробовал 2 разных подхода. Первый работает, а второй нет. Я хотел бы знать разницу между ними. Любая помощь / вклад будет высоко ценится.
1) использование FFMPEG вместе с библиотекой x264, и это хорошо работает. Я могу произвести желаемый результат
ffmpeg -start_number 0 -i frame%4d.dpx -pix_fmt yuv420p -c:v libx264 -crf 28
-profile:v baseline fromdpx.h264
2) Сначала я пытаюсь объединить все файлы dpx в один файл, используя протокол concate в ffmpeg, а затем использую x264 для кодирования объединенного файла. Здесь я вижу, что размер объединенного файла является суммой всех объединенных файлов. Но когда я использую команду x264 для кодирования объединенного файла, я получаю зеленый экран (по сути, это не нужный вывод) .
ffmpeg -i "concat:frame0.dpx|frame01.dpx|frame2.dpx etc" -c copy output.dpx
затем
x264 --crf 28 --profile baseline -o encoded.mp4 --input-res 1920x1080 --demuxer raw
output.dpx
Я также попытался закодировать объединенный файл с помощью ffmpeg следующим образом
ffmpeg -i output.dpx -pix_fmt yuv420p -c:v libx264 -crf 28 -profile:v baseline fromdpx.h264
Это также дает мне пустое видео.
Может ли кто-нибудь указать мне, что здесь происходит? Почему первый метод работает, а второй нет?
Спасибо.
1 ответ
Во втором подходе вы указываете DPX-файл как необработанный ввод для x264 (--demuxer raw), но DPX не является необработанным форматом (это больше контейнер, у которого есть заголовки, метаданные и, возможно, сжатие RLE), и поэтому требуется декодирование. x264 поддерживает только эти необработанные форматы (--input-csp): i420, yv12, nv12, i422, yv16, nv16, i444, yv24, bgr, bgra, rgb. Все эти форматы могут иметь 8,16 бит на компонент (--input-глубина).
Также я сомневаюсь, что формат DPX вообще поддерживает конкатенацию, потому что это формат изображения, а не видео. Так что, вероятно, ваш результат после concat уже сломан.