ExoPlayer(AndroidX Media3) 扩展ffmpeg实现音频软解码

这篇具有很好参考价值的文章主要介绍了ExoPlayer(AndroidX Media3) 扩展ffmpeg实现音频软解码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

环境准备:

1.Ubuntu 20.04.4 LTS
2.AndroidNDK版本r26C
3.AndroidStudio 2023.1.1(配置好SDK和JDK 17.0.10)
4.ffmpeg6.0源码
5.ExoPlayer源码,AndroidX Media release分支版本

操作步骤:

1.下载Exoplayer源码

目前官方已废弃Exopler2,代码已经迁移到AndroidX Media,下载完成设置FFMPEG_MODULE_PATH变量
1.git clone https://github.com/androidx/media
2.cd media && FFMPEG_MODULE_PATH="$(pwd)/libraries/decoder_ffmpeg/src/main"
media3 ffmpeg aar,androidx,ffmpeg,音视频

2.下载NDK

官网下载NDK或者通过SDKManager安装
media3 ffmpeg aar,androidx,ffmpeg,音视频
下载完成后解压,设置NDK_PATH变量
1.unzip android-ndk-r26c-linux.zip
2.cd android-ndk-r26c && NDK_PATH="$(pwd)"
media3 ffmpeg aar,androidx,ffmpeg,音视频

3.设置编译平台

Lunux为

HOST_PLATFORM="linux-x86_64"

MacOX为

HOST_PLATFORM="darwin-x86_64"

4.设置最小支持Android版本

通常为项目设置的minSDK版本,NDKr26最小支持SDK为21
ANDROID_ABI=23

5.下载ffmpeg源码

下载源码并设置FFMPEG_PATH变量
git clone git://source.ffmpeg.org/ffmpeg && \ cd ffmpeg && \ git checkout release/6.0 && \ FFMPEG_PATH="$(pwd)"
media3 ffmpeg aar,androidx,ffmpeg,音视频

6.配置解码器格式

根据自己需要解码的格式设置,具体支持的解码格式参考官网
ENABLED_DECODERS=(aac ac3 mp3 flac)
media3 ffmpeg aar,androidx,ffmpeg,音视频

7.关联ffmpeg源码

将ExoPlayer源码中ffmpeg模块jni与ffmpeg源码关联,关联成功后会在jni目录中生成一个快捷方式指向ffmpeg源码目录
1.cd "${FFMPEG_MODULE_PATH}/jni"
2.ln -s "$FFMPEG_PATH" ffmpeg
media3 ffmpeg aar,androidx,ffmpeg,音视频

8.编译ffmpeg

编译成功后,会在ffmepg目录下生成一个android-libs目录
./build_ffmpeg.sh \ "${FFMPEG_MODULE_PATH}" "${NDK_PATH}" "${HOST_PLATFORM}" "${ANDROID_ABI}" "${ENABLED_DECODERS[@]}"
media3 ffmpeg aar,androidx,ffmpeg,音视频

9.编译生成Android项目依赖的aar包

退回到ExoPlayer项目工程目录执行,编译成功后会在\libraries\decoder_ffmpeg\buildout\outputs\aar\目录生成aar包
./gradlew lib-decoder-ffmpeg:assembleRelease
media3 ffmpeg aar,androidx,ffmpeg,音视频

10.项目使用

复制生成的aar包到项目libs目录,修改app下的build.gradle文件,引用aar包
implementation(files("libs/extension-ffmpeg-release.aar"))
自定义DefaultRenderersFactory,构造ExoPlayer实例时传入,日志中有ffmpeg相关信息代表加载成功。

media3 ffmpeg aar,androidx,ffmpeg,音视频

media3 ffmpeg aar,androidx,ffmpeg,音视频

11.常见问题

1.shell变量属于临时设置,只在当前窗口生效,新打开命令窗口后需要重新设置,运行build_ffmpeg.sh脚本时会打印相关变量信息,注意查看是否正确。
media3 ffmpeg aar,androidx,ffmpeg,音视频
2.编译ffmpeg源码和生成aar时NDK最好保持一致,否则生成aar包时可能报错。
3.编译时下载Gradle和同步Maven库很慢或超时可以设置国内镜像源,参考AndroidStudio配置腾讯镜像地址
4.教程参考官方开发者指南README.md。文章来源地址https://www.toymoban.com/news/detail-848794.html

到了这里,关于ExoPlayer(AndroidX Media3) 扩展ffmpeg实现音频软解码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Media3:Android下一代媒体框架

    无论您是在构建音乐播放器、视频流应用程序还是其他需要播放媒体内容的 Android 应用程序,拥有可靠的媒体播放库都是必不可少的。 这就是 Media3 发挥作用的地方。 Media3 是由 Google 作为 AndroidX 的一部分推出的强大媒体播放库。它提供了一个易于使用的 API,简化了 Android 应

    2024年02月16日
    浏览(53)
  • 在Jetpack Compose中使用ExoPlayer实现直播流和音频均衡器

    ExoPlayer与Media3的能力结合,为Android应用程序播放多媒体内容提供了强大的解决方案。在本教程中,我们将介绍如何设置带有Media3的ExoPlayer来支持使用M3U8 URL进行直播流。此外,我们还将探讨如何集成音频均衡器,为用户提供个性化的音频体验。 使用ExoPlayer进行直播流涉及到利

    2024年02月04日
    浏览(47)
  • 【干货】Android系统定制基础篇:第六部分-Android扩展服务-AndroidX

    AndroidX 做为一个后台 Service 应用,开机自动运行,配合系统做一些定制化功能,并且对外提供 API。 主要功能: ● 硬件看门狗代理 ● USB Host/Device 切换 ● 4G 网络保活 ● 系统日志写入文件 ● 键值拦截 ● 启用应用 项目地址:https://github.com/aystshen/AndroidX 硬件看门狗代理主要

    2024年02月09日
    浏览(47)
  • 使用ffmpeg实现音频静音修剪

    本文主要介绍在  FFmpeg  命令中使用  silenceremove  filter 进行音频静音的修剪。 参数名 说明 取值范围 默认值 start_periods 设置是否应在音频开头修剪音频。 0  表示不应从一开始就修剪静音。当指定一个 非   0  值时,它会修剪音频直到找到非静音。通常,当从音频的开头修

    2024年02月01日
    浏览(33)
  • FFmpeg代码实现抽取音频、视频数据

    今天开始撸代码,首先使用FFmpeg的API抽取一个MP4文件的音频数据。 应该是第一次在Mac上做C/C++开发,纠结过后选择使用CLion 开发。CLion是 JetBrains下专门用来开发C/C++的IDE,已经用习惯了Android studio和IntelliJ IDEA ,所以CLion用起来还是很顺手的。 在新建一个C项目后,需要把FFmpe

    2024年02月08日
    浏览(32)
  • python加上ffmpeg实现音频分割

    前言: 这是一个系列的文章,主要是使用python加上ffmpeg来对音视频文件进行处理,包括音频播放、音频格式转换、音频文件分割、视频播放等。 系列文章链接: 链接1: python使用ffmpeg来制作音频格式转换工具(优化版) 链接2:<Python>PyQt5+ffmpeg,简单视频播放器的编写(解

    2024年02月04日
    浏览(29)
  • 使用ffmpeg实现给音频,视频添加水印的操作

    本文主要针对ffmpeg进行整理,从而解决在现实中可能存在的问题。 这里参考的是 Java后台用ffmpeg命令给视频添加水印 - ^身后有尾巴^ - 博客园 (cnblogs.com) 1:先去ffmpeg官网下载其压缩包  Download FFmpeg 下载,解压到指定位置  2.将压缩包拷贝到你想的任意位置并解压,正常解压出

    2023年04月08日
    浏览(33)
  • Linux简单安装ffmpeg 实现用PHP压缩音频

    一、下载安装 1、官方下载地址:Download FFmpeg 2、下载完上传到服务器然 然后解压就算安装完成了 3、然后配置一下全局变量(当然也可以不用配置 使用的时候带上文件路径就行)    二、在PHP中用exec()函数运行ffmpeg命令处理音频 1、php.ini中exec()函数禁用去掉 保存 重启php 2、

    2024年01月24日
    浏览(34)
  • qt+ffmpeg 实现音视频播放(二)之音频播放

    通过  avformat_open_input () 打开媒体文件并分配和初始化  AVFormatContext   结构体。 函数原型如下: int avformat_open_input(AVFormatContext **ps, const char *url, AVInputFormat *fmt, AVDictionary **options); 参数说明: - `ps`:指向 `AVFormatContext` 结构体指针的指针,用于存储打开的媒体文件的信息。

    2024年04月22日
    浏览(45)
  • 基于FFMpeg实现音频mp3/aac/wav解码

    编译环境:Ubuntu16.04 64位 交叉编译工具:arm-himix200-linux-gcc 我这里使用的是ffmpeg-5.1.2.tar.gz,下载地址点击下载地址。 这样,/root/ffmpeg-5.1.2/output下面就是咱们要的程序,bin目录下ffmpeg可以在开发板上运行,include下是需要的头文件,lib下是需要的静态库,share/ffmpeg/examples是一些

    2024年02月11日
    浏览(44)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包