我正在尝试在正常播放条件下以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特定的工作。
答案 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
,做一些简单的数学计算,瞧!比特率与时间的关系。