背景說明
由于PC端瀏覽器要能看直播殿遂,需要在手機端再開發(fā)一個RTMP協(xié)議的播放器。具體要求如下:
- 實時乙各。秒開視頻纯续,延遲要盡可能地低:3秒內(nèi)
- 流暢不卡頓梆暖,要一直播放峻厚。即使是馬賽克也要顯示窜司,不能因為不清晰而停止播放
PS:
- VLC for Androd 太慢了,打開幾十秒蹲坷,播放緩存也巨大
準(zhǔn)備
源碼 Github:Bilibili/ijkplayer
環(huán)境:Mac Book(源碼要在Linux編譯)
編譯
安裝homebrew驶乾、git、yasm(請自行百度或谷歌)
下載andriod studio 循签,Android SDK级乐、NDK
配置Android SDK、NDK環(huán)境變量县匠,在.bash_profile增加如下兩行
export ANDROID_SDK=/your/sdk/pathexport
export ANDROID_NDK=/your/ndk/path安裝gradle
下載源碼
git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-androidcd ijkplayer-androidgit checkout -B latest初始化
./init-android.sh編譯ffmpegcd android/contrib./compile-ffmpeg.sh clean./compile-ffmpeg.sh all
編譯IjkPlayercd .../compile-ijk.sh all
到此為止风科,完成了對源碼的編譯撒轮,ijkplayer-android的目錄結(jié)構(gòu)如圖
圖:工程結(jié)構(gòu)
-
更改project配置
最后的配置如下,其中第10,24,25,27行要更改跟gradle一致:
屏幕快照 2017-05-26 04.59.19 PM.png
運行
調(diào)整延時
ffplay在打開rtmp串流視頻時贼穆,大多數(shù)都會遇到5~10秒的延遲题山,在ffplay播放時,如果加上-fflags nobuffer可以縮短播放的rtmp視頻延遲在1s內(nèi)扮惦,而在ijkVideoView中加入(PLDroidPlayer當(dāng)中也可以設(shè)置):
ijkMediaPlayer.setOption(1, "analyzemaxduration", 100L);
ijkMediaPlayer.setOption(1, "probesize", 10240L);
ijkMediaPlayer.setOption(1, "flush_packets", 1L);
ijkMediaPlayer.setOption(4, "packet-buffering", 0L);
ijkMediaPlayer.setOption(4, "framedrop", 1L);