歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Ubuntu 14.04 下編譯 ijkplayer Android

ijkplayer 是一個基於 ffplay 的開源視頻播放器核心,支持 iOS/Android 平台,由 bbcallen 編寫。

更多特性參閱項目地址:https://github.com/bbcallen/ijkplayer

我的編譯環境為 64 位的 Ubuntu 14.04,x86 用戶請根據本文自行腦補。

准備文件

首先自然是准備好 git,若未裝可通過命令 sudo apt-get install git 安裝。
確保已安裝 g++,未安裝請執行 sudo apt-get install g++ 來安裝。
然後找一個目錄存放 ijkplayer 的代碼倉庫。如果想使用穩定分支的 ijkplayer,執行:

git clone https://github.com/bbcallen/ijkplayer.git ijkplayer-android-stable
cd ijkplayer-android-stable
git checkout -B latest n0.1.3

若使用最新的 master 分支(unstable),則執行:

git clone https://github.com/bbcallen/ijkplayer.git ijkplayer-android-master
cd ijkplayer-android-master
git checkout master


完畢後 cd 進入克隆的目錄,執行:

./init-android.sh

這裡會自動下載 ffmpeg 和 android-libyuv 依賴包,其中由於 ffmpeg 倉庫在國外,故需要等待較長時間。本人以 15KB/s 的速度下載了兩個多小時,等待期間可以做下面的准備。

其次是 Android SDK 以及 NDK。Android SDK 可從官網下載最新版。至於 NDK,目前暫不支持最新的 NDK r10 版本,需要使用上一版 r9d,下載 http://dl.google.com/android/ndk/android-ndk-r9d-linux-x86_64.tar.bz2,或嘗試百度盤 http://pan.baidu.com/s/1nvGUA2d  提取密碼 dhmb

需要特別說明的是,下載 NDK 真是一件折騰死人的事,強烈建議在 Windows 中使用迅雷下完後再重啟進 Linux 解壓。我使用 GoAgent/ShadowSocks 在 ubuntu 的 chrome 中下載 Google 上的 NDK r9d,總是下了一會就斷流了,且無法斷點續傳,反復數次都失敗。遂嘗試至百度雲離線下載該文件,但這個文件下載速度死慢,根本拖不下來。

在這裡我把 SDK 和 NDK 解壓到了 ~/android-sdk-linux/ 和 ~/android-ndk-r9d/ 下。

准備環境

ubuntu 14.04 的 shell 默認是 dash,這裡我們必須改為 bash,否則執行編譯腳本時會有很多莫名其妙的問題:

sudo dpkg-reconfigure dash

它會問你是否使用 dash 作為系統缺省 shell,在這裡當然是選 <否>/No

接下來需要設置環境變量 ANDROID_SDK 和 ANDROID_NDK。編輯 $HOME/.bashrc,在尾部添加:

export ANDROID_NDK="~/android-ndk-r9d/"
export ANDROID_SDK="~/android-sdk-linux/"
export PATH=$PATH:$ANDROID_NDK

保存後就可以正式進入編譯流程了。

編譯 ijkplayer

確保工作目錄位於 ijkplayer 主目錄,進入 android 子目錄:

cd android

編譯 ffmpeg 依賴庫。由於大多數設備都為 armv7a 架構,故在這裡使用之。使用 armv5|armv7a|x86 作為輸入來設定平台,或傳入 all|clean|check 進行[編譯所有平台/清理/檢查]。

sh compile-ffmpeg.sh armv7a

若報錯,請檢查以上各項配置是否正確;否則耐心等待編譯完畢即可。

接下來就可以編譯 ijkplayer 了:

sh compile-ijk.sh

稍等片刻即可完成編譯。若輸出中只有兩個 Aborting 屬正常現象,這是因為 armv5 和 x86 的 ffmpeg 沒有編譯導致的。如果這一步沒有其它錯誤,那麼 ijkplayer 的編譯到此就成功完成了。

使用 ijkplayer

編譯好的二進制文件位於 android/ijkmediaplayer 下。作者推薦使用 android/ijkmediaplayer 下的 MediaPlayer-Like 接口進行 ijk 調用,亦可使用 android/ijkmediawidget 下的 VideoView-Like 接口進行 ijk 調用。在 android/ijkmediademo 下有一份簡單的 VideoActivity 演示,需要在 eclipse 中完整導入這三個項目才能進行測試。

至於 ijkplayer 到底怎麼用,占坑,等會用了再回來填坑。

Remarks

ijkplayer 目前在 iOS 平台各方面表現較佳,Android 方面仍存在一些問題。請親自體會或參閱 issues

更多Ubuntu相關信息見Ubuntu 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=2

更多Android相關信息見Android 專題頁面 http://www.linuxidc.com/topicnews.aspx?tid=11

Copyright © Linux教程網 All Rights Reserved