ijkplayer

摘要
对于比较热门新颖的技术,我还是比较喜欢的。尤其是短视频、直播应用的兴起,直接拉起 ffmpeg 和 ijkplayer 在技术开发界的声望。个人觉得学习一门技术,很多方面是要循序渐进,慢慢积累知识。通过前段时间对这方面进行了恶补,简单的了解一些,因此后来就对这块尝试了一下编译。不过你的“尝试”并不会很顺利,只有在不断尝试、学习、查阅、纠正和再尝试的过程中,才能有新的知识沉淀和突破。因此,这里我所有的一个博客记录,不是要展示什么,而是为了记录一下我的一个学习过程。并分享到更多的朋友,让朋友们在顺利编译的过程中,能够认识到和学习到更多,并了解自己应该在这方面怎么进行改进。
1
内容摘要
准备linux系统 ubuntu14.04
安装 git
安装 vim(vimcdoc-1.5.0.tar.gz)
安装 jdk(jdk-8u151-linux-x64.tar.gz)
安装 ndk(android-ndk-r10e-linux-x86_64.bin)
配置jdk、sdk和ndk环境
ijkplayer 编译
遇到的问题处理
将已编译源码导入 android studio
1
2
3
4
5
6
7
8
9
Ubuntu14.04配置
开启root用户并设置密码
系统刚安装之后,打开终端Ctrl + Alt + t 输入命令 ztman@ubuntu:~$ sudo passwd 然后输入密码就能成功设置了!

os的简体中文环境支持
通过这样的操作步骤 System Setting -> Language Support -> Language -> install/remove language -> Chinese(Simplified)

这个 [汉语(中国)] 是从底部位置拖动到这里,然后重启系统实现了系统语言的更改!

使用Windouws上的软件 WinSCP 连接 Ubuntu
首先通过命令 sudo apt-get update 当然,也可以在终端使用命令 sudo -s 这样之后,在当前的终端页面可以不再使用 sudo 作为命令的前缀。

然后通过命令sudo apt-get install openssh-server安装ssh, 然后启动ta命令sudo service ssh start。

 
之后,使用 WinSCP 进行连接。(注:以防在使用连接的时候你搞不清怎么写,自己安装的系统关于什么用户名什么的都填写一致的名称更好)结果是这样的,这样后我们就能在windows在linux之间进行数据交互!

安装 git
使用安装命令sudo apt-get install git进行git进行安装,

 
安装之后,使用命令进行最初的设置,然后进行配置信息的查看: 
git config --global user.name "your name" 
git config --global user.email "youre mail" 
git config --list 

安装vim
通过命令安装vim sudo apt-get install vim

安装 jdk
通过以下步骤进行顺序执行

创建目录、加压、重定制指向 
root@ubuntu:/usr/lib/jvm# mkdir -p /usr/lib/jvm 
root@ubuntu:/usr/lib/jvm# sudo mvjdk-8u151-linux-x64.tar.gz /usr/lib/jvm 
root@ubuntu:/usr/lib/jvm# cd /usr/lib/jvm 
root@ubuntu:/usr/lib/jvm# sudo tar jdk-8u151-linux-x64.tar.gz.tar.gz 
root@ubuntu:/usr/lib/jvm# sudo ln -sjdk1.8.0_151 java-8

配置jdk的环境变量 
root@ubuntu:~#vim ~/.bashrc

环境设置代码 
 
export JAVA_HOME=/usr/lib/jvm/java-8 
export JRE_HOME=${JAVA_HOME}/jre 
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib 
export PATH=${JAVA_HOME}/bin:$PATH 

执行立即生效 
root@ubuntu:~#source ~/.bashrc

安装 ndk
首先对ndk的包进行权限的更改,然后进行解压。 
sudo chmod 777 android-ndk-r10e-linux-x86_64.bin 
./android-ndk-r10e-linux-x86_64.bin 
 
现在已经看到执行成功!

配置ndk的环境变量
环境设置代码 
 
export ANDROID_NDK=/home/ztman/opt/android-ndk-r10e 
export PATH=$ANDROID_NDK:$PATH

执行立即生效 
root@ubuntu:~#source ~/.bashrc

命令查看ndk配置是否成功

 
这样的提示状态说明已经成功!

安装sdk并配置环境


 
使用命令wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz 进行 sdk 的下载。 
然后使用命令tar -xvf android-sdk_r24.2-linux.tgz进行解压。 
敲入命令cd android-sdk-linux/tools进入到该目录, 
使用命令./android update sdk --no-ui安装sdk的包。 
 
最后使用代码

export PATH=${PATH}:$HOME/sdk/android-sdk-linux/platform-tools:$HOME/sdk/android-sdk-linux/tools:$HOME/sdk/android-sdk-linux/build-tools/22.0.1/
1
,配置sdk环境,打开方式依然使用vim。共同看一下结果: 


ijkplayer 编译
克隆ijkplayer
 
使用命令git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android 拷贝ijkplayer到当前目录。 
切换到工程的最新分支目录,执行命令 
 
执行命令 
cd ijkplayer-android 
git checkout -B latest k0.8.4 

初始化需要进行编译的代码,使用命令./init-android.sh。 内容较多,我贴多一些初始化的过程图片: 
 


进入ijkplayer编译阶段
执行以下命令 
cd android/contrib 
./compile-ffmepg.sh clean 
./compile-ffmpeg.sh all 

 
 


根据成功编译后的提示,继续编译ijkplayer的so文件
执行以下命令 
cd .. 
./compile-ijk.sh 

 
 
到此就全部编译成功了。对于图片的截取,是对部分编译过程的一个快照,这样可以对自己的编译信息做一个对比。

遇到的问题处理
然后在编译过程中容易遇到的问题: 
1,就是sdk和ndk的环境配置问题; 
2,就是yasm版本过旧,需要更新然后再次接着终端时候的命令重新编译;

sdk和ndk的环境配置问题
这个就不多说了,因为上面已经聊的很清楚。

yasm版本过旧
这个问题的出现会导致什么问题呢?请看:

因此我们需要对其进行处理:在我的操作中,我首先把目录切换到/home/ztman/opt/下,然后进行操作。 
在此目录下依次执行命令: 
curl http://www.tortall.net/projects/yasm/releases/yasm-1.3.0.tar.gz >yasm.tar.gz 
tar zxvf yasm-1.3.0.tar.gz 
cd yasm-1.3.0/ 
./configure --prefix=/usr/local/yasm 
make 
make install 

然后,在~/.bashrc 文件中添加环境变量:export PATH=$PATH:/usr/local/yasm/bin 保存之后执行命令:source ~/.bashrc

到此就解决了编译过程出现的那个问题,然后就可以继续中断的编译。

将已编译源码导入 android studio
首先表明一下我的实践结果,对于编译的源代码来讲,导入android studio的方式很普通,跟我们平时导入一个 existing project 是一样的。只需把 ./ijkplayer-android/android 目录下的 project ijkplayer导入就ok。 
然后主要是怎么进行精简项目代码?!像这样。。。

 
减去那些 module 形如 ijkplayer-armXX、ijkplayer-x86XX。怎么使用他们的.so文件替代这些module?!

例如,为实现这种精简效果,这个时候把 module ijkplayer-armv7a下的armabi-v7a文件夹下的so文件导入到 module ijkplayer-java中; 


在 module ijkplayer-java 的 src目录下新建一个 jniLibs 文件夹,并把armeabi-v7a导入。

关键的地方是在 module ijkplayer-java 的 builder.gradle 文件中添加这几行代码,能够让其找到并引用 jniLibs 下的so文件。 

这样之后,就能干掉那些不用的moudle了。

### 回答1: android ijkplayer是一款开源的Android音视频播放器库。它是基于FFmpeg库的封装,提供了一套简单易用的API,使开发者可以方便地在Android平台上实现音视频播放的功能。 在Android平台上,原生的MediaPlayer虽然功能较为基础,但如果要实现一些高级的音视频播放功能,需要编写复杂的代码。而ijkplayer通过封装了FFmpeg库,可以直接支持各种视频格式,同时提供了丰富的播放控制接口和音视频处理功能,轻松满足开发者的需求。 使用ijkplayer,开发者可以实现视频播放器的功能,包括播放、暂停、停止、快进、快退等控制操作,同时还可以实现视频缓冲、音频解码、视频解码等功能。此外,ijkplayer还支持网络流媒体的播放,可以通过URL进行视频播放,并支持自定义视频渲染器,实现自定义的播放界面。 ijkplayer在开源社区中也非常活跃,拥有庞大的开发者群体和丰富的文档资源。开发者可以通过阅读官方文档、查看源码和参与社区讨论,解决使用过程中遇到的问题。 总之,android ijkplayer是一款功能丰富、易用性高的Android音视频播放器库,开发者可以借助它实现各种音视频播放功能,提升用户体验,满足不同场景的需求。 ### 回答2: Android IJKPlayer是一个基于FFmpeg开源项目的跨平台音视频播放器。它是由Bilibili开发的,旨在提供更稳定、高效的音视频播放体验。 IJKPlayer具有以下几个特点: 1. 多格式支持:IJKPlayer可以播放多种音视频格式,包括但不限于mkv、flv、mp4、avi等常见格式,且兼容性较好。 2. 跨平台支持:IJKPlayer不仅可以在安卓平台上使用,还支持在其他主流平台上运行,如iOS、Windows等,给开发者提供了更多的使用选择。 3. 硬解支持:IJKPlayer支持硬解码,可以利用设备的硬件能力来加速音视频的解码和播放,提升播放效率和性能。 4. 自定义能力:IJKPlayer可以根据用户需求进行自定义设置,比如调整播放器的画面尺寸、显示字幕、切换音轨等等,给用户更好的播放体验。 5. 延迟控制:IJKPlayer提供了低延迟播放功能,特别适用于直播等实时性要求较高的场景。 6. 网络支持:IJKPlayer能够通过网络进行音视频的传输和播放,支持直播流媒体协议,如RTSP、RTMP等,方便开发者进行网络音视频应用开发。 总之,Android IJKPlayer是一个强大而且易于使用的音视频播放器,具备良好的兼容性、高效的解码能力和丰富的自定义能力,可以满足开发者对于音视频播放的各种需求,为用户提供更好的播放体验。 ### 回答3: Android IjkPlayer是一款开源的、跨平台的视频播放器框架。它基于FFmpeg和OpenSL ES技术,能够解码和播放各种音视频格式。IjkPlayer具有以下几个优点: 首先,IjkPlayer具有较好的兼容性。它支持常见的视频格式,如MP4、AVI、FLV等,同时也支持常见的音频格式,如MP3、AAC等。这使得开发者可以在Android平台上播放各种类型的音视频,无需关心格式的兼容性问题。 其次,IjkPlayer具有较好的性能。它采用了硬解码和软解码相结合的方式,可以根据设备的硬件能力灵活选择解码方式,以提供更好的播放性能。同时,IjkPlayer还支持视频缓存和断点续播功能,可以在网络环境不稳定的情况下提供更好的用户体验。 另外,IjkPlayer还具有丰富的功能扩展性。它提供了丰富的API接口,开发者可以根据自己的需求进行二次开发。例如,可以通过扩展支持更多的视频格式,或者添加自定义的播放控制功能。 总的来说,Android IjkPlayer是一款功能强大、性能出色的视频播放器框架。它为开发者提供了丰富的功能和灵活的扩展性,能够满足各种类型的音视频播放需求。无论是开发在线直播应用、本地视频播放功能还是自定义的音视频播放需求,都可以通过Android IjkPlayer来实现。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值