FFMPEG 在将许多视频插入另一个视频时减少生成损失
FFMPEG reducing Generation Loss when inserting many videos into another video
我正在尝试将许多 miniclips.mp4 插入到一个 main.mp4 视频中 - 虽然我已经能够 ,但我似乎患有 Generation Loss
我正在使用的命令(在 python 脚本中,在许多不同间隔的循环中)是:
ffmpeg -i main.mp4 -i miniclipX.mp4 -filter_complex "[0:v]drawbox=t=fill:enable='between(t,5,6.4)'[bg];[1:v]setpts=PTS+5/TB[fg];[bg][fg]overlay=x=(W-w)/2:y=(H-h)/2:eof_action=pass;[1:a]adelay=5s:all=1[a1];[0:a][a1]amix" output.mp4
(然后在循环中将 output.mp4 重命名为 main.mp4)
有没有办法:
A) 通过实施某些标志减少发电损失
或
B) 在单个命令中包含许多不同的输入文件和许多不同的 -filter_complex 来实现我想要的?
因为您没有提供 ffmpeg 日志(因此没有关于您的 ffmpeg 或您的输入的信息),对于这个答案,我假设所有视频的宽度和高度都相同。
在 5 秒时显示 miniclip1.mp4
并在 10 秒时显示 miniclip2.mp4
的示例:
ffmpeg -i main.mp4 -i miniclip1.mp4 -i miniclip2.mp4 -filter_complex
"[1:v]setpts=PTS+5/TB[offset1];[0:v][offset1]overlay=x=(W-w)/2:y=(H-h)/2:eof_action=pass[bg];
[2:v]setpts=PTS+10/TB[offset2];[bg][offset2]overlay=x=(W-w)/2:y=(H-h)/2:eof_action=pass;
[1:a]adelay=5s:all=1[a1];
[2:a]adelay=10s:all=1[a2];
[0:a][a1][a2]amix=inputs=3"
output.mp4
命令被分成多行以便于阅读。执行时将其设为一行。
我正在尝试将许多 miniclips.mp4 插入到一个 main.mp4 视频中 - 虽然我已经能够
我正在使用的命令(在 python 脚本中,在许多不同间隔的循环中)是:
ffmpeg -i main.mp4 -i miniclipX.mp4 -filter_complex "[0:v]drawbox=t=fill:enable='between(t,5,6.4)'[bg];[1:v]setpts=PTS+5/TB[fg];[bg][fg]overlay=x=(W-w)/2:y=(H-h)/2:eof_action=pass;[1:a]adelay=5s:all=1[a1];[0:a][a1]amix" output.mp4
(然后在循环中将 output.mp4 重命名为 main.mp4)
有没有办法:
A) 通过实施某些标志减少发电损失
或
B) 在单个命令中包含许多不同的输入文件和许多不同的 -filter_complex 来实现我想要的?
因为您没有提供 ffmpeg 日志(因此没有关于您的 ffmpeg 或您的输入的信息),对于这个答案,我假设所有视频的宽度和高度都相同。
在 5 秒时显示 miniclip1.mp4
并在 10 秒时显示 miniclip2.mp4
的示例:
ffmpeg -i main.mp4 -i miniclip1.mp4 -i miniclip2.mp4 -filter_complex
"[1:v]setpts=PTS+5/TB[offset1];[0:v][offset1]overlay=x=(W-w)/2:y=(H-h)/2:eof_action=pass[bg];
[2:v]setpts=PTS+10/TB[offset2];[bg][offset2]overlay=x=(W-w)/2:y=(H-h)/2:eof_action=pass;
[1:a]adelay=5s:all=1[a1];
[2:a]adelay=10s:all=1[a2];
[0:a][a1][a2]amix=inputs=3"
output.mp4
命令被分成多行以便于阅读。执行时将其设为一行。