В последнее время я дергал себя за волосы с помощью командной строки FFmpeg. Знайте, что я не эксперт FFmpeg. Вот моя проблема:
У меня есть куча изображений YUV422 как таковых:
image0.yuv
image1.yuv
..
image450.yuv
Наряду с этим у меня есть файл, содержащий метки времени для каждого изображения, скажем:
timestamps.txt
Я хотел бы закодировать видео без потерь (возможно, с -c:v libx264 -pix_fmt yuv422p
) из них, чтобы каждое изображение отображалось в правильной отметке времени. Вот что я попробовал напрасно:
используйте
-f concat
и предоставьте файл, содержащий список, подобный этому:file 'image0.yuv' duration '0.0515' file 'image0.yuv' duration '0.0721' ... etc
это решение не работает, потому что мне нужно предоставить размер кадра (который не включен в необработанные файлы yuv)
что-то вроде
cat *.yuv | ffmpeg -f rawvideo -s 800x600 -pix_fmt yuv422p -framerate 0.5 -i - -c:v libx264 -pix_fmt yuv422p out.mp4
который не работает ни потому, что я не могу предоставить ему временные метки для каждого изображения (переменная частота кадров), но просто использовать фиксированный аргумент-framerate
Я знаю об аргументе
-vsync vfr
но не могу заставить его работать должным образом
Буду вечно благодарен за любой совет, спасибо :)