免费做效果图的网站有哪些,wordpress轴值,网站做重新定向 对网站有影响吗,五种网络营销推广方法ijkplayer是B站开源的一款基于ffmpeg的移动端播放器。但为了减少播放器的体积#xff0c;很多音视频的格式播放默认都是不支持的#xff0c;需要自己下载ijkplayer源码进行编译。这里以mac环境下android为例#xff0c;简述ijkplayer的编译过程#xff0c;以及为了支持更多…ijkplayer是B站开源的一款基于ffmpeg的移动端播放器。但为了减少播放器的体积很多音视频的格式播放默认都是不支持的需要自己下载ijkplayer源码进行编译。这里以mac环境下android为例简述ijkplayer的编译过程以及为了支持更多音视频编码格式所要做的工作。mac环境下编译要稍微简便点不需要安装虚拟机和linux操作系统。
一 编译ijkplayer源码
1 下载ijkplayer源码
https://github.com/Bilibili/ijkplayer
2 确保android studio开发环境环境
export ANDROID_NDK/Users/xxx/Documents/Programs/android-ndk-r10e
export ANDROID_SDK/Users/xxx/Library/Android/sdk
主要是android sdk和ndk路径要在环境变量中配置配置的ndk版本最好要低点。
3 执行shell脚本下载ffmpeg源码
在ijkplayer源码根目录下找到init-android.sh。 终端定位到ijkplayer到源码根目录执行 ./init-android.sh 可以用文本编辑器打开这个shell脚本。 里面到主要内容就是下载ffmpeg源码。执行完成后在ijkplayer源码根目录下extra目录下会多一个ffmpeg目录 同时在android/contrib会多出如下5个文件夹。 jk实际编译libijkffmpeg.so时就是使用到对应架构目录下的ffmpeg源文件。
4 编译配置
在config目录下共有3个默认的配置编译文件。 module-default.sh支持的音视频解码器较多(编译出的so文件也比较大)。 module-lite-hevc.sh支持hevc module-lite.sh支持较少的音视频解码器默认情况下 一般为了减少so体积通常选择module-lite.sh。 执行 rm module.sh ln -s module-lite.sh module.sh 类似于创建了一个快捷键。
5 编译ffmpeg生成libijkffmpeg.so
进入 android/contrib 目录 5-1 清除ffmpeg的编译文件 执行 ./compile-ffmpeg.sh clean
执行此操作后android/contrib/build/ffmpeg-armv7a/output目录下文件以及android/contrib/ffmpeg-armv7a目录中的一些编译中间成果物如.o文件也会删除(此处以armv7a架构为例说明)。
5-2 编译生成libijkffmpeg.so 执行 ./compile-ffmpeg.sh armv7a 这里只编译armv7a架构如果要编译所有架构那么就把armv7a改为all。 如果出错看控制台错误分析。 编译成功后会在android/contrib/build/ffmpeg-armv7a/output目录下生成libijkffmpeg.so。 6 编译ijkplayer生成libijkplayer.so libijksdl.so
进入android目录执行 ./compile-ijk.sh 生成libijkplayer.so和libijksdl.so库至此编译过程全部完成过程中总共生成3个so库libijkffmpeg.so libijkplayer.so以及libijksdl.so。
二 编译支持更多的音视频格式播放
ijkplayer默认支持的音视频编码格式可能并不一定能满足项目的需求这时就需要自己去编译ijkplayer来支持更多音视频编码格式的解码播放。一般只需4步即可
1 修改编译配置文件
进入config目录 以module-lite.sh为例使用文本编辑器打开。
export COMMON_FF_CFG_FLAGS$COMMON_FF_CFG_FLAGS --enable-decoderpcm_alaw
export COMMON_FF_CFG_FLAGS$COMMON_FF_CFG_FLAGS --enable-decoderpcm_mulaw
export COMMON_FF_CFG_FLAGS$COMMON_FF_CFG_FLAGS --enable-decodermpeg4
export COMMON_FF_CFG_FLAGS$COMMON_FF_CFG_FLAGS --enable-decodermp2*
export COMMON_FF_CFG_FLAGS$COMMON_FF_CFG_FLAGS --enable-decoderac3 根据自己需要增加支持的音频格式在文件中增加相应配置例如需要增加MPEG4视频格式和G711音频编码格式的解码播放则相应地enable-decoder mpeg4和pcm_alaw。
而如何知道需要增加何种的音视频格式支持可以用ffmpeg的ffplay直接播放一下视频播放时会有音视频编码格式等相关信息。也可以用其它播放器在电脑上播放时查看媒体信息获知。
2 执行编译配置
还是在config目录中执行 rm module.sh ln -s module-lite.sh module.sh
3 编译ffmpeg生成libijkffmpeg.so
进入android/contrib目录 先执行如下命令清除ffmpeg的编译文件 ./compile-ffmpeg.sh clean 再执行 ./compile-ffmpeg.sh armv7a 有前面可知在android/contrib/build/ffmpeg-armv7a/output目录下会生成libijkffmpeg.so。这里只编译armv7a架构如果要编译所有架构则将armv7a改成all要编译其它架构则自己修改成对应的架构。
4 替换libffmpeg.so
libijkplayer.so及libijksdl.so这2个库可以不用重新编译。前者的功能主要是播放控制以及调用ffmpeg库进行解码等后者主要作用是视频渲染等。使用时不管是aar依赖还是gradle依赖只要将libffmpeg.so库替换成自己编译生成的这个libffmpeg.so库就可以了。