协议
ActiveSession
在 fuchsia.media.sessions2/discovery.fidl 中定义
用于观看设备上当前活跃媒体会话的协议。
当前活跃的媒体会话是最近一个现有媒体会话,用于在本地设备上通告“正在播放”状态,即使它现在已暂停。
WatchActiveSession
监控当前会话。第一个请求将立即与当前活跃会话一起响应。当活动会话发生更改时,请始终让请求处于挂起状态以接收回复。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
session |
SessionControl?
|
发现
在 fuchsia.media.sessions2/discovery.fidl 中定义
Discovery
会观察已发布媒体会话的收集并将客户端连接到这些会话。
ConnectToSession
连接到 session_id
的 SessionControl
(如果存在)。否则删除指定渠道。
请求
名称 | 类型 |
---|---|
session_id |
SessionId
|
session_control_request |
server_end<SessionControl>
|
WatchSessions
连接配置了指定选项的会话观察器。
请求
名称 | 类型 |
---|---|
watch_options |
WatchOptions
|
session_watcher |
SessionsWatcher
|
ObserverDiscovery
在 fuchsia.media.sessions2/discovery.fidl 中定义
ObserverDiscovery
会观察已发布媒体会话的收集,并将客户端连接到这些会话以进行观察,而无需播放控件。
ConnectToSession
连接到 session_id
的 SessionObserver
(如果存在)。否则删除指定渠道。
请求
名称 | 类型 |
---|---|
session_id |
SessionId
|
session_request |
server_end<SessionObserver>
|
WatchSessions
连接配置了指定选项的会话观察器。
请求
名称 | 类型 |
---|---|
watch_options |
WatchOptions
|
sessions_watcher |
SessionsWatcher
|
参赛选手
在 fuchsia.media.sessions2/player.fidl 中定义
Player
是媒体播放器的句柄。不受支持的命令是空操作。请查阅由 发送的 PlaybackCapabilities
以了解支持哪些命令。
BindVolumeControl
绑定到会话的音量控制,以控制和通知。如果 PlayerCapabilities
中缺少 HAS_GAIN_CONTROL
标志表示不支持此方法,服务会关闭作为 volume_control_request
传递的通道句柄。
请求
名称 | 类型 |
---|---|
volume_control_request |
server_end<fuchsia.media.audio/VolumeControl>
|
NextItem
将媒体更改为下一项内容(例如播放列表中的下一首歌曲)。如果不支持此方法(表现为 PlayerCapabilities
中缺少 CHANGE_TO_NEXT_ITEM
标志),则此方法不会执行任何操作。
请求
<EMPTY>
暂停
暂停播放并保留在媒体中的位置。如果 PlayerCapabilities
中缺少 PAUSE
标志表明不支持此方法,则此方法不会执行任何操作。
请求
<EMPTY>
Play
播放媒体内容。如果不支持此方法(表现为 PlayerCapabilities
中缺少 PLAY
标志),则此方法不会执行任何操作。
请求
<EMPTY>
PrevItem
将媒体更改为上一项。如果不支持此方法(表现为 PlayerCapabilities
中缺少 CHANGE_TO_PREV_ITEM
标志),则此方法不会执行任何操作。
请求
<EMPTY>
进度
跳转到媒体中的特定位置。如果位置超出边界,实现可以自由进入错误状态。position
是相对于媒体开头的偏移量。如果 PlayerCapabilities
中缺少 SEEK
标志表明不支持此方法,则此方法不会执行任何操作。
请求
名称 | 类型 |
---|---|
position |
zx/Duration
|
SetPlaybackRate
设置媒体的播放速率。此操作不会更改播放模式。如果不支持此方法(表现为 PlayerCapabilities
中缺少 SET_PLAYBACK_RATE
标志),则此方法不会执行任何操作。
请求
名称 | 类型 |
---|---|
playback_rate |
float32
|
SetRepeatMode
将重复模式设置为任何受支持的重复模式。
此方法是否生效取决于 PlayerCapabilities
和 repeat_mode
:
请求
名称 | 类型 |
---|---|
repeat_mode |
RepeatMode
|
SetShuffleMode
设置随机播放模式。如果不支持此方法(表现为 PlayerCapabilities
中缺少 SHUFFLE
标志),则此方法不会执行任何操作。
请求
名称 | 类型 |
---|---|
shuffle_on |
bool
|
SkipForward
以播放器的默认跳过幅度向前快进。如果 PlayerCapabilities
中缺少 SKIP_FORWARD
标志表示不支持此方法,则此方法不会执行任何操作。
请求
<EMPTY>
SkipReverse
按照播放器的默认跳过时长在媒体中反向跳过。如果此方法不受支持,即 PlayerCapabilities
中缺少 SKIP_REVERSE
标志,则此方法不会执行任何操作。
请求
<EMPTY>
停止
停止播放。会话应关闭。
请求
<EMPTY>
WatchInfoChange
使用挂起获取模式获取净播放器信息更改。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
player_info_delta |
PlayerInfoDelta
|
PlayerControl
在 fuchsia.media.sessions2/player.fidl 中定义
媒体播放器的控件。PlayerCapabilities
表示播放器支持此协议中的哪些方法。由于功能是动态的,并且客户端无法始终知道在方法调用到达服务时支持哪些功能,因此系统会直接忽略调用不受支持的方法。一般来说,除非播放器指明提供持续支持,否则客户端不应期望相关方法能够正常运行。
BindVolumeControl
绑定到会话的音量控制,以控制和通知。如果 PlayerCapabilities
中缺少 HAS_GAIN_CONTROL
标志表示不支持此方法,服务会关闭作为 volume_control_request
传递的通道句柄。
请求
名称 | 类型 |
---|---|
volume_control_request |
server_end<fuchsia.media.audio/VolumeControl>
|
NextItem
将媒体更改为下一项内容(例如播放列表中的下一首歌曲)。如果不支持此方法(表现为 PlayerCapabilities
中缺少 CHANGE_TO_NEXT_ITEM
标志),则此方法不会执行任何操作。
请求
<EMPTY>
暂停
暂停播放并保留在媒体中的位置。如果 PlayerCapabilities
中缺少 PAUSE
标志表明不支持此方法,则此方法不会执行任何操作。
请求
<EMPTY>
Play
播放媒体内容。如果不支持此方法(表现为 PlayerCapabilities
中缺少 PLAY
标志),则此方法不会执行任何操作。
请求
<EMPTY>
PrevItem
将媒体更改为上一项。如果不支持此方法(表现为 PlayerCapabilities
中缺少 CHANGE_TO_PREV_ITEM
标志),则此方法不会执行任何操作。
请求
<EMPTY>
进度
跳转到媒体中的特定位置。如果位置超出边界,实现可以自由进入错误状态。position
是相对于媒体开头的偏移量。如果 PlayerCapabilities
中缺少 SEEK
标志表明不支持此方法,则此方法不会执行任何操作。
请求
名称 | 类型 |
---|---|
position |
zx/Duration
|
SetPlaybackRate
设置媒体的播放速率。此操作不会更改播放模式。如果不支持此方法(表现为 PlayerCapabilities
中缺少 SET_PLAYBACK_RATE
标志),则此方法不会执行任何操作。
请求
名称 | 类型 |
---|---|
playback_rate |
float32
|
SetRepeatMode
将重复模式设置为任何受支持的重复模式。
此方法是否生效取决于 PlayerCapabilities
和 repeat_mode
:
请求
名称 | 类型 |
---|---|
repeat_mode |
RepeatMode
|
SetShuffleMode
设置随机播放模式。如果不支持此方法(表现为 PlayerCapabilities
中缺少 SHUFFLE
标志),则此方法不会执行任何操作。
请求
名称 | 类型 |
---|---|
shuffle_on |
bool
|
SkipForward
以播放器的默认跳过幅度向前快进。如果 PlayerCapabilities
中缺少 SKIP_FORWARD
标志表示不支持此方法,则此方法不会执行任何操作。
请求
<EMPTY>
SkipReverse
按照播放器的默认跳过时长在媒体中反向跳过。如果此方法不受支持,即 PlayerCapabilities
中缺少 SKIP_REVERSE
标志,则此方法不会执行任何操作。
请求
<EMPTY>
停止
停止播放。会话应关闭。
请求
<EMPTY>
出版商
在 fuchsia.media.sessions2/publisher.fidl 中定义
Publisher
用于发布媒体播放器,以便它们被拥有相应权限的客户端发现和控制。
发布
请求
名称 | 类型 |
---|---|
player |
Player
|
registration |
PlayerRegistration
|
响应
名称 | 类型 |
---|---|
session_id |
SessionId
|
SessionControl
在 fuchsia.media.sessions2/discovery.fidl 中定义
控制媒体会话并查看其状态。
如果媒体会话停止,该频道将关闭。
BindVolumeControl
绑定到会话的音量控制,以控制和通知。
请求
名称 | 类型 |
---|---|
volume_control_request |
server_end<fuchsia.media.audio/VolumeControl>
|
NextItem
将媒体更改为下一项内容(例如播放列表中的下一首歌曲)。
请求
<EMPTY>
暂停
暂停播放并保持在媒体中的位置
请求
<EMPTY>
Play
播放媒体内容。
请求
<EMPTY>
PrevItem
将媒体更改为上一项。
请求
<EMPTY>
进度
跳转到媒体中的特定位置。如果位置超出边界,实现可以自由进入错误状态。position
是相对于媒体开头的偏移量。
请求
名称 | 类型 |
---|---|
position |
zx/Duration
|
SetPlaybackRate
设置媒体的播放速率。这不会更改播放模式。
请求
名称 | 类型 |
---|---|
playback_rate |
float32
|
SetRepeatMode
将重复模式设置为任何受支持的重复模式。
请求
名称 | 类型 |
---|---|
repeat_mode |
RepeatMode
|
SetShuffleMode
设置随机播放模式。
请求
名称 | 类型 |
---|---|
shuffle_on |
bool
|
SkipForward
以播放器的默认跳过幅度向前快进。
请求
<EMPTY>
SkipReverse
按照播放器的默认跳过时长在媒体中反向跳过。
请求
<EMPTY>
停止
停止播放。会话应关闭。
请求
<EMPTY>
WatchStatus
查看会话状态。让请求保持挂起状态,以便在会话状态发生变化时收到回复。系统会立即响应第一个请求并返回当前状态。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
session_info_delta |
SessionInfoDelta
|
SessionObserver
在 fuchsia.media.sessions2/discovery.fidl 中定义
查看媒体会话的状态。
如果媒体会话停止,该频道将关闭。
WatchStatus
查看会话状态。让请求保持挂起状态,以便在会话状态发生变化时收到回复。系统会立即响应第一个请求并返回当前状态。
请求
<EMPTY>
响应
名称 | 类型 |
---|---|
session_info_delta |
SessionInfoDelta
|
SessionsWatcher
在 fuchsia.media.sessions2/discovery.fidl 中定义
SessionsWatcher
用于监控已发布会话的集合。
SessionRemoved
当会话从已注册的集合中移除时,由注册表服务调用。
SessionsWatcher
必须回复确认收到会话移除通知。未回复的未回复观看者最终将断开连接。
请求
名称 | 类型 |
---|---|
session_id |
SessionId
|
响应
<EMPTY>
SessionUpdated
在会话更新时由注册表服务调用。在首次连接时,系统将根据需要多次调用此函数来传达世界的状态。
SessionsWatcher
必须进行回复,以确认已收到会话信息增量。未回复的未回复观看者最终将断开连接。
请求
名称 | 类型 |
---|---|
session_id |
SessionId
|
session_info_delta |
SessionInfoDelta
|
响应
<EMPTY>
结构
ImageSizeVariant
在 fuchsia.media.sessions2/images.fidl 中定义
特定尺寸的图片的变体。
字段 | 类型 | 说明 | 默认 |
---|---|---|---|
url |
fuchsia.url/Url
|
无默认值 | |
width |
uint32
|
无默认值 | |
height |
uint32
|
无默认值 |
枚举
ContentType 严格
类型:uint32
在 fuchsia.media.sessions2/player.fidl 中定义
播放的内容的类型,应设置为最大的适用值。
名称 | 值 | 说明 |
---|---|---|
其他 |
1 |
内容不符合使用任何其他值的条件。 |
AUDIO |
2 |
不属于音乐的纯音频内容。 |
视频 |
3 |
只包含视频的内容或音频视频内容,不能作为电视节目或电影。 |
MUSIC |
4 |
纯音频内容通常被视为音乐。 |
TV_SHOW |
5 |
电视或流媒体连续剧的一部分的音频/视频内容。 |
电影 |
6 |
由故事片组成的音频视频内容。 |
错误严格
类型:uint32
在 fuchsia.media.sessions2/player.fidl 中定义
名称 | 值 | 说明 |
---|---|---|
其他 |
1 |
InterruptionBehavior 严格
类型:uint32
在 fuchsia.media.sessions2/player.fidl 中定义
播放器被打断(例如被闹钟响起)时对其强制执行的行为。
系统会根据播放器的使用情况检测中断。
默认情况下,中断行为为 NONE
。
名称 | 值 | 说明 |
---|---|---|
无 |
0 |
中断对播放器没有影响,即使可听率降低,也可能会继续播放。 |
暂停 |
1 |
借助此行为,当播放中断时,播放器将处于暂停状态,直到中断结束,这样用户就不会错过任何内容。 |
MediaImageType 严格
类型:uint32
在 fuchsia.media.sessions2/images.fidl 中定义
名称 | 值 | 说明 |
---|---|---|
艺术作品 |
0 |
正在播放的媒体的海报图片。 |
SOURCE_ICON |
1 |
正在播放的媒体(例如播放器或流式传输服务)来源的图标。 |
PlayerState 严格
类型:uint32
在 fuchsia.media.sessions2/player.fidl 中定义
媒体播放器的状态。
名称 | 值 | 说明 |
---|---|---|
空闲 |
0 |
会话的初始状态(如果没有关联媒体)。 |
正在播放 |
1 |
播放器正在播放内容。 |
已暂停 |
2 |
播放器已暂停。 |
正在缓冲 |
3 |
播放器正在播放,但由于缓冲而暂停。 |
ERROR |
4 |
播放器无法从此状态恢复,并将关闭。 |
RepeatMode 严格
类型:uint32
在 fuchsia.media.sessions2/player.fidl 中定义
重复播放当前媒体的模式。
名称 | 值 | 说明 |
---|---|---|
OFF |
0 |
不重复。 |
组 |
1 |
重复播放相关的媒体组(例如播放列表)。 |
单曲 |
2 |
重复播放当前正在播放的媒体。 |
表格
MediaImage
在 fuchsia.media.sessions2/images.fidl 中定义
用于播放媒体内容的图片。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
image_type |
MediaImageType
|
|
2 |
sizes |
vector<ImageSizeVariant>[16]
|
图片的可用变体。 |
PlayerCapabilities
在 fuchsia.media.sessions2/player.fidl 中定义
描述玩家的能力。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
flags |
PlayerCapabilityFlags
|
指明播放器支持哪些功能。如需了解详情,请参阅 |
PlayerInfoDelta
在 fuchsia.media.sessions2/player.fidl 中定义
发出后,应设置已更改的字段。首次向新客户端发出的内容应该是快照。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
local |
bool
|
指定设备网络的媒体入口点是否是本地计算机;如果是设备从音乐服务流式传输内容,则应为 true;如果计算机仅接收音频流以充当扬声器,则此项应为 false 或省略。 如果省略,该值保持不变。最初,此值为 |
2 |
player_status |
PlayerStatus
|
播放器的状态。 如果省略,则所有组成部分值都保持不变。如果省略 |
3 |
metadata |
fuchsia.media/Metadata
|
正在播放的媒体的元数据。 如果省略,元数据将保持不变。最初没有元数据。 |
4 |
media_images |
vector<MediaImage>[16]
|
与正在播放的媒体相关联的图片。 如果省略,媒体图片将保持不变。空矢量表示没有媒体图片,这也是初始状态。 |
5 |
player_capabilities |
PlayerCapabilities
|
播放器的功能。 如果省略,功能保持不变。最初,我们假定玩家没有 capability。 |
6 |
interruption_behavior |
InterruptionBehavior
|
玩家在被闹钟等因素打断时想要进行的行为。 如果省略,则行为保持不变。最初,值为 |
PlayerRegistration
在 fuchsia.media.sessions2/publisher.fidl 中定义
媒体会话注册表服务注册播放器所需的所有信息,以便客户端可以观察和控制其状态。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
domain |
Domain
|
播放器所在的网域。如果是原生紫红色网域,则取消设置。 |
2 |
usage |
fuchsia.media/AudioRenderUsage
|
播放器的音频输出使用情况。默认情况下,系统假定该参数为 MEDIA。 |
PlayerStatus
在 fuchsia.media.sessions2/player.fidl 中定义
媒体播放器的状态。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
duration |
zx/Duration
|
播放媒体的总时长。 如果省略此值,则表示时长未知、不适用或保持不变。最初,假定时长未知。 |
2 |
player_state |
PlayerState
|
播放器的状态。 如果省略此字段,则值保持不变。最初,值为 |
3 |
timeline_function |
fuchsia.media/TimelineFunction
|
一种播放函数,用于描述通过媒体播放的位置和速率(作为 如果省略此字段,则值保持不变。最初, |
4 |
repeat_mode |
RepeatMode
|
播放器的重复模式。 如果省略此字段,则值保持不变。最初,值为 |
5 |
shuffle_on |
bool
|
播放器的随机播放模式。 如果省略此字段,则值保持不变。最初,值为 false。 |
6 |
content_type |
ContentType
|
播放的内容的类型。 如果省略此字段,则值保持不变。最初,值为 |
7 |
error |
Error
|
播放器可能遇到的错误。 除非出错,否则省略此字段。指明错误后,便无法撤消。 |
8 |
is_live |
bool
|
播放的媒体是否为直播媒体(例如电视或直播)。 如果省略此字段,则值保持不变。最初,值为 false。 |
SessionInfoDelta
在 fuchsia.media.sessions2/discovery.fidl 中定义
SessionInfoDelta 包含媒体会话的说明。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
domain |
Domain
|
发生会话的网域。网域用于标识一组相互兼容的媒体目标和会话;网域上的会话可以在同一网域的目标上播放。 此字段始终存在。 |
2 |
is_local |
bool
|
媒体播放的来源是否在此设备上。 仅当已知时,此字段才会显示。 |
3 |
is_locally_active |
bool
|
如果此值为 此字段始终存在。 |
4 |
player_status |
PlayerStatus
|
播放器的状态。 此字段始终存在。 |
5 |
metadata |
fuchsia.media/Metadata
|
描述媒体会话的元数据。 此字段始终存在。 |
6 |
media_images |
vector<MediaImage>
|
与媒体或其来源相关联的图片。 此字段始终存在。 |
7 |
player_capabilities |
PlayerCapabilities
|
媒体播放器实现的功能。 此字段始终存在。 |
WatchOptions
在 fuchsia.media.sessions2/discovery.fidl 中定义
用于指定在观看集合时观看哪些会话的选项。
监控集是指满足所有选项的一组会话。
序数 | 字段 | 类型 | 说明 |
---|---|---|---|
1 |
only_active |
bool
|
仅观看正在进行的课程。如果未设置,则观看全部。 |
2 |
allowed_sessions |
vector<uint64>[1000]
|
仅观看具有这些已列入许可名单的 ID 的会议。如果未设置,则观看全部。 |
BITS
PlayerCapabilityFlags 严格
类型:uint32
在 fuchsia.media.sessions2/player.fidl 中定义
名称 | 值 | 说明 |
---|---|---|
PLAY |
1 | 如果设置了此字段,则播放器可以 |
暂停 |
4 | 如果设置了此字段,则播放器可以 |
寻找 |
8 | 如果设置了此字段,则播放器可以 |
SKIP_FORWARD |
16 | 如果设置了此字段,则播放器可以 |
SKIP_REVERSE |
32 | 如果设置了此字段,则播放器可以 |
随机播放 |
64 | 如果此政策已设置,播放器可以随机播放媒体。 |
CHANGE_TO_NEXT_ITEM |
128 | |
CHANGE_TO_PREV_ITEM |
256 | |
HAS_GAIN_CONTROL |
512 | 如果设置了此字段,则播放器可以 |
REPEAT_GROUPS |
1024 | 如果此政策已设置,玩家可以重复播放组。 |
REPEAT_SINGLE |
2048 | 如果设置了此字段,则播放器可以重复播放单个媒体项。 |
SET_PLAYBACK_RATE |
4096 | 如果设置了此字段,则播放器可以接受播放速率变化。 |
别名
名称 | 值 | 说明 |
---|---|---|
网域 |
string [1000 ] |
网域用于标识会话所在的生态系统。 网域应采用
|
SessionId |
uint64 |