我正在尝试使用以下内容获取视频的确切大小。
(字节大小* 8)/(总比特率(音频+视频比特率)* 1024)
例如:
(1,136,992 * 8)/(7128 * 1024)出现1.24617705秒
但是在Windows电影制作人的直播中,有人说实际长度以秒为单位 1.87秒。我做错了什么,还是关闭了windows live movie maker?我猜它是前者。
我一直在使用与Easycap录制的视频然后放入Windows live movie maker进行修剪,然后最终转换为ogv格式。所以这是有道理的,它会完全混乱。我不知道如何访问ogv视频文件的元数据标题,我环顾四周但看不到任何答案。
答案 0 :(得分:1)
您是否将文件大小除以比特率?如果是这样,您将在计算中包含标题和其他开销。
但这种计算不起作用的主要原因仅仅是比特率不是那么精确。想一想:如果比特率是准确的,每个视频帧(以及随之而来的音频)都必须压缩到精确相同的字节数。大多数压缩机都不像那样工作。 (DV编解码器是一个例外。由于DV是一种磁带格式,它必须以恒定速率生成数据。)
将比特率更像是每秒使用的平均比特数。
要获取视频文件的长度,您必须阅读文件的元数据。如何做到这一点因格式而异。对于ogv文件,oggLength程序似乎是您所需要的(包括在oggvideotools中)。
答案 1 :(得分:0)
视频文件通常包含元数据和标题,这会增加文件总大小。要获得可靠的测量,您需要计算非视频/非音频数据的大小,并在进行计算之前将其减去。不仅如此,您还必须考虑音频和视频数据的可能变量比特率。这通常不容易,除非您正在查看具有恒定比特率的非常简单的文件类型,或者您已经对视频格式有深入的了解(或者您已经拥有了解和解析格式的库)。 / p>
答案 2 :(得分:0)
该特定计算仅在每个帧大小相同时才有效。唯一的方法是使用未压缩的视频和音频流。这些类型的文件很快变得庞大且不切实际,因此您可能正在使用压缩。在压缩视频文件中,比特率不是保证,它只是一个平均值。此外,由于存在不同类型的帧,每帧的大小会发生变化。
大多数视频容器格式(avi,ogm,mkv等)都将文件的长度嵌入元数据中(作为标题的一部分)。简单地读取这个值会更准确。