首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >放下部分视频并重新制作关键帧(c++ + libav)

放下部分视频并重新制作关键帧(c++ + libav)
EN

Stack Overflow用户
提问于 2021-07-06 07:17:10
回答 2查看 443关注 0票数 0

我正在尝试使用libav在我的应用程序中删除视频的某些部分,例如,在一个长度为00:08:00的视频中,我尝试删除帧100-250和400-500 (仅举个例子)。我编写了这个复制AVPacket并丢弃一些数据包的代码,但是有一个问题!在我们的视频中,每个关键帧后面跟着29个非关键帧。因此,当我的代码删除帧100-250时,框架100可能是一个非关键帧,在这种情况下,将要连接的部分(在本例中是帧250到帧400)帧400位于关键帧之后,而不是下面的帧。

在本节中,视频帧乱七八糟,

视频切割速度在我的代码中是如此重要,所以我无法解码/重新编码所有的视频帧。

问题是,我如何解码每个部分的编码开始(从开始帧到第一个关键帧),并在没有解码的情况下复制另一个帧?

或者,还有其他快速解决方案用于分割/合并(删除部分视频)吗?

EN

回答 2

Stack Overflow用户

发布于 2021-07-08 00:00:13

代码语言:javascript
运行
复制
The question is that, How can I decode encode begin of each parts (from  begin frame to first key frame) and make another frames copy without decode?

你不能。这样不行。

票数 0
EN

Stack Overflow用户

发布于 2021-07-08 08:44:07

开始思考时间,而不是框架。

例如,您可以在base_video.mp4的某些部分快速获得新视频,

代码语言:javascript
运行
复制
ffmpeg -ss 00:00:00.000 -i base_video.mp4 -t 8.000 -c copy -strict -2 new_video_8seconds_fromstart.mp4

-ss 00:00:00.000是开始新视频的时候了

-t是以秒和毫秒为单位的持续时间,例如,对于8秒的持续时间,必须使用8.000。

如果您不想要音频,-an

-strict -2如果用于复制某些文件,如DTS

但是如果你想重新编码,删除,-c,复制,,但是它永远不会很快!

代码语言:javascript
运行
复制
ffmpeg -ss 00:00:00.000 -i base_video.mp4 -t 8.000 new_video_8seconds_fromstart.mp4
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68266120

复制
相关文章

相似问题

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