代码之家  ›  专栏  ›  技术社区  ›  codeasone

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

  •  0
  • codeasone  · 技术社区  · 14 年前

    我正在尝试提取视频文件的当前比特率(例如。 .mkv文件 ,在“统计信息”窗口中播放文件时。

    有谁能建议最好的方法来引导这样一个分析器的编码?有没有一个库为人们所知的信息提供API?可能是一个Python包装器 ffmpeg 或处理视频文件并由此提取此类统计信息的等效工具。

    我真正的目标是 格式文件,其中包含秒偏移量以及资源中该偏移量处的平均或实际比特率(以KiB/s为单位)。

    更新:

    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 回复  |  直到 14 年前
        1
  •  0
  •   joeforker    14 年前

    你应该可以用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 ,做一些简单的数学运算,瞧!比特率与时间。