当前位置: 首页 > article >正文

OpenHarmony5.0 AVPlayer新特性开发指导(二)

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

http://www.kler.cn/a/518665.html

相关文章:

  • 左右互博02-unidbg主动调用外层so函数
  • 2024年度总结(具身智能赛道,欢迎交流)
  • Golang Gin系列-8:单元测试与调试技术
  • 深入了解 HTTP 头部中的 Accept-Encoding:gzip、deflate、br、zstd
  • Next.js 实战 (十):中间件的魅力,打造更快更安全的应用
  • 鸿蒙next 自定义日历组件
  • 基于本地事务表+MQ实现分布式事务
  • 计算机工程:解锁未来科技之门!
  • Spring Boot Actuator 集成 Micrometer(官网文档解读)
  • 警企联动齐发力、共筑反诈“防护墙”
  • 2025美赛B题-问题B:管理可持续旅游
  • 如何使用 MySQL 的 EXPLAIN 语句进行查询分析?
  • 数据结构测试题2
  • day1代码练习
  • 在 DevOps 实践中,如何构建自动化的持续集成和持续交付(CI/CD)管道,以提高开发和测试效率?
  • 浅谈Redis
  • c语言分支和循环
  • ros动态调参界面的修改
  • Linux内核中IPoIB驱动模块的初始化与实现
  • 什么是COLLATE排序规则?
  • WPF基础 | WPF 基础概念全解析:布局、控件与事件
  • 2025-01-22 Unity Editor 1 —— MenuItem 入门
  • 2025美赛数学建模MCM/ICM选题建议与分析,思路+模型+代码
  • 寒假1.23
  • springboot图书馆管理系统前后端分离版本
  • 程序员转型测试:解锁漏洞挖掘新旅程