我正在尝试测量通过网络播放视频时所需带宽的变化。为此,我需要制作一个在视频期间随时连续播放视频所需的带宽图表。
我尝试用 gstreamer 处理视频,但它给了我解码[未编码]视频的比特率,它或多或少是恒定的。
有没有办法随着时间的推移获得视频的编码比特率?
我正在尝试测量通过网络播放视频时所需带宽的变化。为此,我需要制作一个在视频期间随时连续播放视频所需的带宽图表。
我尝试用 gstreamer 处理视频,但它给了我解码[未编码]视频的比特率,它或多或少是恒定的。
有没有办法随着时间的推移获得视频的编码比特率?
由于我在这里没有答案,我将发布我为自己找到的解决方案,以便它可以帮助其他人。
Vlc python 绑定将 python api 暴露给 vlc 媒体播放器。它们还提供了一个 MediaStats 类,可用于确定视频统计信息。
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),
]