【问题标题】:Exact number of seconds in a video视频中的确切秒数
【发布时间】:2012-01-26 10:20:40
【问题描述】:

我正在尝试使用以下方法获取视频的确切大小。

(字节大小*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 视频文件的元数据头,我环顾四周但没有看到任何答案。

【问题讨论】:

  • 包含视频和音频的文件不太可能是原始数据。文件是什么格式?任何压缩都会影响您的计算。

标签: video bitrate


【解决方案1】:

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

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

比特率更像是每秒使用的平均比特数。

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      【解决方案3】:

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

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

      【讨论】:

        猜你喜欢
        • 2022-08-10
        • 1970-01-01
        • 1970-01-01
        • 2022-08-07
        • 1970-01-01
        • 2011-08-06
        • 2018-12-06
        • 1970-01-01
        • 2018-01-15
        相关资源
        最近更新 更多