VLC for android 使用手记

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

时间: 2024-11-25 21:36:45

VLC for android 使用手记的相关文章

Vlc for Android 全面阐述

简单介绍 Vlc for android是一款开源安卓播放器.具备播放多媒体文件.光盘.设备以及网络流媒体协议等功能,支持ARMv7 CPU或一个x86 CPU的设备,全部播放控制特性都已经开发完整. 以下将介绍怎样获代替码.编译.vlc原理.缩小延迟.加入截图和录制视频.多路播放等. 具体解释 1.获代替码 官网源代码下载:http://mirror.us.leaseweb.net/videolan/ git获取:clone from git://git.videolan.org/vlc-po

Linux下编译VLC for Android源代码总结

转:http://blog.chinaunix.net/uid-26611383-id-3678766.html 由于项目需要,需要一个在android平台能够支持RTSP协议的播放器,由于之前没有android平台的经验,所以找了著名的video LAN的VLC播放器,更令人惊奇的是这款播放器居然还是完全开源的.在此向那些开源软件的作者和组织致以崇高的敬意,是你们的存在使得计算机软件产业蓬勃发展,你们帮助了很多囊中羞涩的个人和企业,让他们也有机会用上高质量的软件,同时不可避免的吸引了一批有志之

基于 VLC 的 Android 多媒体解决方案

前段时间项目中需要在 Android 中播放视频.流媒体.查看监控,就研究了一下 Android 多媒体解决方案. 查找了一下,大致有如下几种: Android MediaPlayer FFmpeg Google ExoPlayer Vitamio VLC Android MediaPlayer 是 Android 内置的播放器,支持格式很有限:3gp mp4,且不支持流媒体. FFmpeg 是一套功能强大的跨平台多媒体解决方案,需要用NDK编译,支持海量格式.流媒体. Google ExoPl

VLC for android 编译错误

在Mac os 10.10.2上编译vlc for android的时候,出现如下错误: $ sh compile.sh *** No ANDROID_ABI defined architecture: using ARMv7 Downloading gradle % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 354 100 354 0

VLC For Android Ubuntu14.04编译环境搭建

VLC多媒体播放器(英语:VLC media player,最初为VideoLAN Client,是VideoLAN计划的开放源代码多媒体播放器.)支持众多音频与视频解码器及文件格式,并支持DVD影音光盘,VCD影音光盘及各类流协议,它是一个开源并且支持多种平台. 官网:https://wiki.videolan.org/AndroidCompile#Get_VLC_Source 环境: 宿主机:Windows XP 虚拟机:VirtualBox-4.3.12-93733-Win.exe 虚拟机

Android mainfests手记

#Mainfests常用手记 一.常用权限 <!-- 允许程序打开网络套接字 --> <uses-permission android:name="android.permission.INTERNET" /> <!-- 允许程序设置内置sd卡的写权限 --> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> <

Android开发手记(29) 基于Http的LaTeX数学公式转换器

本文将讲解如何通过codecogs.com和Google.com提供的API接口来将LaTeX数学函数表达式转化为图片形式.具体思路如下: (1)通过EditText获取用户输入的LaTeX数学表达式,然后对表达式格式化使之便于网络传输. (2)将格式化之后的字符串,通过Http请求发送至codecogs.com或者Google.com. (3)获取网站返回的数据流,将其转化为图片,并显示在ImageView上. 具体过程为: 1.获取并格式化LaTeX数学表达式 首先,我们在这个网站输入LaT

Android开发手记(22) 传感器的使用

Android的传感器主要包括八大传感器,他们分别是:加速度传感器(accelerometer).陀螺仪(gyroscope).方向传感器(orientation).磁力传感器(magnetic field).环境光照传感器(light).温度传感器(temperature).距离传感器(proximity)和压力传感器(pressure).本文先对传感器的使用做一个总体的介绍,然后再详细介绍每一种传感器的具体参数获取. 〇.总体介绍 Android传感器的使用,先通过SensorManager

Android开发手记(21) 遍历文件夹

我们在遍历文件夹的时候由于涉及到SD卡相关操作,所以我们需要添加如下权限: <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS"/> 首先,需要检查SD卡挂载状态: boolean sdCard