0

我正在尝试使用以下内容获得视频的确切大小。

(字节大小*8)/(总比特率(音频+视频比特率)* 1024)

前任:

(1,136,992*8)/(7128*1024) 得出 1.24617705 秒

但在 windows movie maker live 中,实际长度(以秒为单位)约为1.87 秒。我做错了什么,还是 Windows Live Movie Maker 关闭了?我猜是前者。

我一直在用 Easycap 录制的视频,然后放到 Windows live movie maker 中进行修剪,最后转换为 ogv 格式。所以这是有道理的,它会完全搞砸。我不知道如何访问 ogv 视频文件的元数据标头,我环顾四周,但没有看到任何答案。

4

3 回答 3

1

您是否将文件大小除以比特率?如果是这样,您将在计算中包括标题和其他开销。

但这种计算不起作用的主要原因仅仅是比特率不是那么精确。想一想:如果比特率是精确的,那么每个视频帧(以及随之而来的音频)都必须压缩到完全相同的字节数。大多数压缩机都不是那样工作的。(一个例外是 DV 编解码器。由于 DV 是一种磁带格式,它必须以恒定速率产生数据。)

将比特率想象成每秒使用的平均比特数。

要获取视频文件的长度,您必须读取文件的元数据。如何做到这一点因格式而异。对于 ogv 文件, oggLength 程序似乎是您需要的(包含在oggvideotools中)。

于 2011-12-22T21:19:15.387 回答
0

该特定计算仅在每个帧的大小相同时才有效。发生这种情况的唯一方法是,如果您使用的是未压缩的视频和音频流。这些类型的文件很快就会变得庞大且不切实际,因此您可能正在使用压缩。在压缩视频文件中,比特率不是保证,它只是一个平均值。此外,由于存在不同类型的帧,每个帧的大小都会发生变化。

大多数视频容器格式(avi、ogm、mkv 等)都将文件的长度嵌入到元数据中(作为标头的一部分)。简单地读取这个值会更准确。

于 2011-12-22T21:06:39.363 回答
0

视频文件通常具有增加文件总大小的元数据和标题。为了获得可靠的测量结果,您需要计算非视频/非音频数据的大小并在进行计算之前将其减去。不仅如此,您还必须考虑音频和视频数据的可能可变比特率。这通常并不容易,除非您正在查看具有恒定比特率的非常简单的文件类型,或者您已经对视频格式有深入的了解(或者您已经有一个可以理解和解析格式的库)。

于 2011-12-22T20:55:16.427 回答