我从 rtsp 源流式传输。看起来收到的一半帧是关键帧。有没有办法降低这个百分比并拥有更多的 P 帧和 B 帧?如果可能的话,我想增加 P 帧的数量(不是 B 帧之一)。我正在使用pyav
哪个是libav
( ffmpeg
)的 Python 包装器
代码:
container = av.open(
url, 'r',
options={
'rtsp_transport': 'tcp',
'stimeout': '5000000',
'max_delay': '5000000',
}
)
stream = container.streams.video[0]
codec_context = stream.codec_context
codec_context.export_mvs = True
codec_context.gop_size = 25
for packet in self.container.demux(video=0):
for video_frame in packet.decode():
print(video_frame.is_key_frame)
输出:
True
False
True
False
...
注意 1:我无法编辑源代码。我可以编辑用于流式传输视频的代码。
注 2:相同的解决方案应适用于pyav
,libavi
和ffmpeg
。
编辑:似乎 B 帧被禁用:codec_context.has_b_frames
是False