在Android Studio中如何将两个FFmpeg命令合并为单个命令
FFmpeg命令合并方案
合并逻辑
只需一次性声明所有输入源,保留原有的视频叠加、文字绘制逻辑,最后直接映射处理后的视频流和新增音频流输出即可,无需生成中间文件,同时避免了二次编码的额外耗时。
合并后命令(带滚动文字版)
new String[]{"-ss", "0", "-t", "15", "-i", "input.mp4", "-ignore_loop", "0", "-i", "overlay.gif", "-i", "audio.mp3", "-filter_complex", "[1:v][0:v]scale2ref[b][a];[a][b]overlay=0:main_h-overlay_h:shortest=1,drawtext=fontfile=/system/fonts/DroidSans-Bold.ttf:text='Hello World':fontcolor=#ffffff@1.0:fontsize=(h*w/20000):y=(h/20):x=w-t*200[v]", "-map", "[v]", "-map", "2:a:0", "-vcodec", "mpeg4", "-preset", "ultrafast", "-codec:a", "aac", "output_new.mp4"};
合并后命令(不带滚动文字版)
new String[]{"-ss", "0", "-t", "15", "-i", "input.mp4", "-ignore_loop", "0", "-i", "overlay.gif", "-i", "audio.mp3", "-filter_complex", "[1:v][0:v]scale2ref[b][a];[a][b]overlay=0:main_h-overlay_h:shortest=1[v]", "-map", "[v]", "-map", "2:a:0", "-vcodec", "mpeg4", "-preset", "ultrafast", "-codec:a", "aac", "output_new.mp4"};
注意事项
- 已修复原第二条命令中
-map 1:a:0后缺失逗号的语法错误,命令可以直接在Android Studio中调用FFmpeg执行 - 如果不需要截断原视频前15秒,删除开头的
"-ss", "0", "-t", "15"参数即可 - 若对输出画质要求更高,可以将
"-vcodec", "mpeg4"替换为"-vcodec", "libx264",同步调整preset参数平衡编码速度与压缩率 - 确保drawtext参数中指定的字体路径在对应Android设备上真实存在,部分定制ROM的系统字体路径可能不同,可将字体文件打包到APP私有目录后传入绝对路径
内容的提问来源于stack exchange,提问作者Rayhan Khan
相关产品推荐
相关产品推荐

