我希望在时间和位置精确的方式上覆盖给定视频(使用图像序列创建)上的各种图标图像。我正在使用FFmpeg。 以下是我正在使用的命令:
图片到视频转换命令
ffmpeg -framerate 5 -start_number 0 -i images/img%04d.png -vframes 1000 -r 30 -vcodec libx264 -crf 25 -pix_fmt yuv420p out.mp4 -y
图片叠加在视频命令
上ffmpeg -analyzeduration 10000 -hwaccel auto -i out.mp4 -i icons/up.png -i icons/down.png -i icons/left.png -i icons/right.png -i icons/top.png -i icons/bottom.png -i icons/side.png -filter_complex [0:v]setpts=PTS-STARTPTS[0];
[1:v]setpts=PTS-STARTPTS[i1];
[2:v]setpts=PTS-STARTPTS[i2];
[3:v]setpts=PTS-STARTPTS[i3];
[4:v]setpts=PTS-STARTPTS[i4];
[5:v]setpts=PTS-STARTPTS[i5];
[6:v]setpts=PTS-STARTPTS[i6];
[0][i1]overlay=211.875:319.916:enable='between(t,0.610,0.910)'[1];
[1][i2]overlay=212.344:309.516:enable='between(t,1.810,2.110)'[2];
[2][i3]overlay=37.969:332.396:enable='between(t,2.775,3.075)'[3];
[3][i4]overlay=202.500:307.436:enable='between(t,3.626,3.926)'[4];
[4][i5]overlay=37.734:296.203:enable='between(t,4.531,4.831)'[5];
[5][i6]overlay=208.359:313.676:enable='between(t,5.602,5.902)'[6];
[6][i7]overlay=34.688:383.150:enable='between(t,6.733,7.033)'[7];
-map [7] -y -movflags +faststart superimposed.mp4
我的问题是我没有及时获得精确度。即如果有一个图标要在0.61秒覆盖,它不会完全达到0.61秒。有时它是1.0秒,有时是0.30秒,有时是在其他不可预测的时间。
我有一个HTML5视频播放器,允许用户以100毫秒的精度搜索视频。用户希望图标精确地看到0.61秒。但是,上述不准确性限制了我的视频播放器的功能。
请在我的实施/命令中建议可能出现的问题。