文档章节

VLC for android 使用手记

g
 goover1001
发布于 2015/02/03 15:47
字数 472
阅读 4356
收藏 2

将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等状态时,会接收到。


© 著作权归作者所有

g
粉丝 0
博文 14
码字总数 6797
作品 0
成都
私信 提问
VLC for Android : 编译问题 & 解决办法

敬告: 编译前尽量安装/更新必要的软件:vlc-dep, android-sdk, android-ndk 1. libmpeg2 下载源错误, 必须修改$(vlc-setup)/vlc/contrib/src/libmpeg2/rules.mak, 内容如下: #$(vlc-setup...

有初啊
2013/03/30
4.7K
6
vlc android 代码编译

系统:ubuntu12.04 代码:git://git.videolan.org/vlc-ports/android.git 代码版本:375646994d0602 年初的时候搞了三个月的vlc android。昨天看到vlc android的beta版本发布了,决定编译一个...

Kobe_Gong_5
2013/08/25
918
1
找资深android工程师解决vlc集成中遇到的GnuTLS漏洞问题

需要满足本需求所述能力要求的高级开发工程师驻场工作,按我方要求完成相关任务。 【工作职责】 1、我们开发了一款Android视频播放APP,解码器用的是VLC-Android开源项目,发布到Google Play...

atwal
2016/01/21
13
0
ndk vlc播放器

最近开始研究Android版的vlc,但是有个问题已经让我郁闷很久不会解决,希望路过的高手能指导一下,问题如下 在编译ndk,使用ndk-build clean,效果如下: ####@ubuntugavin:~/vlc_programe/...

gavin_jin
2014/06/19
2.6K
3
VLC 2.2.0 多版本发布!

VLC 2.2.0 是 "Weatherwax" 分支的第一个版本。此版本能更好的支持 Ultra HD codecs,VP9 和 H.265/HEVC,包括编码。更多的新特性说明请看 VLC 2.2. 新功能说明。此版本和 iOS,Android,Win...

oschina
2015/02/28
3.9K
5

没有更多内容

加载失败,请刷新页面

加载更多

RxJava进行单元测试的方式

@Test public void completeTask_retrievedTaskIsComplete() { // Given a new task in the persistent repository final Task newTask = new Task(TITLE, ""); ......

SuShine
3分钟前
1
0
正则表达式大全

检验手机号码 # 要求:手机号码必须为11位数字,以1开头,第二位为1或5或8。import redef verify_mobile(): mob = input("请输入手机号码:") ret = re.match(r"1[358]\d{9}", m......

彩色泡泡糖
7分钟前
1
0
QT之border-image属性

一、border-image的兼容性 border-image可以说是CSS3中的一员大将,将来一定会大放光彩,其应用潜力真的是非常的惊人。可惜目前支持的浏览器有限,仅Firefox3.5,chrome浏览器,Safari3+支持...

shzwork
8分钟前
2
0
Kubernetes Operator简易教程

1. 安装operator-sdk //安装 operator-sdk$ apt-get install operator-sdk.....$ operator-sdk versionoperator-sdk version: v0.7.0$ go versiongo version go1.11.4 darwin/amd64 2......

Robotcl_Blog
8分钟前
2
0
再谈DAG任务分解和Shuffle RDD

1、DagScheduler分析 DagScheduler功能主要是负责RDD的各个stage的分解和任务提交。Stage分解是从触发任务调度过程的finalStage开始倒推寻找父stage,如果父stage没有提交任务则循环提交缺失...

守望者之父
14分钟前
2
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部