Python3 / vlc:如何获取媒体统计信息(函数get_stats)

时间:2017-06-23 11:54:14

标签: python python-3.x vlc libvlc

我试图在媒体上调用get_stats()函数:

>>> instance = vlc.Instance()
>>> media = instance.media_new('song.mp3')
>>> media.get_stats()
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: get_stats() missing 1 required positional argument: 'p_stats'
>>> media.get_stats('input_bitrate')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/alain/Audio/vlc.py", line 2517, in get_stats
    return libvlc_media_get_stats(self, p_stats)
  File "/home/alain/Audio/vlc.py", line 5349, in libvlc_media_get_stats
    return f(p_md, p_stats)
ctypes.ArgumentError: argument 2: <class 'TypeError'>: expected LP_MediaStats instance instead of str

LP_MediaStats中不存在预期的参数类型vlc.py,但我发现了这一点:

class MediaStats(_Cstruct):
    _fields_ = [
        ('read_bytes',          ctypes.c_int  ),
        ('input_bitrate',       ctypes.c_float),
        ('demux_read_bytes',    ctypes.c_int  ),
        ('demux_bitrate',       ctypes.c_float),
        ('demux_corrupted',     ctypes.c_int  ),
        ('demux_discontinuity', ctypes.c_int  ),
        ('decoded_video',       ctypes.c_int  ),
        ('decoded_audio',       ctypes.c_int  ),
        ('displayed_pictures',  ctypes.c_int  ),
        ('lost_pictures',       ctypes.c_int  ),
        ('played_abuffers',     ctypes.c_int  ),
        ('lost_abuffers',       ctypes.c_int  ),
        ('sent_packets',        ctypes.c_int  ),
        ('sent_bytes',          ctypes.c_int  ),
        ('send_bitrate',        ctypes.c_float),
    ]

有谁知道如何使用这个功能?

1 个答案:

答案 0 :(得分:0)

从文档here开始。它说:

  

libvlc_media_get_stats(p_md, p_stats)获取当前统计信息   关于媒体。

     

参数:   p_md - :媒体描述符对象。   p_stats - :结构   包含有关媒体的统计信息(此结构必须是   由呼叫者分配)。返回:如果统计信息,则返回true   可用,否则为\ libvlc_return_bool。

根据文档,您应该使用media descriptor作为参数。现在我们必须弄清楚如何获取媒体描述符。