2

基本上,我需要在 android 中合并(附加)音频文件。这是为录音机执行暂停/恢复功能所必需的。

我已经成功地在Android上编译了bambuser ffmpeg,如下所示。

1. Oracle Virtual Box
2. Ubuntu 12.04 x86
3. android-ndk r8
4. Archive for client versions 1.3.7 to 1.6.6

(来自 bambuser http://bambuser.com/opensource

我已经更改了 build.sh 中的包名以适合我的包名。构建后,我从构建文件夹中获得了具有以下结构的 ffmpeg

ffmpeg

-armeabi
-armeabi-v7a

我已将 ffmpeg 文件夹复制到我的 windows 机器中的 project/jni 文件夹中。

创建了一个native.c文件以包含必要的库。制作ndk-build. 拿到.so文件了 当我尝试在 android 活动中执行此操作时,

            try {
        System.loadLibrary("FFmpegTest");   
    } catch (Exception e) {
        // TODO: handle exception
        e.printStackTrace();
    }
          File dir = new File("/mnt/sdcard");
   Process p=Runtime.getRuntime().exec("ffmpeg -i test.wav test1.wav",null,dir);
try {
     p.waitFor();
}  catch (InterruptedException e) {
      e.printStackTrace();
}

我收到以下错误。

05-31 11:57:53.532: D/dalvikvm(278): Trying to load lib /data/data/com.example.ffmpegtest/lib/libFFmpegTest.so 0x43e37a88

05-31 11:57:53.532: D/dalvikvm(278): Added shared lib /data/data/com.example.ffmpegtest/lib/libFFmpegTest.so 0x43e37a88

05-31 11:57:53.532: D/dalvikvm(278): No JNI_OnLoad found in /data/data/com.example.ffmpegtest/lib/libFFmpegTest.so 0x43e37a88, skipping init

05-31 11:57:53.562: W/System.err(278): java.io.IOException: Error running exec(). Command: [ffmpeg, -i, test.wav test1.wav] Working Directory: /mnt/sdcard Environment: null

任何人都可以指导我的程序吗?

4

1 回答 1

0

我认为你不需要任何*.so.

ffmpeg您可能应该为 Android编译二进制文件。

然后将二进制文件放入您的res/raw文件夹中。

然后,在第一次执行时,你的程序应该将它从应用程序的目录复制res/raw到应用程序的目录并设置chmod +x它。

然后你可以调用 ffmpeg binary withSystem.exec等。

它对我很好。我以这里的代码https://github.com/halfninja/android-ffmpeg-x264为例。

于 2013-05-31T07:01:42.437 回答