Android 開發音頻組件(Vitamio FAQ)詳細介紹_Android

來源:互聯網
上載者:User

 一、Vitamio介紹

  1.1 Vitamio是什嗎?

   Vitamio是Android平台視音頻播放組件,支援播放幾乎格式的視頻以及主流網路視頻流(http/rtsp/mms等),詳細的中文介紹: 這裡。

   Vitamio官網:http://vitamio.org/

   Vitamio微博:http://weibo.com/vitamio 

   VPlayer官網:http://vplayer.net

   Vitamio豆瓣:http://site.douban.com/145815/

  1.2 關於Vitamio的名字(摘自豆瓣官網)

   Vitamio 來源於英文單詞Vitamin(維他命),希望Vitamio對於安卓多媒體開發人員的重要性,就像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 關於Vitamio的由來(摘自豆瓣官網)

   我們是一撥蔥名勤勞的Coder,我們憎惡煩冗的Android多媒體程式開發,從版本升級到不同設 備,剛坑娘的測試完三星,htc,sony,操,又拿來了v880;我們認為這些討厭的玩意註定會讓我們的生活變得愚蠢,新技術神馬的也是沒有時間去研究 ,最令人髮指的是不能專註於實現自己的創意APP。

   經常沉溺於拯救世界的精神世界,平凡的Coder也能變奇葩。作為最早研究Android媒體工具的團隊,我們決定把我們的Vitamio架構免費出去,助力安卓多媒體開發人員實現自己的創意夢想 :D, 各位少年,我們是來自中國的高品質多媒體架構噢。

   第一版發布日期:2011年9月發布

  1.4 Vitamio相關資料

   從2011年9月發布至今,使用者下載量超過2000W,使用Vitamio的開發人員超過1500位,使用過Vitamio產品有

   國內:搜狐視頻,91熊貓影音(網龍),海底撈,歌華有限 等  

   國外: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有什麼優點?

   a). 強大。支援超多格式視頻和網路視頻播放。(不強大免費也沒用,所以排在第一位)

   b). 個人免費。(但企業使用需要購買授權)

    (Google Play上已有多款基於Vitamio的收費播放器,大家可以在裡面搜尋Vitamio關鍵字)

   c). 無縫整合。僅將Vitamio的Library工程引入即可使用,無需另外下載安裝解碼包(Vitamio的上一個版本是需要單獨下載安裝解碼包)。

   d). 使用簡單。調用非常簡單,方便使用。

   e). 自由定製。播放介面的代碼已完全開放,方便自訂播放介面、進度條等。

   d). 持續更新。2012-7-9發行新一版的內測版本,預計8月初能發布下一個版本。

   e). 服務跟進。Vitamio官方QQ群(171570336),提供開發人員交流和討論。論壇還在開發中。

  1.6 Vitamio背後的團隊

   Vitamio與VPlayer屬同一個團隊、同一個公司(yixia.com)。我們在北京,目前團隊有5名成員,4名開發,1名設計師,以開發VPlayer為主,Vitamio為輔 :)

  1.7 Vitamio與VPlayer什麼關係?

   VPlayer基於Vitamio開發,所以VPlayer能播放的Vitamio也能。

   OPlayer基於Vitamio開發,作為推廣Vitamio的使用例子和示範產品,完全開放原始碼。雖是業餘之作,仍以正式發布到市場為目標。

  1.8 Vitamio與ffmpeg

   FFmpeg提供軟體解碼器和多路輸出(demuxers)。Vitamio使用LGPLv2.1許可下FFmpeg的代碼,代碼可以從這裡下載。

   https://bitbucket.org/ABitNo/ffmpegandroid

 二、Vitamio下載和運行

  2.1 下載

   Vitamio 3.0下載。(2012-10-23更新)

   OPlayer 3.0下載。(2012-10-24更新,沒有taocode賬戶的請註冊一個)

  2.2 運行例子

   解壓後兩個項目:VitamioBundle和Test,其中VitamioBundle是Library(關於Android Library參見這裡),運行Test例子即可。

注意:

   1). 例子使用API 16,沒有安裝升級最新Android 4.1 會報錯,大家設定裡降低至API 14(Android 4.0) 或API 15(Android 4.0.3) 即可。

   2). 工程檔案並沒有gen檔案夾,請大家自行加上。

   3). 先編譯VitamioBundle,後編譯Test。如果仍然有錯誤,把工程Clean一下,依次再編譯一下。

   4). 修改VideoViewDemo視頻路徑為你要測試的視頻路徑。注意,本地視頻用setVideoPath方法,播放網路視頻用setVideoURI方法。

  2.3 整合例子

   不希望以Library的方式引用Vitamio,可以直接把VitamioBundle裡所有的類、資源拷貝至目標項目。注意src、libs、res目錄下的都要拷貝過去,還有AndroidManifest.xml中的配置。

   成功整合例子,大家可以看一下OPlayer的結構。

  2.4 自訂InitActiviy,即正在解壓解碼包進度條介面。

    這裡給出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();  } };}

  代碼說明:

   主要是VitamioConnection.initNativeLibs,大家自己寫一個初始化的介面即可,線程裡調用這個代碼即可。

 三、Vitamio問題匯總

  3.1 官網怎麼打不開?

   由於vplayer.net、vov.io等幾個網站都是我們部門自己維護的,目前就一人再改,出點問題來不及弄,你懂的。

 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 : //各種運行不了的問題

    return 基本就一個問題,2012-7-9發布的Vitamio測試版本無法共存的問題。無法與VPlayer共存、無法與其他Vitamio共存,需要卸載乾淨了。注意改一下包名(package)就是一個新的APK,需要把之前的卸載掉。

  3.3 視頻/視頻流(rtp、rtsp等)播放不了。

   可能存在以下幾種情況:

   a). 視頻本身就存在問題,你可以用其他播放器播放一下,是否能正常播放。

   b). 本地網速不給力/裝置本事配置過低,這個沒辦法

   c). 視頻源卡,本事頻寬不夠,直接存取也很慢,這個也沒辦法

   d). 用VPlayer與Vitamio同樣都有問題,而其他播放器沒事,這個可能是我們的問題,我們還在持續改進,尤其是播線上視頻這部分,這個可以等新版發布 :)

   e). 等不及了,那就把視頻測試地址和簡要說明發給我們(vplayer@yixia.com),我們儘可能的抽時間來回複,感謝!

  3.4 Vitamio最低支援的Android版本

   目前我們在啟動並執行項目最低支援Android 2.1,樣本工程選的Android API Level 是4.1,但不代表只支援4.0以上,大家可從AndroidManifest.xml中看得出:

   <uses-sdk  android:minSdkVersion="7"   android:targetSdkVersion="15" />

 如果編譯無法啟動並執行話,把VitamioBundle項目下res/values-v11和values-v14刪掉即可,其他部分稍作改動即可。

  3.5 為什麼會彈出提示框要求安裝Vitamio Plugin

   因為你下載和使用的是舊版的Vitamio,請卸載乾淨後下載2012-7-9日發布的版本,請看本文 2.1 下載。

  3.6 是否支援硬解碼?

   目前支援硬解碼這部分不是很成熟,也不穩定,暫時不提供。

  3.7 什麼時候發布新版本?

   誒,,,請關注我們官方微博(http://weibo.com/vitamio )!!目前集中精力再弄VPlayer,新版順利上線後應該能加快Vitamio的發布速度,所以大家可以先用VPlayer來測試。

  3.8 E/Vitamio(1557): java.io.FileNotFoundException: No content provider: (2012-8-6)
   這個不是錯誤,是正常的處理。現在播放視頻是這樣做的:先把 URL 當做一個 ContentProvider 來開啟,如果打不開,就直接當做 URL 來開啟

  3.9 Vitamio支援哪些指令集的CPU?(2012-09-07)

   ARMv6、ARMv6 VFP、ARMv7 VFPV3、ARMv7 NEON(注意:2012-8-31發布的版本不支援ARMv6的CPU,VPlayer已經不支援,但下次發版Vitamio會加上)

  3.10 播放網路視頻突然中斷的問題

   可能是視頻網站做了限制,加入了一些不能播的地址,目前Vitamio的處理是播不了就直接關閉了,後續版本會改進,直接跳過。

  3.11 拖動進度條出現回幀現象(本地播放,比如,拖到到1:20,但是播放時,跳到1:15) 【2012-11-20 新增】

   這是正常現象,不是播放器的問題。預設seek要到最近的主要畫面格,不能保證任何時間點上都有主要畫面格 。除非你是intra-only 的編碼方式 。(——來自GoogleGeek)

 四、已知問題和注意事項(新版指2012-8-31發布的版本)

  4.1 混淆工程時注意,需要忽略vitamio裡面的類庫!(2012-8-1 update)

 -keep class io.vov.utils.** { *; } -keep class io.vov.vitamio.** { *; }

  4.2  不能在包含項目裡面使用io.vov.vitamio.provider.MediaProvider

   否則如果安裝了VPlayer,會報衝突的錯誤無法安裝。也就是說,可以直接使用VPlayer的MediaProvider,或者自己寫掃描服務,但是名字不能相同。

 五、其他

  5.1 調用VPlayer來播放視頻的代碼:

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);}

 以上就是對Android Vitamio FAQ音頻播放的組件詳細介紹,希望能協助Android開發音頻播放的朋友。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.