
回复
AVPlayer提供功能完善一体化播放能力,应用只需要提供流媒体来源,不负责数据解析和解码就可达成播放效果。
本文介绍一下AVPlayer的基本使用,播放网络视频,实现播放暂停功能、进度条拖拽功能,看一下演示效果:
当使用AVPlayer开发视频应用播放视频时,AVPlayer与外部模块的交互关系如图所示:
支持的协议如下:
协议类型 | 协议格式描述 |
---|---|
本地点播 | 支持file descriptor,禁止file path |
网络点播 | 支持http/https/hls/dash |
网络直播 | 支持hls/http-flv |
支持的视频播放格式和主流分辨率如下:
视频容器规格 | 规格描述 | 分辨率 |
---|---|---|
mp4 | 视频格式:H265/H264 | 主流分辨率,如4K/1080P/720P/480P/270P |
mkv | 视频格式:H265/H264 | 主流分辨率,如4K/1080P/720P/480P/270P |
ts | 视频格式:H265/H264 | 主流分辨率,如4K/1080P/720P/480P/270P |
播放的全流程包含:
步骤 | 方法 |
---|---|
创建AVPlayer | media.createAVPlayerr(callback: AsyncCallback<AVPlayer>): void |
设置播放资源和窗口 | url/fdSrc XComponent.onLoad(callback: OnNativeLoadCallback ) |
设置播放参数(音量/倍速/缩放模式) | setVolume、setVolume、videoScaleType |
播放控制(播放/暂停/跳转/停止) | 播放play(),暂停pause(),跳转seek(),停止stop() |
重置 | reset() |
销毁资源 | release() |
播放状态变化示意图
AVPlayer监听回调事件
事件类型 | 说明 |
---|---|
stateChange | 必要事件,监听播放器的state属性改变。 |
error | 必要事件,监听播放器的错误信息。 |
durationUpdate | 用于进度条,监听进度条长度,刷新资源时长。 |
timeUpdate | 用于进度条,监听进度条当前位置,刷新当前时间。 |
seekDone | 响应API调用,监听seek()请求完成情况。 |
speedDone | 响应API调用,监听setSpeed()请求完成情况。 |
volumeChange | 响应API调用,监听setVolume()请求完成情况。 |
bitrateDone | 响应API调用,用于HLS协议流,监听setBitrate()请求完成情况。 |
availableBitrates | 用于HLS协议流,监听HLS资源的可选bitrates,用于setBitrate()。 |
bufferingUpdate | 用于网络播放,监听网络播放缓冲信息。 |
startRenderFrame | 用于视频播放,监听视频播放首帧渲染时间。 |
videoSizeChange | 用于视频播放,监听视频播放的宽高信息,可用于调整窗口大小、比例。 |
audioInterrupt | 监听音频焦点切换信息,搭配属性audioInterruptMode使用。 |
注意:
1.监听videoSizeChange事件,获取到视频的长宽,根据长宽比重新设置XComponent的长宽,让视频充满长或宽,显示完整
2.Slider点击滑动条会触发3次onChange事件,分别是按下,移动/点击,结束,因此这里需要特殊处理一下