2012-10-03 105 views
-3

我有一个.yuv文件,并希望使用C++读取它。问题是我不知道它是解决方案。那么,有没有办法从yuv文件中获得分辨率?如何获得YUV帧的分辨率

此外,我不知道帧的数量。因此,我不能使用ftell()并将其除以整个帧。

+0

什么软件已经创建了yuv文件?你试过什么了?你有什么关于文件格式的信息? –

回答

6

据我所知,没有.yuv文件格式。一些程序使用该扩展来存储原始数据,但它不是格式。因此,除非您已经知道元数据,否则无法使用该文件。

而且您需要事先知道色度采样是否与亮度采样交错存储或单独存储,以及是否有位填充和/或任何行填充,以便能够从文件中读取数据。

然后,您还需要事先知道帧分辨率,色度子采样和色彩空间,以便能够正确处理该数据。

+0

我的意思是yuv图像具体 – darshshah

+0

区别是最小的。有了图像,你可以检查文件大小,并且如果你知道一些其他的元数据,则可以“猜出”一些元数据,但总的来说,你仍然需要事先知道几乎所有的东西。 –

+0

@darshshah re:“yuv images”:Georg和AnalogFile都是正确的,没有“标准”的YUV图像文件格式。但许多“标准”图像格式能够保存YUV图像。他们有一个文件头,为您提供所有必需的信息。如果没有这个文件头,你必须猜测或试验。 #1看看哪些YUV格式可能会加起来到这个图像大小。 #2然后将它们全部显示出来,看看哪个是正确的。 YUV 4:2:0需要W * H * 3/2; YUV 4:2:2需要W * H * 2;等等 –

相关问题