如何解决pyav / ffmpeg / libav 选择 P 帧和 B 帧的数量
我正在从 rtsp 源流式传输。看起来接收到的帧中有一半是关键帧。有没有办法减少这个百分比并拥有更多的 P 帧和 B 帧?如果可能,我想增加 P 帧的数量(不是 B 帧之一)。
我正在使用 pyav
,它是 libav
(ffmpeg
)
代码:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。