如何使用Python提取视频文件的比特率和其他统计信息

时间:2010-10-05 12:05:03

标签: python ffmpeg analysis video-processing

我正在尝试在正常播放条件下以1-10秒之间的常规采样间隔提取视频文件的主要比特率(例如,包含电影的 .mkv 文件)。在统计窗口中播放文件期间,您可能会在 vlc 中看到这种情况。

有人能建议最好的方法来引导这种分析仪的编码吗?是否有一个库为人们所知的信息提供API?也许是 ffmpeg 的Python包装器或处理视频文件的同等工具,从而可以提取此类统计信息。

我真正的目标是一个 CSV 格式文件,其中包含秒偏移量以及在该资产偏移处的KiB / s的平均或实际比特率。

更新:

我构建了pyffmpeg并编写了以下spike:

import pyffmpeg

reader = pyffmpeg.FFMpegReader(False)
reader.open("/home/mark/Videos/BBB.m2ts", pyffmpeg.TS_VIDEO)
tracks=reader.get_tracks()

# Called for each frame
def obs(f):
  pass

tracks[0].set_observer(obs)
reader.run()

但是在回调中观察帧信息(f)似乎没有给我任何钩子来计算每秒比特率。事实上,pyffmpeg中的比特率计算是在整个文件中测量的(文件大小/持续时间),因此库内的处理非常肤浅。显然,它的重点是提取i帧和其他帧/ GOP特定的工作。

2 个答案:

答案 0 :(得分:1)

答案 1 :(得分:0)

您应该可以使用gstreamer执行此操作。 http://pygstdocs.berlios.de/pygst-tutorial/seeking.html有一个简单媒体播放器的例子。它叫

pos_int = self.player.query_position(gst.FORMAT_TIME, None)[0]

周期性。你所要做的就是用query_position()第二次打电话给gst.FORMAT_BYTES,做一些简单的数学计算,瞧!比特率与时间的关系。