微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

pyav / ffmpeg / libav 选择 P 帧和 B 帧的数量

如何解决pyav / ffmpeg / libav 选择 P 帧和 B 帧的数量

我正在从 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:相同的解决方案应适用于 pyavlibaviffmpeg

编辑:似乎 B 帧被禁用:codec_context.has_b_framesFalse

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。