使用FFMPEG将帧插入视频

问题描述 投票:0回答:1

我正在录制视频的摄像机偶尔丢帧,所以我需要将帧重新插入视频以保持定时精确。

我已经有一个脚本来确定这些帧的确切删除时间,所以我有一个需要插入的每个帧的索引和位置。

例如,在100 FPS的100秒视频中,我应该有10,000帧。然而,在帧399,1205,4299和7891处丢弃了4帧。因此,我想要在这些点处以相同的分辨率插入黑色帧,或者将前一帧保持为恰好一帧(例如,保持帧398为额外的帧,或0.01秒)。

有没有办法在FFMPEG中迭代执行此操作?我目前正在将视频写入其组成帧,添加我的空白图像,然后重新连接帧中的视频,这是一个非常低效的过程。

video command-line ffmpeg frame
1个回答
0
投票

让我们拍摄具有帧速率值FR的视频和具有索引399,1205,4299和7891的丢失帧。第一帧具有索引0。

ffmpeg -i in.avi -vf setpts='PTS+(1/FR/TB)*(gte(N,399)+gte(N,1205)+gte(N,4299)+gte(N,7891))' -vsync cfr -q:v 1 out.avi

setpts过滤器可以调整时间戳,setpts表达式所做的是偏移给定索引前进后的所有帧。根据缺少的早期帧数来评估量偏移量。这将创建空的时间戳槽。然后,-vsync cfr选项将使用前一个可用帧的克隆填充这些插槽。

© www.soinside.com 2019 - 2024. All rights reserved.