ffmpeg .mpg 转 DVD(通过 DVDAUTHOR)4:3 宽高比错误

ffmpeg .mpg 转 DVD(通过 DVDAUTHOR)4:3 宽高比错误

我曾尝试过让 4:3 的宽高比适合 DVD-TV 播放,但似乎没有办法。因此,我制作了一部 TEST 448x336 px T.MKV 影片,该影片具有白色背景和两个不同颜色的方块。MKV 影片显示完美的方块和 72x72ppi-GIMP,但 DVDAUTHOR 在 DVD 上创作的 Test.mpg 方块(72x81ppi)偏离了。336px 方块在 42 英寸宽屏液晶电视显示器/索尼蓝光播放器上偏离了 14.5"x13.5"。10/11 比例滤镜最接近,但仍然偏离了。代码片段如下:

ffmpeg BLAH -f dvd -target ntsc-dvd -filter:v "fps=30000/1001,scale='w=min(448,trunc((336*10/11*dar)/2+0.5)*2):h=min(336,trunc((448*11/10/dar)/2+0.5)*2)',pad='w=720:h=480:x=(ow-iw)/2:y=(oh-ih)/2',setsar='r=10/11'" -pix_fmt yuv420p -q:v 0 BLAH T1.MPG

4:3 标准方式相差甚远。电视显示约 15.25"x12.625"。代码片段如下:

ffmpeg BLAH -f dvd -target ntsc-dvd -aspect 4:3 -filter:v "fps=30000/1001,scale=448:336,pad=720:480:136:72:black" -pix_fmt yuv420p -q:v 0 BLAH T2.MPG. 

我的目标是制作一部 448x336 像素、4:3 宽高比、尺寸正确且位于电视屏幕中央的电影。任何帮助都将不胜感激。

答案1

我自己回答了这个问题。我的大 336px 正方形在电视上是正方形。10/11 宽度太宽,9/11 宽度太窄。高度锁定或相同。所以我在电视上测量了一个答案,但我不知道其他电视/DVD 播放器组合。我也不知道适用于所有填充或非填充视频、其他纵横比和缩放问题的公式是否成功。如果时间允许,有人能用数学回答吗?代码片段如下:

ffmpeg FOO -f dvd -target ntsc-dvd -filter:v "fps=30000/1001,scale='w=min(448,trunc((336*8453/10000*dar)/2+0.5)*2):h=min(336,trunc((448*10000/8453/dar)/2+0.5)*2)',pad='w=720:h=480:x=(ow-iw)/2:y=(oh-ih)/2',setsar='r=8453/10000',setdar='dar=4/3'" -pix_fmt yuv420p -q:v 0 FOO T(8453-10000).mkv

答案2

补偿电视过扫描 = 5%(典型值)在 16:9 宽高比视频上转换为 NTSC DVD:
SAR × PAR = DAR
(SAR) 存储宽高比是存储图像或视频的宽度与高度(以像素为单位)的比率。
(PAR) 像素宽高比是存储图像中单个像素的宽高比。在视频中,像素并不总是正方形。当非正方形时,宽度通常使用比高度更多的像素(PPI),通常为 72 ppi。
(DAR) 是您的显示宽高比,通常为 4:3 或16:9-- 本例中。720x480 (SAR3:2,以及16:9DAR 是给定的。然后计算 PAR:DAR/SAR=PAR 或 16/9/(3/2)=16/9x2/3=1.185185... 1/1.185185 的倒数...=0.84375。结果显示,ffmpeg 使用不同的符号ffprobe 中看到的 SAR 实际上是 PAR. 无论如何,PAR(ffmpeg 称之为 SAR)的典型符号通常显示为“sample_aspect_ratio”:“32:27”。32/27=1.185185...

一个变形(85.3333:72 像素(非矩形)DVD 视频 PAR=32/27,16:9显示宽高比 (DAR),如果采用完美的 16:9 格式拍摄,电影将无法正确显示在电视屏幕上。由于过扫描,您将损失 5%。大多数商用 DVD 都没有弥补这一事实。别告诉希区柯克。因此,如果您有 1280:720 或 1920:1080 (i) 源,您可以先缩放 + 填充 0.95*1280:720=1216:684,然后将其填充到 1280:720,然后使用默认的 -s 720:480 ffmpeg -target ntsc-dvd 参数重新编码或者缩放一次。代码片段如下:

-filter_complex "[0:v]setpts=PTS-STARTPTS,scale='w=min(684,trunc((456*27/32*dar)/2+0.5)*2):h=min(456,trunc((684*32/27/dar)/2+0.5)*2)':flags=lanczos+accurate_rnd+full_chroma_inp,pad='w=720:h=480:x=(ow-iw)/2:y=(oh-ih)/2',setsar='r=32/27',fps=30000/1001"

这种缩放概念将使您的视频完全适合您的 16:9 电视屏幕——无需重新编码!经常看到的“40/33”示例很好,但不适合在这种情况下使用。

相关内容