使用Vitamio播放rtsp流媒体并实现动态截图
2014-09-03 00:00
459 查看
Vitamio是北京的一家企业开发多媒体库 主要是面向移动领域的
自己的项目里遇到videoview截图问题
传统的view用getDrawableCache可以
但是动态的surfaceview或者videoview 还有地图的mapview 等等都是不行的
android的截图其实门道很多 有个黑客比赛貌似就是免root实现截图功能
Vitamio是我找到一个蛮适合截videoview第三例子
首先在官网下载最新版4.2.2示例 解压后有两个主要的文件夹:vitamio 和 vitamio-demo
自己按照包名各自新建两个工程(示例没有.project文件无法直接导入)
对应目录拷入文件 注意一定要放在同一文件夹
vitamio设置成is Liberary
vitamio-demo引入vitamio作为库
运行可以看到里面的主要功能
老版本API主要是建立在videoview上的 现在转向mediaplayer了
其实这两个类在android源码里都有对应的 vitamio应该是在其基础上重写了
又加入了一些解码库在它的so文件里
Activity新建的时候加入so库检测:
初始化MediaPlayer:
截图代码:
注: 截图的时候 发现bitmap保存为jpg很正常 但是保存png会花屏 我估计和流的格式有关系
自己的项目里遇到videoview截图问题
传统的view用getDrawableCache可以
但是动态的surfaceview或者videoview 还有地图的mapview 等等都是不行的
android的截图其实门道很多 有个黑客比赛貌似就是免root实现截图功能
Vitamio是我找到一个蛮适合截videoview第三例子
首先在官网下载最新版4.2.2示例 解压后有两个主要的文件夹:vitamio 和 vitamio-demo
自己按照包名各自新建两个工程(示例没有.project文件无法直接导入)
对应目录拷入文件 注意一定要放在同一文件夹
vitamio设置成is Liberary
vitamio-demo引入vitamio作为库
运行可以看到里面的主要功能
老版本API主要是建立在videoview上的 现在转向mediaplayer了
其实这两个类在android源码里都有对应的 vitamio应该是在其基础上重写了
又加入了一些解码库在它的so文件里
Activity新建的时候加入so库检测:
if (!LibsChecker.checkVitamioLibs(this)) return;
初始化MediaPlayer:
mMediaPlayer = new MediaPlayer(this); mMediaPlayer.setDataSource(url);//url为rtsp视频地址 mMediaPlayer.setDisplay(holder); mMediaPlayer.prepareAsync(); mMediaPlayer.setOnBufferingUpdateListener(this); mMediaPlayer.setOnCompletionListener(this); mMediaPlayer.setOnPreparedListener(this); mMediaPlayer.setOnVideoSizeChangedListener(this); setVolumeControlStream(AudioManager.STREAM_MUSIC);
截图代码:
<span style="white-space:pre"> </span>Bitmap dd = mMediaPlayer.getCurrentFrame();//截图方法 if (mMediaPlayer.isPlaying()) { try { String name = new DateFormat().format( "yyyyMMdd_hhmmss", Calendar.getInstance(Locale.CHINA)) + ".jpg"; String fileName = getSDPath() + "/" + name;//getSDPath()获取SD卡目录string方法 FileOutputStream b = new FileOutputStream(fileName); dd.compress(Bitmap.CompressFormat.JPEG, 100, b); b.flush(); b.close(); Toast.makeText(VideoPlayerActivity.this, "截图成功", Toast.LENGTH_LONG).show(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } else Toast.makeText(VideoPlayerActivity.this, "视频未播放,请稍候截图", Toast.LENGTH_LONG).show();
注: 截图的时候 发现bitmap保存为jpg很正常 但是保存png会花屏 我估计和流的格式有关系
相关文章推荐
- 使用Vitamio播放rtsp流媒体并实现动态截图
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP
- 使用"函数递归"实现基于php和MySQL的动态树型菜单
- 使用Iptable实现动态防火墙
- 使用JAVA中的动态代理实现数据库连接池
- 使用JAVA中的动态代理实现数据库连接池
- 使用反射实现根据名称动态创建窗体的几种方法。
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP(转)
- 如何使用iframe实现calendar动态显示,
- 如何使用PB实现动态报表?
- Java初学者如何迈出AOP第一步--使用Java 动态代理实现AOP
- 使用动态滤镜来实现淡入效果
- 使用动态JavaScript实现多级菜单联动时不刷新页面的方法
- 使用Java动态代理实现AOP
- 使用反射在.NET中实现动态工厂
- 关于统计的一个sql问题,使用动态sql语句实现。
- 使用JavaScript实现动态改变控件大小
- 使用CODEDOM动态实现代码的生成,编译
- 使用JAVA中的动态代理实现数据库连接池
- 使用反射在NET中实现动态工厂(第一部分)