【问题标题】:Run FFmpeg executable binary in Android在 Android 中运行 FFmpeg 可执行二进制文件
【发布时间】:2014-09-01 20:35:10
【问题描述】:

我的/data/data/APP/files 文件夹中有一个为ARM Android 编译的ffmpeg 可执行文件,具有执行权限。 我正在尝试根据从FFmpeg site 中提取的示例执行命令。

这是我正在输入的命令行:

./ffmpeg -loop 1 -i /mnt/sdcard/com.example.test/image.png -c:v libx264 -t 30 -pix_fmt yuv420p /mnt/sdcard/com.example.test/video.mp4

我的目标是从我的应用程序中执行它,但即使在命令行中,我也会收到此错误:

./ffmpeg: 1: Syntax error: "(" unexpected

有谁知道是什么以及如何解决它?

- 更新

我找到了newer version,我想我通过了那个错误。

但是现在,对于任何对 ffmpeg 可执行文件的调用,我都会收到如下错误:

# ./ffmpeg -loop 1 -i /mnt/sdcard/com.example.teste/imagem.png -c:v libx264 -t 30 -pix_fmt yuv420p /mnt/sdcard/com.example.teste/video.mp4
[1] + Stopped (signal)        ./ffmpeg -loop 1 -i /mnt/sdcard/com.example.teste/imagem.png -c:v libx264 -t 30 -pix_fmt yuv420p /mnt/sdcard/com.example.teste/video.mp4
[1]   Segmentation fault      ./ffmpeg -loop 1 -i /mnt/sdcard/com.example.teste/imagem.png -c:v libx264 -t 30 -pix_fmt yuv420p /mnt/sdcard/com.example.teste/video.mp4

什么意思?

【问题讨论】:

  • 嘿 Diego,你能告诉我你在哪个 Android O/S 上使用这个吗?此版本仅支持 JB+ 设备。
  • 我刚刚尝试运行上面的命令并能够成功生成输出文件,在此处检查输出gist.github.com/hiteshsondhi88/48783de48248ab72fc23,我还向项目中添加了预构建的二进制文件,您可以使用它们,分段错误可能由于不正确的二进制文件而发生,即您可能在非霓虹灯设备上使用霓虹灯二进制文件。
  • 好吧。我不知道真正的问题是什么。我在将命令行运行到 19 级 API 模拟器时遇到了该错误。我通过在我的应用程序中使用logcatProc = Runtime.getRuntime().exec(); 对其进行实际编码并在我的真实设备上运行该应用程序(带有 ICS API 15 的 Galaxy S2)解决了我的问题。
  • 你不能在模拟器上运行它,大多数模拟器是基于 x86 而不是 ARM。请尝试在真实设备上运行它,这可能会起作用
  • 好吧。我不太了解模拟器架构,但我创建了一个 SDK 提供给我的 ARM 模拟器。

标签: android ffmpeg


【解决方案1】:

我通过在Cross Compiling FFmpeg with x264 for Android 上使用@HiteshSondhi 的提示和文件解决了我的问题。

其实整个FFmpeg不是我自己编译的。相反,我使用并配置了他在his GitHub page 分发的SampleFFmpegApp

最后的提示:在真实设备中进行测试。这是我真正可以让它正常工作的唯一地方。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-12-02
    • 2016-04-02
    • 2018-09-11
    • 2019-10-14
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多