未验证 提交 f97f5713 编写于 作者: O openharmony_ci 提交者: Gitee

!11001 添加avsession.md、js-apis-avsession.md、errorcode-avsession.md

Merge pull request !11001 from LeiiYB/master
此差异已折叠。
# AVSession开发概述
## 简介
AVSession(Audio & Video Session),音视频会话,即媒体会话。
- 对应用开发者而言,媒体会话提供了将应用内音视频接入系统播控中心的能力。
- 对系统开发者而言,媒体会话提供了对系统音视频应用的媒体信息进行展示和统一的媒体播放控制的能力。
通过AVSession,可以实现:
1.统一播控入口,提升用户体验。
当设备上安装了多个音视频类应用时,用户需要切换、进入不同的应用来控制播放。通过接入AVSession,音视频应用可以通过系统的统一播控入口(如播控中心)来控制设备上的媒体播放,无需切换不同应用,提升使用体验。
2.完善音视频后台管控。
当应用在后台自行启动音频播放时,用户难以快速定位对应的应用,造成体验问题。接入AVSession后,允许应用在后台进行音乐播放,便于用户在播控中心快速找到播放应用。
## 基本概念
- 媒体会话
用于应用和播控中心之间进行信息交换的通道。会话的一端连接被控的媒体应用,另一端连接媒体应用的控制端(如播控中心)。应用接入了媒体会话后,可以通过媒体会话将媒体播放信息传递给控制端,并能够接收到控制端发出的控制命令。
- 媒体会话控制器
媒体会话控制器的持有者可以控制接入了AVSession应用的播放行为。通过会话控制器,应用可以对三方应用进程的播放行为进行控制,支持获取三方应用的播放信息,发送播放控制命令,也支持监听三方应用的播放状态等的变化,确保媒体会话信息的同步。
- 播控中心
系统统一的媒体控制中心,会话控制器的持有者。通过控制器发送命令来控制媒体的播放、暂停等。
## 实现原理
该模块提供了`AVSession`会话类和`AVSessionController`控制器类。
**图1** AVSession交互图
![zh-ch_image_avsession](figures/zh-cn_image_avsession.png)
- 应用与播控中心交互:首先,音频应用创建`AVSession`对象,并设置会话信息(包括媒体元数据、对应拉起的Ability、播放状态等)。然后,播控中心创建`AVSessionController`,可获取会话相关信息,向音频应用发送播放命令。最后,音频应用响应播控中心的命令并更新播放状态。
- 支持分布式投播:当组网内的设备创建本地会话之后,播控中心或者音频应用可以根据设备列表选择想要投播的其他设备,将本地会话同步到远端,生成远端会话,并支持远端控制。需要控制远端会话时,通过远端控制器将控制命令发送到远端会话控制中心。
## 约束和限制
- 播控中心展示的播放信息,依赖媒体应用主动将媒体信息写入到AVSession。
- 播控中心控制媒体应用播放,依赖于媒体应用侧对控制命令的响应。
- AVSession只能够传递媒体播放信息和播放控制指令,不进行信息的展示和控制命令的执行。
- 普通应用不支持开发播控中心端。当普通音视频应用运行在OpenHarmony上时,默认控制端为系统应用播控中心,开发者无需做额外的操作。
- 播控中心为系统应用,当开发者需要基于OpenHarmony开发自己的系统时,可以开发本系统的播控中心应用。
- 为了解决音频在后台播放时用户无法获取到停止音频的入口,影响用户体验,AVSession服务增加了三方应用后台管控策略,只有三方应用接入了AVSession,才可以后台播放,否则当三方应用切后台时系统会强制暂停其音频播放。
# 媒体会话管理错误码
## 6600101 会话服务端异常
**错误信息**
Session service exception
**错误描述**
会话服务端异常,应用端无法获取服务端的消息响应。如会话服务未运行或者会话服务通信失败。
**可能原因**
会话重启过程中服务被杀。
**处理步骤**
1.定时重试,超过3s仍失败时,停止对该会话或者控制器进行操作。
2.销毁当前会话或者会话控制器,并重新创建,如果重新创建失败,则停止会话相关操作。
## 6600102 会话不存在
**错误信息**
The session does not exist
**错误描述**
会话对象不存在时,向该会话设置参数或者发送命令。
**可能原因**
会话已被销毁,服务端无会话记录。
**处理步骤**
1.如果在会话被控端产生该错误,请重新创建会话;如果是会话控制端,请停止向该会话发送查询或者控制命令。
2.如果在会话管理端产生该错误,请重新查询系统当前会话记录,在创建控制器时传入正确的会话ID。
## 6600103 会话控制器不存在
**错误信息**
The session controller does not exist
**错误描述**
会话控制器不存在时,向该控制器发送控制命令或者事件。
**可能原因**
控制器已被销毁。
**处理步骤**
请重新查询系统当前会话记录,并创建对应的会话控制器。
## 6600104 远端会话连接失败
**错误信息**
The remote session connection failed
**错误描述**
本端会话与远端会话通信失败。
**可能原因**
设备间通信断开。
**处理步骤**
停止对该会话发送控制命令,并监听输出设备变化,当输出设备发送变化后恢复发送。
## 6600105 无效会话命令
**错误信息**
Invalid session command
**错误描述**
会话被控端不支持该被控命令或事件。
**可能原因**
被控端不支持该命令。
**处理步骤**
停止发送该命令或事件,并查询被控会话支持的命令集,发送被控端支持的命令。
## 6600106 会话未激活
**错误信息**
The session not active
**错误描述**
会话没有激活时,向会话发送控制命令或者事件。
**可能原因**
会话处于未激活状态。
**处理步骤**
停止发送该命令或事件,监听会话的激活状态,会话激活后恢复发送该命令或事件。
## 6600107 命令&消息过载
**错误信息**
Command or event overload
**错误描述**
会话客户端在一段时间内向服务端发送了过多的消息或者命令,引起服务端消息过载。
**可能原因**
服务端消息过载。
**处理步骤**
检查自身命令发送是否过于频繁,控制自身查询和控制命令的发送频度。
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册