首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从P和B帧创建I帧

从P和B帧创建I帧
EN

Stack Overflow用户
提问于 2018-05-15 08:41:18
回答 1查看 2K关注 0票数 2

我编写了一个基于C++的FFMpeg转换器,它可以接收到hls流的链接,并将其转换为本地.mp4视频。到目前为止,很好,转换器的工作就像一种魅力,没有问题。

问题:,无论我向转换器提供什么输入源,在转换结束时,我只需要接收带有关键帧的视频。我需要这样的视频,因为完美的追求正反两方面。

这是一个众所周知的事实,辅助视频帧(P和B)依赖于它们的所有者帧(I帧),因为这个帧包含完整的像素映射。据此,我们可以通过将每个P和B帧的数据与它们的I帧合并来重新创建一个I帧。这就是为什么这样的ffmpeg命令ffmpeg -i video.mp4 output%4d.jpg有效的原因。

问题:如何实现帧合并的算法,以便重新创建关键帧,最终仅用于视频?关于合并AVPacket的数据,我需要了解哪些怪癖?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-05-15 13:22:08

您不能“合并”压缩流的P和B帧(例如与H.264编解码器),以获得I-帧。

芬伯用什么?

代码语言:javascript
运行
复制
ffmpeg -i video.mp4 output%4d.jpg

解码每一帧(因此,它需要从I帧开始,然后解码流中所有后续的P帧和B帧),并将它们压缩回JPEG,并为原始输入流中的每一帧输出JPEG图像。

如果要将带有P/B帧的输入流转换为纯内部流(与所有i-帧),则需要对流进行转码。这意味着从原始流中解码所有帧,并将它们编码回一个纯内部流。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50345831

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档