ffmpeg: столбовой ящик 4: 3 до 16: 9

Я запутался в том, как работают видеофильтры, особенно в том, как они работают вместе, я думаю. У меня есть два MKV, взятые с DVD, соответственно 16:9 и 4:3. Что я хотел бы сделать, так это в конечном итоге объединить их (mkvmerge widescreen.mkv + fullscreen.mkv), и для этого мне нужны соответствующие соотношения сторон дисплея.

Поэтому я хотел бы закодировать видео в формате 4:3 по мере его кодирования, а затем, надеюсь, добавить его к видео в формате 16:9. Я пробовал несколько фильтров, чтобы добиться этого, и самое близкое, что я смог получить, было немного шире, чем ожидалось, видео, в остальном правильно смонтированное.

ffmpeg -i fullscreen.mkv 4:3 -vf "pad=853:480:66:0,scale=720x480,setdar=16:9" [etc.]

Размеры в пикселях 720x480, размеры дисплея 853x480, два MKV можно успешно объединить (после перекодирования widescreen.mkv в тот же видеокодек, но без видеофильтров).

Тем не менее, результирующее отображение полноэкранного видео имеет столбчатую структуру, но слегка растянуто по горизонтали. В пикселях 1:1 его размер составляет 720 пикселей, а не 640.

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

Ответы (1)

Предполагая, что оба MKV являются копиями DVD-дисков NTSC, вам понадобятся следующие команды:

Для видео 4:3

ffmpeg -i "input43.mkv" -vf "scale=640x480,setsar=1,pad=854:480:107:0" [etc..]

Для видео 16:9

ffmpeg -i "input169.mkv" -vf "scale=854x480,setsar=1" [etc..]

(Обратите внимание, что кодек H.264, который вы, вероятно, используете, требует, чтобы размеры были четными, поэтому указание 853ширины приведет к тому, что ffmpeg подаст 854пиксели кодировщику, а затем автоматически установит странный SAR.