【问题标题】:ffmpeg library is not workingffmpeg 库不工作
【发布时间】:2017-08-25 06:45:14
【问题描述】:

我已经在 Android 上编译了 FFmpeg (libffmpeg.so)。现在我必须构建一个像 RockPlayer 这样的应用程序,或者使用现有的 Android 多媒体框架来调用 FFmpeg 以及视频播放。

您有在 Android / StageFright 上集成 FFmpeg 的步骤/程序/代码/示例吗?

能否请您指导我如何将这个库用于多媒体 播放?

我已经进行了渲染、混合。

【问题讨论】:

  • 你可以使用WritingMinds FFmpeg这里是answer
  • 突出显示的主要问题。

标签: android video ffmpeg


【解决方案1】:
  1. 编译 'com.writingminds:FFmpegAndroid:0.3.2' 将其添加到 gradle

    1. 在 onCreate 中添加这个:

      ffmpeg = FFmpeg.getInstance(this.getApplicationContext());

      (先声明FFmpeg ffmpeg;

    2. 加载库:loadFFMpegBinary();

  2. 使用 ffmpeg 向视频添加音频的代码:

使用execFFmpegBinaryShortest(null);调用函数

**

private void execFFmpegBinaryShortest(final String[] command) {
    final File outputFile = new File(Environment.getExternalStorageDirectory().getAbsolutePath()+"/videoaudiomerger/"+"Vid"+"output"+i1+".mp4");

   String[] cmd = new String[]{"-i", selectedVideoPath,"-i",audiopath,"-map","1:a","-map","0:v","-codec","copy","-shortest",outputFile.getPath()};


            try {

                ffmpeg.execute(cmd, new ExecuteBinaryResponseHandler() {
                    @Override
                    public void onFailure(String s) {
                        System.out.println("on failure----"+s);
                    }

                    @Override
                    public void onSuccess(String s) {
                        System.out.println("on success-----"+s);
                    }

                    @Override
                    public void onProgress(String s) {
                        //Log.d(TAG, "Started command : ffmpeg "+command);
                        System.out.println("Started---"+s);

                    }

                    @Override
                    public void onStart() {


                        //Log.d(TAG, "Started command : ffmpeg " + command);
                        System.out.println("Start----");

                    }

                    @Override
                    public void onFinish() {
                        System.out.println("Finish-----");


                    }
                });
            } catch (FFmpegCommandAlreadyRunningException e) {
                // do nothing for now
                System.out.println("exceptio :::"+e.getMessage());
            }


            }

**

【讨论】:

    【解决方案2】:

    从这里下载 ffmpeg:http://bambuser.com/opensource。它包含为 android 构建 ffmpeg 的脚本。 修改 build.sh。用你的包名替换“com.bambuser.broadcaster”。您还需要设置 ffmpeg 标志以启用您感兴趣的编解码器。 运行 build.sh,并将 build/ffmpeg 目录复制到您的应用程序 jni/lib 目录中。 使用来自 SO 帖子的 fasaxc 的 makefile。 在您的 jni 目录和 java 包装器中创建一个 native.c 文件。首先,您可以在 NDK 示例 (/samples/hello-jni) 中的 hello-jni 之后对其进行建模。 在您的 native.c 文件中包含头文件,如下所示:#include "libavcodec/avcodec.h"。并调用您需要的函数:avcodec_register_all() 等... 通过添加将本机库包含在您的根活动中: static { System.loadLibraries(""); }

    【讨论】:

      猜你喜欢
      • 2013-07-11
      • 2018-04-11
      • 1970-01-01
      • 1970-01-01
      • 2017-12-16
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 2017-06-24
      相关资源
      最近更新 更多