8.Helios_SysMediaPlayer实现结构
2017-03-19 19:14:29 0 举报
Helios_SysMediaPlayer是一个用于播放音频和视频文件的媒体播放器。它采用了模块化的设计,由多个组件组成,包括媒体控制模块、解码器模块、渲染模块等。媒体控制模块负责接收用户的指令,如播放、暂停、快进等,并将这些指令传递给解码器模块。解码器模块负责将音频或视频文件解码成可播放的数据流,然后传递给渲染模块。渲染模块负责将数据流渲染成声音或图像,并通过扬声器或显示器输出给用户。此外,Helios_SysMediaPlayer还提供了一些高级功能,如音量控制、字幕显示等。总之,Helios_SysMediaPlayer是一个功能强大、易于使用的媒体播放器。
作者其他创作
大纲/内容
surfaceDestroyed
非可stop状态下设置PlayerStates_Error
PlayerUtilityManager SELECTFIXEDVARIANT(系统层实现)
渲染第一帧的回调
根据播放状态,返回mMediaPlayer.isPlaying
视频高度
隐藏SurfaceView
getVideoWidth
回调EVENT_MEDIA_BUFFERING_END
根据播放状态,mMediaPlayer.seekTo
回调EVENT_MEDIA_PLAY_COMPLETE
返回当前比例设置
MediaPlayerType.INSTANCE_SYS
起播start
mSurfaceView.requestLayout()
setDataSourceAndPlay
OnInfoListener.MEDIA_INFO_VIDEO_RENDERING_START
关联surfaceHolder
onVideoSizeChanged
setDisplayMode
getDisplayMode
changeVideoSize
记录出错时间timeWhenErrorOccer
setOnTimedTextListener
恢复播放start
OnInfoListener.MEDIA_INFO_BUFFERING_END
setTime
mSurfaceView.setLayoutParams(lp)
addTimedTextSource
stop
N
用户手动暂停mIsUserPause
isPlaying
Y
场景:1.播放界面不可见,触发surfaceDestroy,在重新恢复可见时,重新起播2.第一次创建surfaceView时为null,在调用setDataSourceAndPlay才起播
onBufferingUpdate
startAndSeek
视频宽度
destroy
记录恢复时的seek时间
视图Surface初始化/数据清空
出错状态下,返回timeWhenErrorOccer值
isPaused
onError
switchDefinition
setVideoRegion
switchBandwidth(自适应码流切换不同清晰度)
起播时处于播放状态mStartWhenPrepared
url_to_play null?
不支持
surfaceChanged
OnInfoListener.MEDIA_INFO_BUFFERING_START
初始化
resume
getTime
mMediaPlayer.selectTrack
不支持(腾讯播放器的播放方式)
surfaceHolder置null
设置视频缩放模式
onCompletion
setDataSourceAndPlayLocked
isBuffering缓冲中
起播时处于播放/暂停状态mStartWhenPrepared
设置mSeekWhenPrepared时间
根据播放状态,停止stop
false
setIdAndPlay
回调EVENT_MEDIA_BUFFERING
清空MediaPlayer所设的监听器
播放器的实现思路:1.单一接口功能根据状态机进行MediaPlayer的方法调用。2.根据MediaPlayer和SurfaceView的不同回调进行状态修改及处理。3.关键处理函数为初始设置Source及起播阶段判断处理,显示区域根据视频实际比例的设置以及大小窗口切换。其余皆是功能相应调用
getType
回调EVENT_MEDIA_STARTPLAY
OnInfoListener.MEDIA_INFO_NOT_SEEKABLE
pause
根据所设的画面比例,Surface的显示区域比例,优先以所设比例为准设置显示区域
根据播放状态,暂停pause
回调
根据播放状态,返回mMediaPlayer.getCurrentPosition
根据播放状态,返回当前时间
回调EVENT_MEDIA_BUFFERING_START
changeVideoSize(设置视频size)
回调EVENT_MEDIA_PREPARED三者回调结合使判断准备完成状态更准确
selectTrack
根据播放状态,恢复播放start
回调EVENT_MEDIA_NOT_SEEKABLE
mMediaPlayer.addTimedTextSource
getLength
viewholder移除surfaceView
onPrepared阶段
onSeekComplete
处于播放状态
holder.setFixedSize
getVideoHeight
原生播放器监听器初始化并设置
onPrepared
isSeekable
surfaceCreated
起播时间mSeekWhenPrepared
0 条评论
下一页