【问题标题】:FFmpeg command-line on AndroidAndroid 上的 FFmpeg 命令行
【发布时间】:2013-09-28 15:49:35
【问题描述】:

我正在尝试在 Android 上使用这个 ffmpeg 命令行:

ffmpeg -i /sdcard/DCIM/video.mp4 -s 480x320 /sdcard/output.mp4

我有 ffmpeg 的可执行文件(在此路径上:/data/local/tmp/ffmpeg/ with chmod 751),当我阅读时,我正在尝试使用以下方法调用它:

Runtime.getRuntime().exec("/data/local/tmp/ffmpeg -i /sdcard/DCIM/video.mp4 -s 480x320 /sdcard/output.mp4");

但是在这个调用之后我没有得到任何结果,所以我尝试了相同的命令,但是使用了 android 终端,我确信 ffmpeg 可以工作,因为我得到了很多输出,比如视频数据。但它没有执行我想要的操作,我收到此消息:

Unable to find a suitable output format for '/sdcard/output.mp4'

我不知道这可能是什么问题... 感谢您的帮助!

【问题讨论】:

  • 不清楚:当您从 adb shell 或终端模拟器运行 /data/local/tmp/ffmpeg 时,您是否完成了工作,或者文件仍然不存在?向控制台写入什么内容?
  • 对不起...当我使用 adb shell、终端模拟器或直接从我的应用程序调用命令时,我没有转换文件(我的 ffmpeg 命令应该转换视频并将其导出)。我知道 ffmpeg 二进制/可执行文件有效,因为一些视频数据被写入控制台,但我没有得到输出视频文件,因为我说的错误(无法找到合适的输出格式)
  • 你在控制台上得到了什么?也许,您的 ffmpeg 尚未配置为 mp4 输出?

标签: android video command-line ffmpeg format


【解决方案1】:

它可能不应该工作,因为 ffmpeg 将引用 /usr/lib 将在其中查找已安装的库。但这是 android 这种方法行不通。

您可能应该将 ffmpeg 编译到像 libffmpeg.so 这样的单个库中并编写 c - 包装器,它将从您的应用程序位置(如 /data/data/com.myapp/lib/libffmpeg.so)加载它并将参数传递给它图书馆。

所以:您将通过 jni 加载包装器并传递 ffmpeg 参数,然后包装器将加载实际的 ffmpeg 并将参数传递给它。

我已经在一个项目中尝试过,它有效

【讨论】:

  • 感谢您的回答!!我一直在尝试这种方式,因为我认为它更容易。我知道您所指的方式,但我认为我无法编写 C 文件来调用我想要的命令。我应该怎么做才能使用可执行文件解决我的问题?因为,我不知道如何使用 JNI 和 C 文件调用我想要的命令(就像你说的那样)......我不介意使用哪种方式,但我不知道如何调用我的命令用你的方式......
  • ffmpeg" 将引用 /usr/lib 将在哪里查找已安装的库" - 仅当构建为 shared 时。但事实并非如此:启动可执行文件会惨遭失败。
  • 嗨,@AlexCohn,我确定我已经安装了库,因为我正在尝试一个命令并且我从视频文件中提取了音频。但是我不知道为什么当我想转换视频文件时我的命令会失败......知道吗?可能与输出编解码器有关吗?
  • 你可以将 -v 标志传递给 ffmpeg 打印详细日志吗?如果它会运行,它将打印版本和一些其他信息。这样你就可以确定它是否运行。如果 ffmpeg 会发现一些错误,它应该以详细模式打印它。
【解决方案2】:

您是否要调整视频大小?

我已经在我的 Android 上安装了ffmpeg

然后在安装后,我通过 CLI 打开应用程序:

ffmpeg -y -i "/storage/emulated/0/Download/WTFMan.mp4" -b:v 1.4M -vf scale=480:320  "/storage/emulated/0/FFMPEG/SickMan.mp4"

最后我收到一条消息说“完成”

在 Android 10 上测试

【讨论】:

  • 我安装了那个应用程序,但我仍然没有来自 adb shell 的 ffmpeg .. 你是怎么得到的?谢谢! @津巴
  • 你安装的程序有android gui。右下角有一个按钮可以控制控制台。您可以在该文本框中编写 ffmeg 命令。按执行按钮。
  • 你用了什么cli客户端?
猜你喜欢
  • 1970-01-01
  • 2020-10-11
  • 1970-01-01
  • 2015-03-13
  • 2015-01-04
  • 2013-09-24
  • 1970-01-01
  • 2012-09-08
相关资源
最近更新 更多