直播技术总结(二)ijkplayer的编译到Android平台并测试解码库
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了直播技术总结(二)ijkplayer的编译到Android平台并测试解码库,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2582字,纯文字阅读大概需要4分钟。
内容图文
![直播技术总结(二)ijkplayer的编译到Android平台并测试解码库](/upload/InfoBanner/zyjiaocheng/1302/56e197c770d04f3aa7197ce35d48c47c.jpg)
转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/55670380
前言:ijkplayer,是b站工程师开源的播放器框架,基于FFmpeg及MediaCodec,内部实现软解及硬解的功能,对于没有自研底层播放器的公司,用它确实是比较合适了。关于介绍可以直接看:https://github.com/Bilibili/ijkplayer,今天主要是对ijkplayer进行编译在Android平台上运行。
首先看下效果图:
gif图如下:
![技术分享](/upload/getfiles/default/2022/11/8/20221108045746007.jpg)
编译过程:在mac上进行编译这个库
先clone一份源码到本地:
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.7.7.1#最新分支
编译ffmpeg
./init-android.sh# 初始化ijkplayer中和android相关,如果是在iOS,这是就是./init-ios.sh
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all #编译ffmpeg
囧,发现pro上没有配置ndk环境。
下载ndk,还好在《手把手图文并茂教你用Android Studio编译FFmpeg库并移植》中,我把ndk-10e存到云盘中。
- 供参考下载地址见本文最下面,也可自行下载。
- 用命令 ./android-ndk-r10e-mac-x86_64.bin,就可进行进行解压,如下图:
不过并没有这么顺利, 在解压过程中出现Permission denied。
这时要改下权限,执行命令 chmod a+x ./android-ndk-r10e-mac-x86_64.bin
配置ndk环境
- 启动终端Terminal
- 进入当前用户的home目录
- 输入cd ~ 或 /Users/YourUserName
- 创建.bash_profile
- 输入touch .bash_profile
编辑.bash_profile文件
输入open -e .bash_profile
因为是为了配置NDK开发环境,输入Android NDK下目录,前面是android sdk的,可以不用动它,最终.bash_profile文件如下:
- 保存文件,关闭.bash_profile
- 更新刚配置的环境变量
- 输入source .bash_profile,让刚长配置生效
ndk-build测试
- 找到ndk-10e中sample目录,cd hello-jni中,执扫命令ndk-build。就会出现如下所示:
重新回到编译ffmpeg的过程:
依旧执行:./compile-ffmpeg.sh all,得到如下所示
本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/55670380
编译结束时如下:
最终,在crontrib目录下,会出现编译so所需要的各平台文件,如arm,x86。也可以指定平台,编译。
最后执行如下命令,让ijkplayer和ffmpeg打成so库及demo工程:
cd .../compile-ijk.sh all
执行完毕后,就会出现一个ijkplayer文件夹,为studio工程,里面包含各平台so库。导入android studio,就可以运行demo工程。
导入Android Studio,example工程运行到模拟器上:
点击Sample,进入播放测试
最后我们编译它,不是用来看看demo就完了的。我们可以改c代码,并且按如上方式重新编译成so库,如果要在其他工程中使用的话。xml中引用如下:
<tv.danmaku.ijk.media.example.widget.media.IjkVideoView
android:id="@+id/video_view"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_gravity="center"/>
在你的Java代码中加入如下一些初始化条件就可以啦。
videoView = (IjkVideoView) findViewById(R.id.videoview);
// init player
IjkMediaPlayer.loadLibrariesOnce(null);
IjkMediaPlayer.native_profileBegin("libijkplayer.so");
videoView.setVideoURI(Uri.parse(mUrl));
videoView.setOnPreparedListener(new IMediaPlayer.OnPreparedListener() {
@Override
public void onPrepared(IMediaPlayer mp) {
videoView.start();
}
});
第一时间获得博客更新提醒,以及更多android干货,源码分析,欢迎关注我的微信公众号,扫一扫下方二维码或者长按识别二维码,即可关注。
![技术分享](/upload/getfiles/default/2022/11/8/20221108045752817.jpg)
原文:http://blog.csdn.net/hejjunlin/article/details/55670380
内容总结
以上是互联网集市为您收集整理的直播技术总结(二)ijkplayer的编译到Android平台并测试解码库全部内容,希望文章能够帮你解决直播技术总结(二)ijkplayer的编译到Android平台并测试解码库所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。