1. 程式人生 > >Android邊緩衝邊播放視訊(ijkplayer的編譯和使用)

Android邊緩衝邊播放視訊(ijkplayer的編譯和使用)

當你看到這篇博文的時候希望你先對這個開源專案有所瞭解。


github上的地址: https://github.com/Bilibili/ijkplayer


感謝嗶哩嗶哩團隊不吝開放出來。此文主要用於幫助之後需要編譯ijkplayer的同學,少走一點彎路。


轉載請註明出處:CSDN 胖虎 http://blog.csdn.net/ljphhj


首先交代一下我這邊編譯的環境:

Ubuntu 14.04 64位

ANDROID_SDK 和 ANDROID_NDK (特指NDK r10e),這個很重要千萬不要弄到ndk_r9d


編譯ijkplayer其實並沒有網上那麼多的問題,之所以有問題 基本都是環境導致的。

接著我們按照github上的來操作。

0. 準備工作

(1)沒裝 git 的同學,裝 git 咯(apt-get install git)

(2)裝make 和 yasm (這裡我要強調的是yasm 記得它的版本一定要是1.2.0,否則不行)

準備工作做好了,就可以開始了


1. 你需要將github上的程式碼clone下來, 放在資料夾ijkplayer中

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer_android


2. 做一些初始化動作

cd config
rm module.sh //這個檔案刪除掉
ln -s module-default.sh module.sh
cd android/contrib
sh compile-ffmpeg.sh clean


sudo dpkg-reconfigure dash , 選擇" No "


3.接著執行android編譯ijkplayer所需要的初始化指令碼(其實就是為了把ffmpeg相關的下載下來【跟視訊流相關的】)

到專案主目錄ijkplayer_android下,執行 sh ./init-android.sh ,然後只要放著下載了,這邊理論上你要所有的都下載好而且沒錯誤,才可以進行下一步,如果中間有錯誤千萬別進行下一步,沒有用的。


4.完了之後, cd android/contrib 目錄下

執行 sh ./compile-ffmpeg clean

然後再執行 sh ./compile-ffmpeg all  // all表示所有cpu型別的平臺都進行編譯。也可以寫指定的。


【這邊期間可能會遇到很多比如什麼x86裡面有個錯誤,如下---這個我的分析就是你的yasm的版本不是1.2.0】(yasm --version)

In file included from libavcodec/x86/mpegvideoenc.c:83:0:
libavcodec/x86/mpegvideoenc_template.c: In function 'dct_quantize_ssse3':
libavcodec/x86/mpegvideoenc_template.c:151:9: error: 'asm' operand has impossible constraints
asm volatile(
^
libavcodec/x86/mpegvideoenc_template.c:186:9: error: 'asm' operand has impossible constraints
asm volatile(
^
make: *** [libavcodec/x86/mpegvideoenc.o] Error 1


5.如果第四步你也已經順利通過,那麼剩下的就是執行./compile-ijk.sh這個指令碼了,執行完後,在android/ijkplayer目錄下就是所有的可以用的demo了,生成的libs會放到demo的libs目錄下。


6.ijkplayer全部編譯完成之後,你會在android/ijkplayer目錄下得到你要的demo,然後根據提供的demo就行你自己的需求修改就行了。


轉載請註明出處:CSDN 胖虎 http://blog.csdn.net/ljphhj


簡而言之,這些是我編譯過程中的一些坑吧,如果有網友還是編譯不過,歡迎留言,可以探討交流一下。也許其他網友看到也可以幫助你。