快速进阶
更新时间:2025-09-08
播放控制条
简单播放控制条可参考demo中的PlayControl类。该类由播放按钮、播放进度条等组成。 涉及到的接口有:
接口名 | 参数 | 返回值 | 说明 |
---|---|---|---|
start | 无 | void | 开始/恢复播放 |
pause | 无 | void | 暂停播放 |
isPlaying | 无 | boolean | 查看是否正在播放状态 |
seekTo | msec: string | void | seek到指定位置播放 |
setVolume | leftVolume: string,rightVolume: string | void | 设置音量 |
setSpeed | speed: string | void | 设置播放倍速 |
getSpeed | 无 | number | 获取设置的倍速 |
getDuration | 无 | number | 获取视频时长,单位为毫秒 |
getCurrentPosition | 无 | number | 获取当前播放位置,单位为毫秒 |
setLoopCount | looping: boolean | void | 设置循环播放 |
isLooping | 无 | boolean | 查看当前是否循环播放 |
setOnBufferingUpdateListener | listener: OnBufferingUpdateListener | void | 监听,回调时返回已缓存时长占视频播放时长的百分比,根据该值更新二级进度条(缓存进度) |
暂停与播放
Plain Text
1// 暂停播放
2
3this.mBDCloudMediaPlayer.pause()
4
5// 恢复播放
6
7this.mBDCloudMediaPlayer.start()
8
9// 查看是否是播放状态
10
11this.mBDCloudMediaPlayer.isPlaying
Seek 到指定位置播放
Plain Text
1// 演示 seek 到 1 秒的位置
2 this.mBDCloudMediaPlayer.start('1000')
3
设置音量
Plain Text
1 // 静音
2 this.mBDCloudMediaPlayer.setVolume('0','0')
3 // 取消静音
4 this.mBDCloudMediaPlayer.setVolume('1','1')
5
倍速播放
Plain Text
1 // 设置倍速 可取值:'0.75f'、 '1.0f'、'1.5f' 、'1.75f'、'2.0f'
2 this.mBDCloudMediaPlayer.setSpeed('1.5f');
3 // 获取倍速
4 this.mBDCloudMediaPlayer.getSpeed()
5
获取视频时长
Plain Text
1 // 获取播放的总时长
2 this.mBDCloudMediaPlayer.getDuration()
3
4 // 获取播放当前时长
5 this.mBDCloudMediaPlayer.getCurrentPosition()
6
循环播放
Plain Text
1// 设置循环播放
2 this.mBDCloudMediaPlayer.setLoopCount(true)
3
4// 查看当前是否循环播放
5this.mBDCloudMediaPlayer.isLooping()
边播边录制
Plain Text
1 // 是否正在录制中
2let isRecord = this.mBDCloudMediaPlayer?.isRecord();
3
4// 开始录制
5this.mBDCloudMediaPlayer.startRecord(outputfd:number)
6
7// 结束录制
8await this.mBDCloudMediaPlayer?.stopRecord()
使用方式详见demo中VideoController.ets
,录制完成保存到相册
外挂字幕
通过下面的接口可以添加外挂字幕,当前支持的字幕格式包括srt\ssa\ass\webvtt。需要注意的是,该接口需要在收到播放器onPrepared回调后调用,并且对于同一个播放器,同一时刻仅能添加一个外挂字幕轨道,添加新的外挂字幕会自动代替旧的外挂字幕
Plain Text
1// subtitleSrc对应外挂字幕地址
2this.mBDCloudMediaPlayer.addExtSubtitleUrl(subtitleSrc:string);
在播放内核中,当外挂字幕成功读取后,会通过下面的回调进行通知
Plain Text
1 let mOnExtSubtitleOpenListener:OnExtSubtitleOpenListener = {
2 onExtSubtitleOpen:(info:string) => {
3 console.log(`外挂字幕url:${info}`)
4 promptAction.showToast({
5 duration: PlayConstants.PLAY_ERROR_TIME,
6 message: "外挂字幕已开启"
7 });
8 }
9}
具体的字幕内容也会在OnTimedTextListener中回调,这一点与内嵌字幕相同。
Plain Text
1let mOnTimedTextListener: OnTimedTextListener = {
2 onTimedText: (mp: BDCloudMediaPlayer,text:string) => {
3 Logger.info("[PlayVideoModel] onTimedText"+text);
4 this.context.eventHub.emit(Events.SUBTITLE_TEXT,text)
5 }
6}
7this.mBDCloudMediaPlayer.setOnTimedTextListener(mOnTimedTextListener)
播放HLS加密视频
百度智能云MCP服务和VideoWorks服务支持转码成HLS加密视频。
不同的加密方式,播放时的方法略有不同:
-
PlayerBinding加密模式
按普通视频播放即可,必须使用百度播放器
-
Token模式
token需要您的服务器与百度智能云服务器合作来生成,您的App从您的服务器拿到token后,设置给播放器即可。 prepare之前需要先设置token:
Plain Text1 this.mBDCloudMediaPlayer.setDecryptTokenForHLS("your-token");