Я запутался в том, как работают видеофильтры, особенно в том, как они работают вместе, я думаю. У меня есть два 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 в основном ничего.
Предполагая, что оба 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.