私はメディアに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_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),
]
どのようにこの機能を使用するのですか?
'stats = vlc.MediaStats()'それから 'print self.Media.get_stats(stats)'ですが、これはちょうどTrueまたはFalseを返します。進行中の別の作業のように見え、作業をやめた後に戻しています。 https://trac.videolan.org/vlc/ticket/14035を参照してください。 –
'print self.Media.set_stats(stats)'で印刷する代わりに、その呼び出しを実行して戻り値をダンプし、 'print stats' - itあなたが探している統計が入力されているはずです。 str(stats)と分割線を使用して解析する必要があるかもしれませんし、各行に値とラベルを区切るタブがあるので、その行をdictに読み込むことができます。 – dingles