OpenHarmony5.0 AVPlayer新特性开发指导(二)
上篇传送门: OpenHarmony5.0 AVPlayer新特性开发指导(一) 4、字幕&播放信息 概述 支持添加外挂字幕支持获取播放过程信息支持订阅更多播放信息相关事件 addSubtitleFromFd addSubtitleFromFd(fd: number, offset?: number, length?: number): Promise<void> 通过文件描述
上篇传送门: OpenHarmony5.0 AVPlayer新特性开发指导(一)
4、字幕&播放信息
概述
- 支持添加外挂字幕
- 支持获取播放过程信息
- 支持订阅更多播放信息相关事件
addSubtitleFromFd
addSubtitleFromFd(fd: number, offset?: number, length?: number): Promise<void>
通过文件描述符的方式为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后设置外挂字幕),调prepare后设置无效。
addSubtitleFromUrl
addSubtitleFromUrl(url: string): Promise<void>
通过url为视频添加外挂字幕,当前仅支持与视频资源同时设置(在avplayer设置fdSrc视频资源后且调用prepare前设置外挂字幕)
on('subtitleUpdate')
on(type: 'subtitleUpdate', callback: Callback<SubtitleInfo>): void
interface SubtitleInfo {
duration?: number; // 显示当前字幕文本的持续时间(单位:毫秒)
startTime?: number; // 显示当前字幕文本的开始时间(单位:毫秒)
text?: string; // 字幕文本信息
}
订阅获取外挂字幕的事件,当有外挂字幕时,会通过订阅的回调方法通知用户。
示例如下:
avPlayer.on('subtitleUpdate', async (info: media.SubtitleInfo) => {
if (info) {
let text = (!info.text) ? '' : info.text
let startTime = (!info.startTime) ? 0 : info.startTime
let duration = (!info.duration) ? 0 : info.duration
console.info('subtitleUpdate info: text=' + text + ' startTime=' + startTime +' duration=' + duration)
} else {
console.info('subtitleUpdate info is null')
}
})
getPlaybackInfo
getPlaybackInfo(): Promise<PlaybackInfo>
interface PlaybackInfo {
[key:string]: Object;
}
获取播放过程中的信息,可以在prepared/playing/paused状态调用。通过key-value方式获取播放信息。目前支持的key值如下
enum PlaybackInfoKey {
SERVER_IP_ADDRESS = 'server_ip_address', // 服务器IP地址,其对应键值类型为string
AVG_DOWNLOAD_RATE = 'average_download_rate', // 平均下载速率,其对应键值类型为number,单位为比特率(bps)
DOWNLOAD_RATE = 'download_rate', // 上1s的下载速率,其对应键值类型为number,单位为比特率(bps)
IS_DOWNLOADING = 'is_downloading', // 下载状态,1表示在下载状态,0表示非下载状态(下载完成),其对应键值类型为number
BUFFER_DURATION = 'buffer_duration', // 缓存数据的可播放时长,其对应键值类型为number,单位为秒(s)
}
on('audioOutputDeviceChangeWithInfo')
on(type: 'audioOutputDeviceChangeWithInfo', callback: Callback<audio.AudioStreamDeviceChangeInfo>): void
订阅监听音频流输出设备变化及原因,使用callback方式返回结果,API11引入
on('amplitudeUpdate')
on(type: 'amplitudeUpdate', callback: Callback<Array<number>>): void
订阅音频最大电平值,音频资源播放时会定时上报, API13引入。
四、框架层新特性
Native API
API 11版本新增AVPlayer C API,用于提供native播放能力,可参考https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/reference/apis-media-kit/_a_v_player.md
系统服务层
媒体引擎
5.0 版本媒体引擎从gstreamer引擎切换到histreamer引擎,各版本媒体引擎细节可参考:OpenHarmony媒体引擎的发展。
媒体格式
新增支持多种播放协议或封装格式:
- 支持DASH、HTTP-FLV流媒体协议播放;
- 支持fmp4、flv、ps、asf等封装格式;
- 支持AMR、APE、WAV PCM-MULAW格式音频播放;
- 支持srt、vtt外挂字幕和webvtt内置字幕(仅dash支持,当dash协议存在内置字幕时,不支持添加外挂字幕)
- DRM解密能力支持的解封装格式:mp4(H.264,AAC)、mpeg-ts(H264,AAC)
性能
- 网络播放下,根据网络质量自动切换到适合的码率下播放
- 流媒体播放能力增强:优化流媒体缓存策略,减少卡顿
- 播放器起播、Seek性能优化,降低时延
- 音频Offload模式:当应用设置了audioRendererInfo属性,且StreamUsage配置为STREAM_USAGE_MUSIC(纯音乐)或STREAM_USAGE_AUDIOBOOK(有声读物、听新闻、播客等)时自动配置允许进入Offload模式
更多推荐
所有评论(0)