Android平台FFmpeg合并音视频报错:无法找到合适输出格式
问题解决:FFmpeg-Kit 音频合并至视频报错
根因分析
你传入的命令开头包含了 ffmpeg 关键字,但使用 FFmpeg-Kit 库时不需要这个前缀——库内部已经会调用 FFmpeg 执行器,因此这个多余的关键字被当作输出目标处理,导致格式识别失败。
修正后的 FFmpeg 命令
移除开头的 ffmpeg,保留后续参数即可:
-i /data/user/0/com.rohaitas.example/cache/temp_video.mp4 \ -i /data/user/0/com.rohaitas.example/cache/temp_audio.mp3 \ -c:v copy \ -c:a copy \ -shortest \ -f mp4 \ /data/user/0/com.rohaitas.example/cache/output.mp4
Kotlin 代码示例
在 FFmpeg-Kit 中正确执行命令的代码如下:
import com.arthenica.ffmpegkit.FFmpegKit import com.arthenica.ffmpegkit.FFmpegSession fun mergeAudioAndVideo() { val command = arrayOf( "-i", "/data/user/0/com.rohaitas.example/cache/temp_video.mp4", "-i", "/data/user/0/com.rohaitas.example/cache/temp_audio.mp3", "-c:v", "copy", "-c:a", "copy", "-shortest", "-f", "mp4", "/data/user/0/com.rohaitas.example/cache/output.mp4" ) val session: FFmpegSession = FFmpegKit.execute(command) // 处理执行结果 when (session.returnCode.value) { 0 -> { // 执行成功,处理逻辑 } else -> { // 执行失败,可通过 session.allLogs 获取详细日志排查 } } }
额外提示
- 使用数组传递参数可以避免字符串拼接时的空格或转义问题
- 若仍有异常,可打印
session.allLogs查看完整执行日志定位问题
内容的提问来源于stack exchange,提问作者Rohaitas Tanoli
相关产品推荐
相关产品推荐

