Android 開(kāi)發(fā)音頻組件(Vitamio FAQ)詳細(xì)介紹
一、Vitamio介紹
1.1 Vitamio是什么?
Vitamio是Android平臺(tái)視音頻播放組件,支持播放幾乎格式的視頻以及主流網(wǎng)絡(luò)視頻流(http/rtsp/mms等),詳細(xì)的中文介紹: 這里。
Vitamio官網(wǎng):http://vitamio.org/
Vitamio微博:http://weibo.com/vitamio
VPlayer官網(wǎng):http://vplayer.net
Vitamio豆瓣:http://site.douban.com/145815/
1.2 關(guān)于Vitamio的名字(摘自豆瓣官網(wǎng))
Vitamio 來(lái)源于英文單詞Vitamin(維他命),希望Vitamio對(duì)于安卓多媒體開(kāi)發(fā)者的重要性,就像Vitmain之于人體一樣不可缺少。
The name of Vitamio comes from Vitamin, We hope the importance of Vitamio for Android multimedia developers as indispensable as Vitamin for human.
1.3 關(guān)于Vitamio的由來(lái)(摘自豆瓣官網(wǎng))
我們是一撥蔥名勤勞的Coder,我們?cè)鲪簾┤叩腁ndroid多媒體程序開(kāi)發(fā),從版本升級(jí)到不同設(shè) 備,剛坑娘的測(cè)試完三星,htc,sony,操,又拿來(lái)了v880;我們認(rèn)為這些討厭的玩意注定會(huì)讓我們的生活變得愚蠢,新技術(shù)神馬的也是沒(méi)有時(shí)間去研究 ,最令人發(fā)指的是不能專注于實(shí)現(xiàn)自己的創(chuàng)意APP。
經(jīng)常沉溺于拯救世界的精神世界,平凡的Coder也能變奇葩。作為最早研究Android媒體工具的團(tuán)隊(duì),我們決定把我們的Vitamio框架免費(fèi)出去,助力安卓多媒體開(kāi)發(fā)者實(shí)現(xiàn)自己的創(chuàng)意夢(mèng)想 :D, 各位少年,我們是來(lái)自中國(guó)的高品質(zhì)多媒體框架噢。
第一版發(fā)布日期:2011年9月發(fā)布
1.4 Vitamio相關(guān)數(shù)據(jù)
從2011年9月發(fā)布至今,用戶下載量超過(guò)2000W,使用Vitamio的開(kāi)發(fā)者超過(guò)1500位,使用過(guò)Vitamio產(chǎn)品有
國(guó)內(nèi):搜狐視頻,91熊貓影音(網(wǎng)龍),海底撈,歌華有限 等
國(guó)外:Pak TV Global,Madani Channel,Deen TV,myTRANS,FPlayer,AnimeFTW.tv,Radio Nepali,GNC LiveWell,MagicTV Streaming Player Free,Hispan TV Mobile,TV Italy等
1.5 Vitamio有什么優(yōu)點(diǎn)?
a). 強(qiáng)大。支持超多格式視頻和網(wǎng)絡(luò)視頻播放。(不強(qiáng)大免費(fèi)也沒(méi)用,所以排在第一位)
b). 個(gè)人免費(fèi)。(但企業(yè)使用需要購(gòu)買(mǎi)授權(quán))
(Google Play上已有多款基于Vitamio的收費(fèi)播放器,大家可以在里面搜索Vitamio關(guān)鍵字)
c). 無(wú)縫集成。僅將Vitamio的Library工程引入即可使用,無(wú)需另外下載安裝解碼包(Vitamio的上一個(gè)版本是需要單獨(dú)下載安裝解碼包)。
d). 使用簡(jiǎn)單。調(diào)用非常簡(jiǎn)單,方便使用。
e). 自由定制。播放界面的代碼已完全開(kāi)放,方便自定義播放界面、進(jìn)度條等。
d). 持續(xù)更新。2012-7-9已發(fā)布新一版的內(nèi)測(cè)版本,預(yù)計(jì)8月初能發(fā)布下一個(gè)版本。
e). 服務(wù)跟進(jìn)。Vitamio官方QQ群(171570336),提供開(kāi)發(fā)者交流和討論。論壇還在開(kāi)發(fā)中。
1.6 Vitamio背后的團(tuán)隊(duì)
Vitamio與VPlayer屬同一個(gè)團(tuán)隊(duì)、同一個(gè)公司(yixia.com)。我們?cè)诒本?,目前團(tuán)隊(duì)有5名成員,4名開(kāi)發(fā),1名設(shè)計(jì)師,以開(kāi)發(fā)VPlayer為主,Vitamio為輔 :)
1.7 Vitamio與VPlayer什么關(guān)系?
VPlayer基于Vitamio開(kāi)發(fā),所以VPlayer能播放的Vitamio也能。
OPlayer基于Vitamio開(kāi)發(fā),作為推廣Vitamio的使用例子和示范產(chǎn)品,完全開(kāi)放源代碼。雖是業(yè)余之作,仍以正式發(fā)布到市場(chǎng)為目標(biāo)。
1.8 Vitamio與ffmpeg
FFmpeg提供軟件解碼器和多路輸出(demuxers)。Vitamio使用LGPLv2.1許可下FFmpeg的代碼,代碼可以從這里下載。
https://bitbucket.org/ABitNo/ffmpegandroid
二、Vitamio下載和運(yùn)行
2.1 下載
Vitamio 3.0下載。(2012-10-23更新)
OPlayer 3.0下載。(2012-10-24更新,沒(méi)有taocode賬戶的請(qǐng)注冊(cè)一個(gè))
2.2 運(yùn)行例子
解壓后兩個(gè)項(xiàng)目:VitamioBundle和Test,其中VitamioBundle是Library(關(guān)于Android Library參見(jiàn)這里),運(yùn)行Test例子即可。
注意:
1). 例子使用API 16,沒(méi)有安裝升級(jí)最新Android 4.1 會(huì)報(bào)錯(cuò),大家設(shè)置里降低至API 14(Android 4.0) 或API 15(Android 4.0.3) 即可。
2). 工程文件并沒(méi)有g(shù)en文件夾,請(qǐng)大家自行加上。
3). 先編譯VitamioBundle,后編譯Test。如果仍然有錯(cuò)誤,把工程Clean一下,依次再編譯一下。
4). 修改VideoViewDemo視頻路徑為你要測(cè)試的視頻路徑。注意,本地視頻用setVideoPath方法,播放網(wǎng)絡(luò)視頻用setVideoURI方法。
2.3 整合例子
不希望以Library的方式引用Vitamio,可以直接把VitamioBundle里所有的類、資源拷貝至目標(biāo)項(xiàng)目。注意src、libs、res目錄下的都要拷貝過(guò)去,還有AndroidManifest.xml中的配置。
成功整合例子,大家可以看一下OPlayer的結(jié)構(gòu)。
2.4 自定義InitActiviy,即正在解壓解碼包進(jìn)度條界面。
這里給出InitActivity代碼:
public class InitActivity extends Activity {
public static final String FROM_ME = "fromVitamioInitActivity";
public static final String EXTRA_MSG = "EXTRA_MSG";
public static final String EXTRA_FILE = "EXTRA_FILE";
private ProgressDialog mPD;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
new AsyncTask<Object, Object, Object>() {
protected void onPreExecute() {
mPD = new ProgressDialog(InitActivity.this);
mPD.setCancelable(false);
mPD.setMessage(getString(getIntent().getIntExtra(EXTRA_MSG, R.string.vitamio_init_decoders)));
mPD.show();
}
@Override
protected Object doInBackground(Object... params) {
VitamioConnection.initNativeLibs(getApplicationContext(), getIntent().getIntExtra(EXTRA_FILE, R.raw.libarm), new VitamioConnection.OnNativeLibsInitedListener() {
@Override
public void onNativeLibsInitCompleted(String libPath) {
Log.d("Native libs inited at " + libPath);
uiHandler.sendEmptyMessage(0);
}
});
return null;
}
}.execute();
}
private Handler uiHandler = new Handler() {
public void handleMessage(Message msg) {
mPD.dismiss();
Intent src = getIntent();
Intent i = new Intent();
i.setClassName(src.getStringExtra("package"), src.getStringExtra("className"));
i.setData(src.getData());
i.putExtras(src);
i.putExtra(FROM_ME, true);
startActivity(i);
finish();
}
};
}
代碼說(shuō)明:
主要是VitamioConnection.initNativeLibs,大家自己寫(xiě)一個(gè)初始化的界面即可,線程里調(diào)用這個(gè)代碼即可。
三、Vitamio問(wèn)題匯總
3.1 官網(wǎng)怎么打不開(kāi)?
由于vplayer.net、vov.io等幾個(gè)網(wǎng)站都是我們部門(mén)自己維護(hù)的,目前就一人再改,出點(diǎn)問(wèn)題來(lái)不及弄,你懂的。
3.2 case : 為什么一直停在正在解碼的解碼?
case : Couldn't load vinit: findLibrary returned null
case : Not allowed to bind to service Intent (act=io.vov.vitmio.IVitamioService)
case : io.vov.vitmio.VitamioInstaller$VitamioNotFoundException
case : java.lang.UnsatisfiedLinkError: Library /data/data/null/libs/libvplaer.so not found
defalut : //各種運(yùn)行不了的問(wèn)題
return 基本就一個(gè)問(wèn)題,2012-7-9發(fā)布的Vitamio測(cè)試版本無(wú)法共存的問(wèn)題。無(wú)法與VPlayer共存、無(wú)法與其他Vitamio共存,需要卸載干凈了。注意改一下包名(package)就是一個(gè)新的APK,需要把之前的卸載掉。
3.3 視頻/視頻流(rtp、rtsp等)播放不了。
可能存在以下幾種情況:
a). 視頻本身就存在問(wèn)題,你可以用其他播放器播放一下,是否能正常播放。
b). 本地網(wǎng)速不給力/設(shè)備本事配置過(guò)低,這個(gè)沒(méi)辦法
c). 視頻源卡,本事帶寬不夠,直接訪問(wèn)也很慢,這個(gè)也沒(méi)辦法
d). 用VPlayer與Vitamio同樣都有問(wèn)題,而其他播放器沒(méi)事,這個(gè)可能是我們的問(wèn)題,我們還在持續(xù)改進(jìn),尤其是播在線視頻這部分,這個(gè)可以等新版發(fā)布 :)
e). 等不及了,那就把視頻測(cè)試地址和簡(jiǎn)要說(shuō)明發(fā)給我們(vplayer@yixia.com),我們盡可能的抽時(shí)間來(lái)回復(fù),感謝!
3.4 Vitamio最低支持的Android版本
目前我們?cè)谶\(yùn)行的項(xiàng)目最低支持Android 2.1,示例工程選的Android API Level 是4.1,但不代表只支持4.0以上,大家可從AndroidManifest.xml中看得出:
<uses-sdk android:minSdkVersion="7" android:targetSdkVersion="15" />
如果編譯無(wú)法運(yùn)行的話,把VitamioBundle項(xiàng)目下res/values-v11和values-v14刪掉即可,其他部分稍作改動(dòng)即可。
3.5 為什么會(huì)彈出提示框要求安裝Vitamio Plugin
因?yàn)槟阆螺d和使用的是舊版的Vitamio,請(qǐng)卸載干凈后下載2012-7-9日發(fā)布的版本,請(qǐng)看本文 2.1 下載。
3.6 是否支持硬解碼?
目前支持硬解碼這部分不是很成熟,也不穩(wěn)定,暫時(shí)不提供。
3.7 什么時(shí)候發(fā)布新版本?
誒,,,請(qǐng)關(guān)注我們官方微博(http://weibo.com/vitamio )??!目前集中精力再弄VPlayer,新版順利上線后應(yīng)該能加快Vitamio的發(fā)布速度,所以大家可以先用VPlayer來(lái)測(cè)試。
3.8 E/Vitamio(1557): java.io.FileNotFoundException: No content provider: (2012-8-6)
這個(gè)不是錯(cuò)誤,是正常的處理?,F(xiàn)在播放視頻是這樣做的:先把 URL 當(dāng)做一個(gè) ContentProvider 來(lái)打開(kāi),如果打不開(kāi),就直接當(dāng)做 URL 來(lái)打開(kāi)
3.9 Vitamio支持哪些指令集的CPU?(2012-09-07)
ARMv6、ARMv6 VFP、ARMv7 VFPV3、ARMv7 NEON(注意:2012-8-31發(fā)布的版本不支持ARMv6的CPU,VPlayer已經(jīng)不支持,但下次發(fā)版Vitamio會(huì)加上)
3.10 播放網(wǎng)絡(luò)視頻突然中斷的問(wèn)題
可能是視頻網(wǎng)站做了限制,加入了一些不能播的地址,目前Vitamio的處理是播不了就直接關(guān)閉了,后續(xù)版本會(huì)改進(jìn),直接跳過(guò)。
3.11 拖動(dòng)進(jìn)度條出現(xiàn)回幀現(xiàn)象(本地播放,比如,拖到到1:20,但是播放時(shí),跳到1:15) 【2012-11-20 新增】
這是正?,F(xiàn)象,不是播放器的問(wèn)題。默認(rèn)seek要到最近的關(guān)鍵幀,不能保證任何時(shí)間點(diǎn)上都有關(guān)鍵幀 。除非你是intra-only 的編碼方式 。(——來(lái)自GoogleGeek)
四、已知問(wèn)題和注意事項(xiàng)(新版指2012-8-31發(fā)布的版本)
4.1 混淆工程時(shí)注意,需要忽略vitamio里面的類庫(kù)!(2012-8-1 update)
-keep class io.vov.utils.** { *; }
-keep class io.vov.vitamio.** { *; }
4.2 不能在包含項(xiàng)目里面使用io.vov.vitamio.provider.MediaProvider
否則如果安裝了VPlayer,會(huì)報(bào)沖突的錯(cuò)誤無(wú)法安裝。也就是說(shuō),可以直接使用VPlayer的MediaProvider,或者自己寫(xiě)掃描服務(wù),但是名字不能相同。
五、其他
5.1 調(diào)用VPlayer來(lái)播放視頻的代碼:
private void startPlayer(String url, String title) {
Intent i = new Intent();
i.setComponent(new ComponentName("me.abitno.vplayer.t", "me.abitno.vplayer.VideoActivity"));
i.setAction("me.abitno.vplayer.action.VIEW");
i.setData(Uri.parse(url));
i.putExtra("displayName", title);
startActivity(i);
}
以上就是對(duì)Android Vitamio FAQ音頻播放的組件詳細(xì)介紹,希望能幫助Android開(kāi)發(fā)音頻播放的朋友。
相關(guān)文章
Android開(kāi)發(fā)MQTT協(xié)議的模型及通信淺析
這篇文章主要W為大家介紹了Android開(kāi)發(fā)MQTT協(xié)議的模型及通信淺析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03
Mac中Eclipse連不上Android手機(jī)的解決方法
這篇文章主要介紹了Mac中Eclipse連不上Android手機(jī)的解決方法,本文方法同樣適用其它的移動(dòng)設(shè)備,需要的朋友可以參考下2015-06-06
Android kotlin語(yǔ)言實(shí)現(xiàn)刪除文件的解決方案
這篇文章主要介紹了Android kotlin語(yǔ)言實(shí)現(xiàn)刪除文件的解決方案,在項(xiàng)目開(kāi)發(fā)過(guò)程中,尤其是需要跨平臺(tái)協(xié)作的項(xiàng)目,那么刪除用戶指定的文件的這種操作就顯得尤為重要了,需要的朋友可以參考下2025-02-02
Android開(kāi)發(fā)實(shí)現(xiàn)ListView和adapter配合顯示圖片和文字列表功能示例
這篇文章主要介紹了Android開(kāi)發(fā)實(shí)現(xiàn)ListView和adapter配合顯示圖片和文字列表功能,涉及Android使用ListView結(jié)合adapter適配器實(shí)現(xiàn)圖文顯示功能相關(guān)的布局、解析、權(quán)限控制等操作技巧,需要的朋友可以參考下2019-04-04
Android編程操作嵌入式關(guān)系型SQLite數(shù)據(jù)庫(kù)實(shí)例詳解
這篇文章主要介紹了Android編程操作嵌入式關(guān)系型SQLite數(shù)據(jù)庫(kù)的方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了Android操作SQLite數(shù)據(jù)庫(kù)的基本技巧與相關(guān)注意事項(xiàng),需要的朋友可以參考下2016-01-01
Android編程實(shí)現(xiàn)對(duì)文件夾里文件排序的方法
這篇文章主要介紹了Android編程實(shí)現(xiàn)對(duì)文件夾里文件排序的方法,涉及Android文件操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下2016-01-01
Android Studio中使用jni進(jìn)行opencv開(kāi)發(fā)的環(huán)境配置方法
今天小編就為大家分享一篇Android Studio中使用jni進(jìn)行opencv開(kāi)發(fā)的環(huán)境配置方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-08-08
Android實(shí)現(xiàn)支付寶手勢(shì)密碼功能
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)支付寶手勢(shì)密碼功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-03-03

