Android-VitaMio框架使用记录
来源:互联网 发布:我的世界地图数据 编辑:程序博客网 时间:2024/04/29 05:09
前言
之前看了农民伯伯的文章,不得不佩服起来 这个万能的播放器 Vitamio,默默地为这些辛勤的开发者点个赞,
看农民伯伯博客链接 CSDN~~Vitamio Github链接
自己使用经验
第一步使用之前:在github上下载下来Vitamio的依赖包,在AS中引用过来.不会引用 自行百度吧….
第二步:自己创建一个PlayVideoOnlineActivity一个播放视频的类,来做测试,记得Mainister注册下和加上权限配置.
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Vitamio.isInitialized(this); setContentView(R.layout.activity_play_video);// m_actionBar.hide(); playviedo(); }
这一步就是 中 在serView 之前 初始化 ,也可以在 Vitamio.isInitialized(this); 这句话初始化,看看里面的源代码
public static boolean isInitialized(Context ctx) { vitamioPackage = ctx.getPackageName(); vitamioLibraryPath = ContextUtils.getDataDir(ctx) + "libs/"; File dir = new File(getLibraryPath()); if (dir.exists() && dir.isDirectory()) { String[] libs = dir.list(); if (libs != null) { Arrays.sort(libs); for (String L : getRequiredLibs()) { if (Arrays.binarySearch(libs, L) < 0) { Log.e("Native libs %s not exists!", L); return false; } } File lock = new File(getLibraryPath() + LIBS_LOCK); BufferedReader buffer = null; try { buffer = new BufferedReader(new FileReader(lock)); int appVersion = ContextUtils.getVersionCode(ctx); int libVersion = Integer.valueOf(buffer.readLine()); Log.i("isNativeLibsInited, APP VERSION: %d, Vitamio Library version: %d", appVersion, libVersion); if (libVersion == appVersion) return true; } catch (IOException e) { Log.e("isNativeLibsInited", e); } catch (NumberFormatException e) { Log.e("isNativeLibsInited", e); } finally { IOUtils.closeSilently(buffer); } } } return false; }
看了下源码这里是 在本地创建一个初始化lib文件夹
接下来就是给 VideoView进出初始化配置
mVideoView = (VideoView) findViewById(R.id.surface_view); // mVideoView.setVideoURI(Uri.parse(path)); mVideoView.setVideoPath("http://movie.ks.js.cn/flv/other/2014/06/20-2.flv");//设置视频网络地址 mVideoView.setMediaController(new MediaController(this)); //视频播放器的准备,此时播放器已经准备好了,此处可以设置一下播放速度,播放位置等等 mVideoView.setVideoLayout(VideoView.VIDEO_LAYOUT_STRETCH,0); mVideoView.requestFocus();
这里是初始化配置,设置网络地址地方.不得不说 这个万能播放器支持那么多格式,有这么多格式 自动解析.
还是看看源码里是怎么写的:
public void setVideoURI(Uri uri, Map<String, String> headers) { mUri = uri; mHeaders = headers; mSeekWhenPrepared = 0; openVideo();//播放视频 requestLayout(); invalidate(); }
找啊找阿,终于找到匹配各种格式地方了
public void setDataSource(Context context, Uri uri, Map<String, String> headers) throws IOException, IllegalArgumentException, SecurityException, IllegalStateException { if (context == null || uri == null) throw new IllegalArgumentException(); String scheme = uri.getScheme(); if (scheme == null || scheme.equals("file")) { setDataSource(FileUtils.getPath(uri.toString())); return; } try { ContentResolver resolver = context.getContentResolver(); mFD = resolver.openAssetFileDescriptor(uri, "r"); if (mFD == null) return; setDataSource(mFD.getParcelFileDescriptor().getFileDescriptor()); return; } catch (Exception e) { closeFD(); } setDataSource(uri.toString(), headers); }
这里应该是设置 视频源,
在下一层就是 调本地C的方法
/** * Sets the data source (file-path or http/rtsp/mms URL) to use. * * @param path the path of the file, or the http/rtsp/mms URL of the stream you * want to play * @param keys AVOption key * @param values AVOption value * @throws IllegalStateException if it is called in an invalid state */private native void _setDataSource(String path, String[] keys, String[] values) throws IOException, IllegalArgumentException, IllegalStateException;
这里支持 http.rtsp.mms流协议传输,这个MeidiaPlayer就调底层so库的方法了…JNI编程不太了解~
返回来看下 之前的
mVideoView.setMediaController(new MediaController(this));
这里就是 设置 媒体的控制器 进度条 以及时间之类的,一开始跑不起来 原来漏了这一句
其他东西 就是一些监听器,更高级的用法还是看农民伯伯的文章后续在研究研究
有什么说错的地方 还望网友指教~~
0 0
- Android-VitaMio框架使用记录
- Android Vitamio框架基本使用
- Android视频框架--Vitamio
- Android使用Vitamio框架自定义视频播放器
- 关于使用Android开发Vitamio框架带来的一个“惊喜”
- android vitamio的使用
- Vitamio android/ios 多媒体框架
- android视频播放框架Vitamio
- Android之Vitamio视频框架
- 视频框架 Vitamio 使用教程
- vitamio视频播放框架使用
- vitamio视频框架使用详解
- 59.Vitamio框架的使用
- Vitamio 视频框架使用心得
- vitamio框架简单的使用
- vitamio for android的使用
- Android Vitamio的使用解析
- Android Studio 下导入 Vitamio 框架
- 带你走进分辨率/像素的世界
- Mybatis打印sql预计log4配置
- 如何处理scanf()函数误输入造成程序死锁或出错(fflush(stdin))
- POJ 2096 Collecting Bugs(概率DP求期望)
- JS实现选项卡
- Android-VitaMio框架使用记录
- 经典提升算法——Adaboost
- mongodb的导出导入备份和恢复(全)
- Qt信号与槽关联的问题
- 如何理解回调函数 CallBack
- SVM详解
- 定时器的使用
- Eclipse+CXF框架开发Web服务实战
- read.table()读取数据文件