我正在创建一个分段器来干预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秒的段.
这是我的问题:
这是真的,ffmpeg以不规则的间隔生成关键帧(间隔时间可以达到几秒钟(例如6))?
我们如何控制ffmpeg关键帧生成?(我想应该有一个ffmpeg命令的参数,-force_key_frames可能,但我不确定)