繁体   English   中英

FFmpeg:如何使用 C++ 代码更改视频文件的帧速率?

[英]FFmpeg: how to use C++ code to change the frame rate of a video file?

我知道使用 FFmpeg 命令更改视频文件的帧速率会更容易。 但无论如何,如果我想用 C++ 代码来做,并使用 FFmpeg 库,我该怎么做?

我想我应该能够在源代码中找到线索。 在继续之前,我希望会有一些好的介绍或示例。

这相当简单,您只需要修改视频流的 time_base 即可。 对于简单的容器格式(例如 AVI),您只需在标题中执行此操作。 如果您坚持通过 ffmpeg API 执行此操作,则需要遍历输入流中的所有帧,并将它们复制到输出流。

以上假设您只想在不丢帧的情况下更改 FPS(即减慢或加快视频速度)。 但是,如果您想在更改 FPS 的同时保持视频播放的原始速度,则需要重新编码视频,即对每一帧进行解码和编码,同时插入额外的帧或删除一些帧。 您不能简单地从视频中删除帧 - 例如,当从 30FPS 转换为 15FPS 时,您不能简单地删除每第二帧,因为它可能是一个关键帧,它会破坏之后的所有帧,直到遇到下一个关键帧。 同样,您不能在提高 FPS 时简单地复制帧,因为 P 帧仅适用于它之前的帧,因此复制它会破坏您的视频。 为此,我建议查看我的卡拉 OK 歌词编辑器源代码,尤其是视频解码视频编码

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM