前言
VideoView是Vitamio最重要的类之一,使用方法与系统的VideoView差不多,提供诸多方法供开发者调用,实现各种强大的播放功能,例如外挂字幕,画面缩放、设置画面质量等。
声明
欢迎转载,但请保留文章原始出处:)
Vitamio:http://www.vitamio.org
农民伯伯:
正文
VideoView
整理:农民伯伯
类概述
public classVideoView extends SurfaceView implementsMediaController.MediaPlayerControl
用于播放视频文件。VideoView可以加载各种来源的图像(如资源或ContentProvider),注意计算视频尺寸,以便在任意布局管理器中使用,它还提供了诸如缩放等显示选项。
VideoView也提供封装了许多MediaPlayer的方法,例如getVideoWidth、setSubShown。
常量
public static final intVIDEO_LAYOUT_ORIGIN
缩放参数,原始画面大小。
常量值:0
public static final intVIDEO_LAYOUT_SCALE
缩放参数,画面全屏。
常量值:1
public static final intVIDEO_LAYOUT_STRETCH
缩放参数,画面拉伸。
常量值:2
公共方法
public voidsetVideoLayout(int layout, floataspectRatio)
参数
layout 缩放参数
aspectRation宽高比,为0将自动检测。
public booleanisValid()
Surface是否有效。参见Surface的isValid方法。
public voidsetVideoPath(String path)
设置视频路径。
public void setVideoURI(Uriuri)
设置视频URI。(可以是网络视频地址)
public voidstopPlayback()
停止视频播放,并释放资源。
public voidsetMediaController(MediaControllercontroller)
设置媒体控制器。
参数
controller 媒体控制器,注意是io.vov.vitamio.widget.MediaController。
public voidsetOnPreparedListener(OnPreparedListenerl)
注册一个回调函数,在视频预处理完成后调用。在视频预处理完成后被调用。此时视频的宽度、高度、宽高比信息已经获取到,此时可调用seekTo让视频从指定位置开始播放。
public voidsetOnCompletionListener(OnCompletionListenerl)
注册一个回调函数,视频播放完成后调用。
public voidsetOnErrorListener(OnErrorListener l)
注册一个回调函数,在异步操作调用过程中发生错误时调用。例如视频打开失败。
public voidsetOnBufferingUpdateList
注册一个回调函数,在网络视频流缓冲变化时调用。
public voidsetOnSeekCompleteListene
注册一个回调函数,在seek操作完成后调用。
public voidsetOnSubtitleUpdateListe
注册一个回调函数,在字幕需要显示时调用。
public voidsetOnInfoListener(OnInfoListener l)
注册一个回调函数,在有警告或错误信息时调用。例如:开始缓冲、缓冲结束、下载速度变化。
public booleanonTouchEvent(MotionEvent ev)
处理显示/隐藏MediaController。
public voidstart()
开始播放。
public voidpause()
暂停播放。
public voidsuspend()
挂起(暂时没有实现功能)
public voidresume()
恢复播放。
public longgetDuration()
获取视频播放时长。
public longgetCurrentPosition()
获取当前播放位置。
public void seekTo(longmsec)
设置播放位置。
参数
msec 位置
public booleanisPlaying()
是否正在播放。
public intgetBufferPercentage()
获取缓冲百分比。
public intgetVideoWidth()
获取视频宽度。
public intgetVideoHeight()
获取视频高度。
public floatgetVideoAspectRatio()
设置视频宽高比例。没有视频或者宽高不正确返回0。
public voidsetVideoQuality(int quality)
设置视频质量。
参数
quality 参见MediaPlayer的常量:VIDEOQUALITY_LOW(流畅)、VIDEOQUALITY_MEDIUM(普通)、VIDEOQUALITY_HIGH(高质)。
public voidsetBufferSize(int bufSize)
设置视频缓冲大小。默认1024KB,单位byte
public booleanisBuffering()
检测是否缓冲完毕。
public voidsetMetaEncoding(String encoding)
设置元数据编码。例如:UTF-8
public StringgetMetaEncoding()
获取元数据编码。
public HashMapgetAudioTrackMap(String encoding)
获取视频中嵌入的音轨。例如:English
public intgetAudioTrack()
设置播放音轨编号。
public voidsetAudioTrack(int audioIndex)
设置音轨编号,必须使用getAudioTrackMap的返回值。
public voidsetSubShown(boolean shown)
设置是否显示字幕。
参数
shown true表示显示字幕
public voidsetSubEncoding(String encoding)
设置字幕编码。
参数
encoding 字幕编码。如果为null将自动检测。
public intgetSubLocation()
获取字幕位置类型。0为内嵌字幕,1为外挂字幕。
public voidsetSubPath(String subPath)
设置外挂字幕路径。必须是本地文件路径。
public StringgetSubPath()
获取外挂字幕路径。
public void setSubTrack(inttrackId)
设置字幕编号。必须是getSubTrackMap的返回值。
public intgetSubTrack()
获取字幕编号。
public HashMapgetSubTrackMap(String encoding)
获取视频内嵌字幕集合。
参数
encoding 格式化字符串编码。如果为null将自动检测。
返回值
返回字幕名称和字幕编号组成的Map。
public booleancanPause()
是否可暂停。(暂时没有实现功能)
public booleancanSeekBackward()
(暂时没有实现功能)
public booleancanSeekForward()
(暂时没有实现功能)
受保护方法
protected booleanisInPlaybackState()
是否处于正在播放的状态。
参考
结束
具体效果,大家可参照VPlayer播放的设置界面。