exoplayer3 ffmpeg 扩展库编译 aar,导入集成

exoplayer3 ffmpeg 扩展库编译 aar,导入集成。

已经编译完成的aar:https://download.csdn.net/download/mhhyoucom/88086822

编译项目方法:
github下载项目:https://github.com/google/ExoPlayer

FFmpeg 模块提供 ,它使用 FFmpeg 进行解码 并且可以呈现以各种格式编码的音频。

要使用该模块,您需要克隆此 GitHub 项目并依赖其 本地模块。有关执行此操作的说明,请参阅顶级自述文件。该模块不是通过谷歌的Maven存储库提供的 。

此外,还需要手动构建 FFmpeg 库,以便 可以将 FFmpeg 二进制文件捆绑在 APK 中:

设置以下外壳变量:
cd “ ”
FFMPEG_MODULE_PATH=“$(pwd)/extensions/ffmpeg/src/main”

下载安卓 NDK 并在 shell 变量中设置其位置。 此构建配置已在 NDK r21 上进行了测试。

NDK_PATH=“ ”

设置主机平台(对于 Mac OS X,请使用“darwin-x86_64”):

HOST_PLATFORM=“linux-x86_64”

获取 FFmpeg 并签出相应的分支。我们不能保证 与所有版本的 FFmpeg 兼容。我们目前推荐版本 4.2:

cd “” &&
git clone git://source.ffmpeg.org/ffmpeg &&
cd ffmpeg &&
git checkout release/4.2 &&
FFMPEG_PATH=“$(pwd)”

配置要包含的解码器。请参阅支持的格式页面 可用解码器的详细信息,以及它们支持的格式。

ENABLED_DECODERS=(vorbis opus flac)
在 FFmpeg 模块目录中添加指向 FFmpeg 源代码的链接。jni
cd “KaTeX parse error: Expected 'EOF', got '&' at position 27: …ULE_PATH}/jni" &̲& \ ln -s "FFMPEG_PATH” ffmpeg

执行以构建 、 和 的 FFmpeg。如果需要构建,可以编辑脚本 不同的架构:build_ffmpeg.sharmeabi-v7aarm64-v8ax86x86_64

cd “KaTeX parse error: Expected 'EOF', got '&' at position 27: …ULE_PATH}/jni" &̲& \ ./build_ffm…{FFMPEG_MODULE_PATH}” “ N D K P A T H " " {NDK_PATH}" " NDKPATH""{HOST_PLATFORM}” “${ENABLED_DECODERS[@]}”

如何使用:

导入java类。

public class PluginRenderFactory extends DefaultRenderersFactory {
    /**
     * @param context A {@link Context}.
     */
    public PluginRenderFactory(Context context) {
        super(context);
    }

    @Override
    protected void buildAudioRenderers(Context context, int extensionRendererMode, MediaCodecSelector mediaCodecSelector, boolean enableDecoderFallback, AudioSink audioSink, Handler eventHandler, AudioRendererEventListener eventListener, ArrayList<Renderer> out) {
        out.add(new FfmpegAudioRenderer(eventHandler, eventListener, audioSink));
        super.buildAudioRenderers(context, extensionRendererMode, mediaCodecSelector, enableDecoderFallback, audioSink, eventHandler, eventListener, out);
    }


}

exoplayer初始化时候设置进入:

DefaultRenderersFactory renderersFactory = new PluginRenderFactory(context)
                .setExtensionRendererMode(DefaultRenderersFactory.EXTENSION_RENDERER_MODE_ON);
        mPlayer = new ExoPlayer.Builder(context).setRenderersFactory(renderersFactory).build();

编译集成完毕

你可能感兴趣的:(FFmpeg音视频编程,ffmpeg,ndk,c++)