gpt4 book ai didi

c++ - 如何在 ffmpeg C++ api 中将关键帧 (Iframe) 插入到 h.264 视频流中?

转载 作者:太空宇宙 更新时间:2023-11-04 13:23:30 26 4
gpt4 key购买 nike

我有一个实时视频流,想通过准确的时间戳(pts)从中剪切一些视频片段。

当我收到一个 avpacket 时,我对其进行解码,然后做一些事情并缓存 avpacket。我不想重新编码所有 avpackets,它会占用 cpu 资源。

有很多gop structure在H.264码流中,通常我们应该把视频从关键帧开始,到关键帧结束。否则视频片段中的前几帧会显示错误。

现在我使用 av_write_frame将 avpacket 制作成视频。但有时gop的长度很长,比如250、8.3s(每秒30帧)。这意味着两个 I 帧之间的距离可以是 250 帧。视频剪辑很短,我不想添加太多未使用的帧。

我该怎么办?我想我应该在视频剪辑的开始位置插入一个 i 帧。我可以将 p 帧更改为 i 帧吗?

感谢您的阅读!

最佳答案

这在一般情况下是不可能的,但在特定情况下可能是这样。即便如此,也没有开源/免费工具可以做到这一点,而且我不知道有任何商业工具。我说在一般情况下不可能的原因是每个帧最多可以引用 16 个其他帧。所以你不能只替换单个帧,你需要替换所有引用的帧。这样做可能会占用几乎与编码整个 GOP 一样多的 CPU。

关于c++ - 如何在 ffmpeg C++ api 中将关键帧 (Iframe) 插入到 h.264 视频流中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34159193/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com