android videoview属性,Android VideoView
VideoView,用于播放一段视频媒体,它继承了SurfaceView,位于"android.widget.VideoView",是一个视频控件。
既然是播放一段视频,那么不可避免的要涉及到一些开始、暂停、停止等操作,VideoView也为开发人员提供了对应的方法,这里简单介绍一些常用的:
int getCurrentPosition():获取当前播放的位置。
int getDuration():获取当前播放视频的总长度。
isPlaying():当前VideoView是否在播放视频。
void pause():暂停
void seekTo(int msec):从第几毫秒开始播放。
void resume():重新播放。
void setVideoPath(String path):以文件路径的方式设置VideoView播放的视频源。
void setVideoURI(Uri uri):以Uri的方式设置VideoView播放的视频源,可以是网络Uri或本地Uri。
void start():开始播放。
void stopPlayback():停止播放。
setMediaController(MediaController controller):设置MediaController控制器。
setOnCompletionListener(MediaPlayer.onCompletionListener l):监听播放完成的事件。
setOnErrorListener(MediaPlayer.OnErrorListener l):监听播放发生错误时候的事件。
setOnPreparedListener(MediaPlayer.OnPreparedListener l)::监听视频装载完成的事件。
上面的一些方法通过方法名就可以了解用途。和MediaPlayer配合SurfaceView播放视频不同,VideoView播放之前无需编码装载视频,它会在start()开始播放的时候自动装载视频。并且VideoView在使用完之后,无需编码回收资源。
有播放视频时需要获取视频的某一帧的图片进行操作,这时MediaMetadataRetriever类就派上了用场:
MediaMetadataRetriever mediaMetadataRetriever = new MediaMetadataRetriever();
mediaMetadataRetriever.setDataSource(dataPath);
获取一帧的关键代码为:
Bitmap bitmap = mediaMetadataRetriever.getFrameAtTime(timeMs * 1000, MediaMetadataRetriever.OPTION_CLOSEST);
public Bitmap getFrameAtTime(long timeUs, int option)
第一个参数是传入时间,只能是us(微秒)
第二个参数:
OPTION_CLOSEST 在给定的时间,检索最近一个帧,这个帧不一定是关键帧。
OPTION_CLOSEST_SYNC 在给定的时间,检索最近一个同步与数据源相关联的的帧(关键帧)。
OPTION_NEXT_SYNC 在给定时间之后检索一个同步与数据源相关联的关键帧。
OPTION_PREVIOUS_SYNC 顾名思义,同上
这里为了提取我们想要的帧,不使用关键帧,所以用 OPTION_CLOSEST .
最终的测试结果并不理想,连续取20帧画面,其中真正有效的只有7张,其余都是重复的,原因为即使是使用参数OPTION_CLOSEST,程序仍然会去取指定时间临近的关键帧,如10s-15s总是取同一帧,因此这种方法不可用。
提高视频的质量或许有效,未尝试。
补充MediaMetadataRetriever的其他知识
// 取得视频的总长度(单位为毫秒)
String time = mediaMetadataRetriever. extractMetadata( MediaMetadataRetriever. METADATA_KEY_DURATION);
MediaMetadataRetriever主要用来取缩略图。
android videoview属性,Android VideoView相关推荐
- android layout_width 属性,android:layout_weight属性详解
在android开发中LinearLayout很常用,LinearLayout的内控件的android:layout_weight在某些场景显得非常重要,比如我们需要按比例显示.android并没用提 ...
- android preference属性,Android进阶——Preference详解之Preference系的基本应用和管理(二)...
并非我们第一次打开相应界面之后就会自动创建对应的SharedPreferences文件,而是在我们改变了原有状态时候喎�"/kf/ware/vc/" target="_b ...
- android videoview属性,Android VideoView无法播放视频错误,特别是.mp4
@H_502_1@我正在尝试在我的应用程序中播放视频,但我得不能播放此视频错误.关于这一点,我遇到了很多线索.他们要求在玩家准备好后开始播放视频.我也是这样做的.但无法弄清楚问题.请在下面找到我的代码 ...
- Android 布局属性 Android:layout_weight 总结
Android 为我们提供了五种布局方式 线性布局:LinerLayout 表格布局:TableLayout 相对布局:RelativeLayout 绝对布局:AbsoluteLayout 帧布局:F ...
- android布局属性,Android 布局学习之——LinearLayout属性baselineAligned的作用及baseline...
相信大家对LinearLayout已经相当熟悉,但你们是否了解它的属性baselineAligned呢? Android官方文档是这么描述的: 那到底这个属性是做什么用的呢? baselineAlig ...
- 没有android:padding属性,android pading的四个值,为负值时,什么情况下,有效啊
在我的理解中, 设置 padding 为负值和设置为0在显示上不会有什么区别, 所以, 你想要的效果是什么? OK, 之前没有自习考虑这个问题, 现在帮你分析一下. 首先, 从 xml 中解析 pad ...
- 没有android:padding属性,android自定义无上下padding的textview
因为工作需要需要无上下padding的textview,经过查阅资料,很多说xml中的配置includefontpadding=false,但无法实现0 padding的需要. 也有说通过设置负数的m ...
- Android 自定义控件属性
前言 自定义控件经常需要一些特殊的配置,添加一些自定义属性. 1. 自定义属性 attrs.xml文件,所有自定义属性需要在文件中添加declare-styleable节点来声明,例如定义属性back ...
- android @style/name,android style和attr的用法
一 .对style和attr的引用 1. 当引用平台的style做为style的parent时,[email protected]:style/主题" == [email protecte ...
最新文章
- CBV 验证装饰器的使用
- Netflow/IPFIX 流量收集与分析
- Hibernate配置文件,省的到处找了
- autorelease使用注意事项
- 【Pytorch学习】用pytorch搭建第一个神经网络
- C++ code:string stream(string流)学习大全
- 【第一季】CH07_FPGA_RunLED创建VIVADO工程实验
- layer弹出层 获取index
- IT编程从零开始学入门到精通需要多久
- 景区分时实名预约系统
- 汽车金融信用评分卡模型-论文毕业设计复现
- 从零到上亿用户,我是如何一步步优化MySQL数据库的?(建议收藏)
- 父亲节php源码,剑盟社区-【父亲您在,世界就在】6月20日父亲节系列活动
- 快来带您了解中秋节的前世今生
- 在 Half-Life MOD 中创建自己的武器及弹药
- 分享一个微信公众号id转换为biz的接口
- 【榜单公布】10·24征文活动结果出炉!
- Vue项目provide和inject的使用
- 沈阳市房地产市场信息系统数据容灾与异地备份
- SQL Server HA - 数据库镜像 (Mirroring)
热门文章
- idea右键项目没有git 【解决方法】
- 在项目组也有段时间了,你对系统架构师了解过吗?
- leetcode 467. Unique Substrings in Wraparound String | 467. 环绕字符串中唯一的子字符串(动态规划)
- ACM练习 链表排序 II 【WA】
- dart系列之:安全看我,dart中的安全特性null safety
- Intellij IDEA中安装使用PlantUML画时序图、类图等
- 可迭代协议与for-of循环
- 【通俗易懂】什么是状态机?
- 【千字分析】剑指 Offer 05. 替换空格
- 1036 跟奥巴马一起编程 (15分)——16行代码AC