与其实际播放方式相比,FFMPEG报告了不同(错误)的视频分辨率

时间:2011-04-30 04:21:03

标签: ffmpeg rendering video-capture resolution

快速提问,我有一部电影,它是用Sony Vegas从原始格式剪切和渲染到.wmv文件的。这是一个棘手的部分,电影播放时,使用VLCWMP,分辨率为656x480 ......但是当我在其上运行 ffmpeg -i 时,它说其分辨率为600x480 ....

我花了一些时间实际捕获一个帧并用photoshop和它的656而不是600像ffmpeg报告那样裁剪它,为什么会发生这种情况?我怎么能修复标题分辨率?这会对视频重新渲染产生什么影响吗?正如我所说,VLC和WMP似乎不关心不正确的标题并正在播放它,但是,jwplayer似乎正在使用标题信息,我不怪他,这是正确的,但为什么视频标题可能有误?

ffmpeg -i trailer.wmv
Input #0, asf, from 'trailer.wmv':
Duration: 00:01:04.93, start: 3.000000, bitrate: 2144 kb/s
Stream #0.0: Audio: wmav2, 44100 Hz, mono, 32 kb/s
Stream #0.1: Video: wmv3, yuv420p, 600x480 [PAR 59:54 DAR 295:216], 2065 kb/
s, 25.00 tb(r)

是的,PAR/DAR参数也是错误的,但老实说,我不明白技术屎,通常观看视频并确保它看起来不错,任何反馈都会受到赞赏:P

有没有办法用ffmpeg更改容器信息,以便实际使用容器信息的应用程序不会错误地呈现视频?

1 个答案:

答案 0 :(得分:7)

FFMPEG是100%正确的,技术性的东西很重要:D

您的 PAR (像素宽高比)和 DAR (显示宽高比)实际上是正确的,您可以通过捕获屏幕截图并进行测量来证明这一点。

让你失望的是 PAR 并非所有像素都是方形的! IE:1:1,尽管大多数下载的视频都是如此,您可能从未注意过。某些玩家(如VLC)会识别PAR值并相应地拉伸视频以符合 DAR 。 DVD视频就是一个很好的例子。

另请参阅:http://en.wikipedia.org/wiki/Pixel_aspect_ratio

所以ffmpeg说你的视频宽度是600.乘以 PAR ,你会得到“真实”的宽度。意思是像素是正方形而不是矩形(水平)。 600 *(59/54)= 656(圆形)数字看起来很熟悉?

现在采用“真实”尺寸:656/480 = 1.366并查看你的DAR:295/216 = 1.366

魔术!

正如您所发现的,并非所有视频播放器都足够智能识别PAR并执行适当的拉伸。您可以使用ffmpeg轻松地使用setar和scale视频滤镜将其更改为1:1。

ffmpeg ... stuff ... -vf“scale = 656:480,setsar = 1:1”......更多东西......

对于好奇的人来说,它叫做setsar,因为它也被称为Sample(又名Pixel)纵横比:http://ffmpeg.org/ffmpeg.html#setsar-1

希望这有帮助,我确信它最初会让很多人(包括我自己)感到困惑。