相关疑难解决方法(0)

如何控制ffmpeg的关键帧生成?

我正在创建一个分段器来干预ffmpeg的write_frame函数并将输出数据写入单独的文件.每个分段文件包含大约3秒视频的片段.

代码确实如下:

1 - Get transcoded packet  
2 - Check if it contains key frame data, if yes goto 3. 
3 - Check the duration of current segment, if it exceed 3 seconds, goto 4 
4 - Close file, and create new segment, write packet to segment file, goto-1
Run Code Online (Sandbox Code Playgroud)

一般来说,每个片段包含至少3秒的视频数据,并以关键帧开头.

问题是输出视频的持续时间非常不同,有些包含3秒,有些包含5或6.

我怀疑问题是由于ffmpeg在转码过程中如何生成关键帧.如果两个相邻关键帧之间的"距离"为6s,则我得到6秒的段.

这是我的问题:

  1. 这是真的,ffmpeg以不规则的间隔生成关键帧(间隔时间可以达到几秒钟(例如6))?

  2. 我们如何控制ffmpeg关键帧生成?(我想应该有一个ffmpeg命令的参数,-force_key_frames可能,但我不确定)

ffmpeg libav

9
推荐指数
1
解决办法
2万
查看次数

标签 统计

ffmpeg ×1

libav ×1