Ich versuche, die get_stats()
Funktion auf einem Medium rufen erhalten:Python3/vlc: Wie Medien Statistiken (Funktion 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
Der erwartete Argument Typ LP_MediaStats
nicht in vlc.py
existiert, aber ich fand diese :
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),
]
Weiß jemand, wie man diese Funktion benutzt?
'stats = vlc.MediaStats()' dann 'print self.Media.get_stats (stats)' aber wie bereits erwähnt, gibt dies nur Wahr oder Falsch zurück. Es scheint sich um eine weitere Arbeit zu handeln, die nach der Einstellung wieder eingestellt wird. Siehe https://trac.videolan.org/vlc/ticket/14035 –
Anstatt mit 'print self.Media.set_stats (stats)' zu drucken, führen Sie einfach den Aufruf dumping den Rückgabewert und dann 'print stats' - es sollte mit den Statistiken, die Sie suchen, gefüllt sein. Sie müssen es möglicherweise mit str (stats) und Trennlinien analysieren, dann gibt es in jeder Zeile eine Registerkarte, um das Label vom Wert zu trennen, damit Sie das in ein Diktat einlesen können. – dingles