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

Android Studio中使用FFmpeg给视频加文字图片失败求助

解决Android中FFmpeg添加文字/图片失败及"Invalid argument"错误

看起来你遇到的核心问题是FFmpeg命令参数的格式错误,导致了Unable to find a suitable output format for 'ffmpeg'这个报错,我来帮你一步步解决:

1. 错误根源分析

你在命令数组里把ffmpeg作为第一个元素传入了,但在Android集成的FFmpeg库(比如mobile-ffmpeg)中,执行命令时不需要传入主命令名,直接传递后续的参数列表即可。这个多余的ffmpeg被当成了输出格式,所以才会报找不到合适格式的错误。

2. 修正后的添加文字命令

去掉开头的ffmpeg,同时注意drawtext参数的引号处理(Java中不需要额外嵌套双引号):

// 修正后的添加文字命令
String command[] = {"-i", inputpath, "-vf", "drawtext=fontfile=/sdcard/retro.ttf:text='Test Text'", outputpath};

另外要确保/sdcard/retro.ttf这个字体文件确实存在,否则会报找不到字体的错误。

3. 修正后的添加图片命令

同样去掉开头的ffmpeg,还要注意-c:a copy是两个独立的参数,不能合并成一个数组元素:

// 修正后的添加图片命令
String addimg[] = {"-i", inputpath, "-i", imagepath, "-filter_complex", "[0:v][1:v] overlay=25:25:enable='between(t,0,10)'", "-pix_fmt", "yuv420p", "-c:a", "copy", outputpath};

4. 其他需要注意的事项

  • 权限问题:真机测试时,要确保你的App已经获取了文件读写权限。Android 10及以上版本,要么申请MANAGE_EXTERNAL_STORAGE权限,要么使用MediaStore来访问文件,避免直接操作/sdcard路径的权限限制。
  • FFmpeg库集成:确认你正确集成了FFmpeg库,比如使用mobile-ffmpeg的话,要在build.gradle中添加对应的依赖(比如implementation 'com.arthenica:mobile-ffmpeg-full:4.4.LTS'),并同步项目。
  • 线程执行:FFmpeg命令执行是耗时操作,必须在子线程中执行,不能在主线程,否则会导致ANR。可以用AsyncTask或者Coroutine来处理。
  • 路径验证:执行命令前,先检查inputpath、imagepath、outputpath对应的文件/目录是否存在且可访问,避免路径错误导致的失败。

内容的提问来源于stack exchange,提问作者vikram

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 08:23:34