最近直播比较火,作为曾经的多媒体人,按捺不住想看看现在的直播客户端是如何解码的,解压众多直播app后,看到了熟悉的FFmpeg身影(太熟悉了,之前一直搞FFmpeg,解决各种文件sync问题啊),以及一个叫ijkffmpeg的库,这个是什么玩意儿,竟然没听说过啊(之前是做Android media framework的,也是一年多没接触多媒体了,所以out了啊),这怎么对得起我这个多媒体人的身份,遂晚上花了点时间研究了一下。
最终编译成功了apk在Android 5.1上运行起来了,中间遇到了不少错误,以前只是网上看别人分享的内容,这次自己也分享一下吧,要懂的回报啊,也顺便记录一下(后面编译新版本竟然没有遇到什么错误。。。)。
环境(条件):
Ubuntu 15.10
ndk:android-ndk-r11b(对应的toolchain版本是4.9,用来交叉编译的东东了)
能访问github(如果访问不了翻墙试试,可以花钱购买翻墙软件,我用过多态的vpn,不过由于公司默认可以翻墙,用的不多,偶尔在4G状态下用,收收Gmail也是ok的)
接下来开始编译了:
github搜索ijkplayer,选择第一个:
https://github.com/Bilibili/ijkplayer
参考README.md的Build Android部分进行编译(按照这个guide一步步来):
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.5.1
./init-android.sh
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
cd ..
./compile-ijk.sh all
# Android Studio:
# Open an existing Android Studio project
# Select android/ijkplayer/ and import
#
# define ext block in your root build.gradle
# ext {
# compileSdkVersion = 23 // depending on your sdk version
# buildToolsVersion = "23.0.0" // depending on your build tools version
#
# targetSdkVersion = 23 // depending on your sdk version
# }
#
# Eclipse: (obselete)
# File -> New -> Project -> Android Project from Existing Code
# Select android/ and import all project
# Import appcompat-v7
# Import preference-v7
#
# Gradle
# cd ijkplayer
# gradle
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android
cd ijkplayer-android
git checkout -B latest k0.5.1
./init-android.sh
cd android/contrib
./compile-ffmpeg.sh clean
./compile-ffmpeg.sh all
注:此步弹出错误:you must define ANDROID_NDK,ANDROID_SDK
cd ..
./compile-ijk.sh all
最终编译出了各个处理器版本下的ijkffmpeg.so和ijkplayer.so
新建Android工程,import android/ijkplayer
编译成功安装到手机上,点击Sample随便点击一个播放,播放成功。。。。竟然播放成功了。。。
那我写这篇文章的目的也没有了。。。本来我下载的是https://github.com/bbcallen/ijkplayer的代码,
里面一堆错误,写这篇文章的时候看到里面的README.md指向bilibili的git,就按照bilibili的git来测试了,
没想到就配置SDK和NDK就成功了,汗啊,看来找对方法是很有必要的,能节省不少时间。
Anyway,能成功就ok。
打开ijkplayer发现功能很丰富:
显示audio cache、video cache信息
显示所有track信息
可以切换音轨、
动态开关视频、音频
选择player等
这个功能比我当时做机顶盒的player要丰富多了,赞啊
后面再花时间深入研究研究这个player
多媒体就跟我的初恋一样,虽然现在不在一起了,但是还是会经常想起那美好的时光O(∩_∩)O~