VLC for android 使用手記

來源:互聯網
上載者:User

標籤:

將vlc-android 中org.videolan.vlc包下面的這幾個class 添加:

Aout.java

BitmapCache.java

EventManager.java

LibVLC.java

LibVlcException.java

TrackInfo.java

Util.java

VLCApplication.java

WeakHandler.java


3.將源碼編譯出的libs下的armeabi-v7a(如果設裝置是arm6 或者以下,是armeabi)檔案夾添加在android工程的libs下面

uri = "rtsp://217.146.95.166:554/live/ch6bqvga.3gp"是我在網上隨便找的一個rtsp 流媒體地址

主要的部分是:

a. mLibVLC = LibVLC.getInstance();    用來擷取mLIbVLC的執行個體,其中會初始化LibVLC,在AndroidManifest.xml中要添加 android:name="org.videolan.vlc.VLCApplication"這樣程式啟動時會調用VLCApplication使其 產生執行個體,不會導致LibVLC.getInstance()出錯。

b.mLibVLC.readMedia(uri, false);調用這一句後如果uri地址可用,流媒體就開始在載入,並且播放,並不需要mLibVLC.play()。

c.mLibVLC.attachSurface(mSurfaceHolder.getSurface(), MainActivity.this,width,height);調用這句的時候如果視頻不顯示,介面突然退出,是因為沒有添加:public void setSurfaceSize(int width, int height, int sar_num, int sar_den)這個函數(我編譯源碼的時候ANDROID_ABI=armeabi-v7a,ANDROID_ABI設定不同這個函數的參數不同),它 在libvlcjni.c 的jni_SetAndroidSurfaceSize函數中調用,用來設定surfaceview大小的。

如果需要硬體解碼,就需要添加以下方法:

[java] view plaincopy

  1. private void enableIOMX(boolean enableIomx){  

  2.     SharedPreferences p = PreferenceManager.getDefaultSharedPreferences(VLCApplication.getAppContext());  

  3.     Editor e = p.edit();  

  4.     e.putBoolean("enable_iomx", enableIomx);  

  5.     LibVLC.restart();  

  6.    }  

將sharedpreferences 的key "enable_iomx‘設定為true,因為libvlcjni.c 中通過函數libvlc_media_t *new_media(jlong instance, JNIEnv *env, jobject thiz, jstring fileLocation, bool noOmx, bool noVideo)調用java 代碼LibVLC.java 中的useIOMX()擷取“enable_iomx”的值,然後判斷是否用硬體解碼。

在調試的過程中還會出現的錯誤是因為:Util.java 中String ANDROID_ABI = properties.getProperty("ANDROID_ABI");調用屬性“ANDROID_ABI”的值時返回的是null導致,這主要 發生在LibVLC.getInstance();時,自己判斷一下,如果為ANDROID_ABI==null,就根據自己的裝置選擇賦值 “armeabi-v7a”或者“armeabi”.


[html] view plaincopy

  1. mEventManger = EventManager.getInstance();  

  2. mEventManger.addHandler(mEventHandler);  

是用來添加播放事件的,當播放視頻出現play,stop,pause等狀態時,會接收到。


VLC for 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.