上篇传送门: 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模式
Logo

社区规范:仅讨论OpenHarmony相关问题。

更多推荐