我想将两个ffmpeg
命令合并为一个命令。我ffmpeg
在 Android 应用程序中使用现成的二进制文件。我想连接.ts
文件并叠加图像。
我正在使用以下命令:
连接
.ts
文件:String[] ffmpegcommand = {"ffmpeg", "-i","concat:"+input_file_path+"|"+input_file_path1, "-c", "copy", "-bsf:a", "aac_adtstoasc", output_file_path};
应用图像叠加效果:
String[] ffmpegcommand = {"ffmpeg","-y" ,"-i", input_file_path,"-strict","experimental", "-vf","movie="+AppStaticData.BASE_FOLDER_PATH + File.separator + "watermarklogo.png"+" [watermark]; [in][watermark] overlay=main_w-overlay_w-10:10 [out]", AppStaticData.BASE_FOLDER_PATH+"/" + output_file_path};
答案1
您可以使用一个命令执行此操作连接过滤器:
ffmpeg -i input0.ts -i input1.ts -i input2.ts -i overlay.png -filter_complex \
"[0:v][0:a][1:v][1:a][2:v][2:a]concat=n=3:v=1:a=1[vv][a]; \
[vv][3:v]overlay=W-w-10:10[v]" \
-map "[v]" -map "[a]" output.mp4
答案2
非常感谢 LordNeckbeard,但有一件事你可能认为他的解决方案不起作用,因为如果你复制和粘贴所有内容,它将不起作用。只需将其全部放在一行中,它就会像这样工作:
ffmpeg -i file1.mp4 -i file2.mp4 -i file3.mp4 -i watermark.png -filter_complex "[0:v]setpts=PTS-STARTPTS[v0]; [1:v]setpts=PTS-STARTPTS[v1]; [2:v]setpts=PTS-STARTPTS[v2]; [v0][0:a][v1][1:a][v2][2:a]concat=n=3:v=1:a=1[v][aout]; [v][3:v]overlay=W-w-10:10[vout]" -map "[vout]" -map "[aout]" output.mp4