You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio使用FFmpeg合并音视频后音频正常视频无法播放

问题原因及解决方案

核心问题排查

  • 首先检查代码低级错误:你定义的FFmpeg命令数组名为ccommand,但执行时传入的参数是cmd,变量名不匹配会导致执行的命令不是你预期的内容,首先修正该错误。
  • 流选择错误:未明确指定音视频流来源时,FFmpeg可能默认选错流,导致输出文件缺少可播放的视频轨道。
  • 编码兼容性问题:你使用-c:v copy参数直接复制原视频流,如果原视频的编码格式、profile等级、封装参数与输出容器不兼容,就会出现安卓端播放器无法识别视频流的情况。
  • 执行错误:可打印返回值rc判断命令是否执行成功,返回值为0代表执行正常,非0可调用FFmpeg.getLastCommandOutput()查看执行日志定位具体问题。

解决方案

方案1:重新编码视频(兼容性最高,优先选择)

直接复制视频流对输入格式要求高,改成用libx264重新编码为安卓兼容的baseline profile,命令如下:

val command = arrayOf(
            "-i",
            videoName,
            "-i",
            audioName,
            "-c:v",
            "libx264",
            "-profile:v",
            "baseline",
            "-c:a",
            "aac",
            "-map",
            "0:v:0",
            "-map",
            "1:a:0",
            "-shortest",
            fileName!!.path
        )
val rc = FFmpeg.execute(command)

方案2:保留视频流复制(执行速度快,适合确认输入视频编码兼容的场景)

明确指定流来源,避免FFmpeg选流错误,命令如下:

val command = arrayOf(
            "-i",
            videoName,
            "-i",
            audioName,
            "-c:v",
            "copy",
            "-c:a",
            "aac",
            "-map",
            "0:v:0",
            "-map",
            "1:a:0",
            "-shortest",
            fileName!!.path
        )
val rc = FFmpeg.execute(command)

内容的提问来源于stack exchange,提问作者Muhammad Mubashar Hussain

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 21:54:04