2017-06-23 5 views
0

私はメディアにget_stats()関数を呼び出すしようとしています:のpython3/VLC:どのようにメディアの統計情報を取得する(関数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_MediaStatsvlc.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), 
    ] 

どのようにこの機能を使用するのですか?

+0

'stats = vlc.MediaStats()'それから 'print self.Media.get_stats(stats)'ですが、これはちょうどTrueまたはFalseを返します。進行中の別の作業のように見え、作業をやめた後に戻しています。 https://trac.videolan.org/vlc/ticket/14035を参照してください。 –

+0

'print self.Media.set_stats(stats)'で印刷する代わりに、その呼び出しを実行して戻り値をダンプし、 'print stats' - itあなたが探している統計が入力されているはずです。 str(stats)と分割線を使用して解析する必要があるかもしれませんし、各行に値とラベルを区切るタブがあるので、その行をdictに読み込むことができます。 – dingles

答えて

0

文書番号hereから開始してください。それは言う:

libvlc_media_get_stats(p_md, p_stats)メディアについては、 を入手してください。

パラメータ: p_md - :メディア記述子オブジェクト。 p_stats - :構造体 (この構造体は、呼び出し元によって割り当てられた でなければなりません)。戻り値:統計が の場合はtrue、それ以外の場合は\ libvlc_return_boolです。

ドキュメントによれば、media descriptorをパラメータとして使用する必要があります。ここで、メディア記述子を取得する方法を理解する必要があります。

+0

うーん、私は 'get_media'が何のためにあるのか誤解しました。私はブール値を得たくありませんが、統計そのものです。だからあなたの答えを受け入れ、新しい質問を開きます。 – albar

関連する問題