输入在线媒体流。
该方法通过在服务端拉取视频流并发送到频道中,将正在播出的视频输入到正在进行的直播中。可主要应用于赛事直播、多人看视频互动等直播场景。
调用该方法后,SDK 会在本地触发 StreamInjectedStatus
回调,
报告输入在线媒体流的状态;成功输入媒体流后,该音视频流会出现在频道中,
频道内所有用户都会收到 UserJoined
(uid: 666)。
Warning
客户端输入在线媒体流功能即将停服。如果你尚未集成该功能,Agora 建议你不要使用。详见《部分服务下架计划》。
Note
添加到直播中的视频流 URL 地址,支持 RTMP, HLS, FLV 协议传输。
LiveInjectStreamConfig 类,外部输入的音视频流的配置。
setChannelProfile
并将频道设置为直播场景再调用该方法RtcEngine
对象并完成初始化。设置频道事件句柄。
设置后,你可以通过 RtcChannelEvents
回调监听对应频道内的事件、获取频道数据。
事件类型。
RtcChannel
对象的事件回调。
增加旁路推流地址。
调用该方法后,你可以向 CDN 推送 RTMP 或 RTMPS 协议的媒体流。SDK 会在本地
触发 RtmpStreamingStateChanged
回调,报告增加旁路推流地址的状态。
Note
CDN 推流地址,格式为 RTMP。该字符长度不能超过 1024 字节。url 不支持中文等特殊字符。
是否转码。如果设为 true
,则需要在该方法前
先调用 setLiveTranscoding
方法。
true
:转码。转码是指在旁路推流时对音视频流进行转码处理后,再推送到其他 CDN 服务器。
多适用于频道内有多个主播,需要进行混流、合图的场景。false
:不转码。调节本地播放的指定远端用户音量。
你可以多次调用该方法调节不同远端用户在本地播放的音量,或对某个远端用户在本地播放的音量调节多次。
Note
远端用户的 ID。
播放音量,取值范围为 [0,100]。
创建数据流。
设置是否保证接收方在 5 秒内收到数据消息:
true
:接收方 5 秒内会收到发送方所发送的数据,否则会收到 StreamMessageError
回调并获得相应报错信息。false
:接收方不保证收到,就算数据丢失也不会报错。设置接收方是否按发送方发送的顺序接收数据消息:
true
:接收方会按照发送方发送的顺序收到数据包。false
:接收方不保证按照发送方发送的顺序收到数据包。创建数据流。
数据流设置。详见 DataStreamConfig
。
销毁当前的 RtcChannel
对象。
RtcChannel
对象。开启或关闭内置加密。
是否开启内置加密:
true
: 开启内置加密。false
: 关闭内置加密。配置内置加密模式和密钥。详见 EncryptionConfig
。
RtcEngine
对象并完成初始化。获取当前的通话 ID。
获取网络连接状态。
使用 UID 加入频道。
Note
RtcEngine
对象时用的 App ID 一致。用户成功加入(切换)频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute
方法实现。
在 App 服务器端生成的用于鉴权的 Token,详见从服务端生成 Token。
开发者需加入的任何附加信息。一般可设置为空字符串,或频道相关信息。该信息不会传递给频道内的其他用户。
用户 ID,32 位无符号整数。建议设置范围:1 到 (232-1),并保证唯一性。
如果不指定(即设为 0),SDK 会自动分配一个,
并在 JoinChannelSuccess
回调方法中返回,App 层必须记住该返回值并维护,SDK 不对该返回值进行维护。
频道媒体设置选项。
RtcChannel
频道。RtcChannel
加入了一个频道,并在该 RtcChannel
频道中发布了音视频流。RtcEngine
对象并完成初始化。使用 User Account 加入频道。
Note
用户成功加入(切换)频道后,默认订阅频道内所有其他用户的音频流和视频流,因此产生用量并影响计费。如果想取消订阅,可以通过调用相应的 mute
方法实现。
在 App 服务器端生成的用于鉴权的 Token,详见从服务端生成 Token。
用户 User Account。该参数为必需,最大不超过 255 字节,不可为 null。请确保加入频道的 User Account 的唯一性。 以下为支持的字符集范围(共 89 个字符):
频道媒体设置选项。
停止/恢复接收所有音频流。
设置是否停止接收所有远端音频流:
true
:停止接收所有远端音频流。false
:继续接收所有远端音频流(默认)。停止/恢复接收所有视频流。
设置是否停止/恢复接收所有视频流:
true
:停止接收所有远端视频流。false
:(默认)继续接收所有远端视频流。停止/恢复接收指定音频流。
指定的用户 ID。
设置是否停止/恢复接收指定音频流:
true
:停止接收指定用户的音频流。false
:(默认)继续接收指定用户的音频流。停止/恢复接收指定视频流。
指定的用户 ID。
设置是否停止/恢复接收指定视频流:
true
:停止接收指定用户的视频流。false
:(默认)继续接收指定用户的视频流。将本地音视频流发布到本频道。
该方法的调用需满足以下要求,否则 SDK 会返回 Refused(-5)
:
RtcChannel
类所对应的频道。RtcChannel
类
下的 setClientRole
方法设置用户角色。注册媒体 Metadata 观测器。
该接口通过在直播的视频帧中同步添加 Metadata,实现发送商品链接、分发优惠券、发送答题等功能,构建更为丰富的直播互动方式。
Note
joinChannel
加入频道前调用该方法。删除所有的频道事件句柄。
事件类型。
删除输入的在线媒体流。
成功删除后,会触发 UserJoined
回调,其中 uid
为 666
。
Warning
客户端输入在线媒体流功能即将停服。如果你尚未集成该功能,Agora 建议你不要使用。详见《部分服务下架计划》。
待删除的外部视频流 URL 地址,格式为 HTTP 或 HTTPS。
删除指定的频道事件句柄。
该方法删除指定的回调句柄。对于某些注册的回调句柄, 如果你在收到相应回调事件后无需再次接收回调消息,可以调用该方法移除回调句柄。
事件类型。
RtcChannel
对象的事件回调。
删除旁路推流地址。
调用该方法后,SDK 会在本地
触发 RtmpStreamingStateChanged
回调,
报告删除旁路推流地址的状态。
Note
待删除的推流地址,格式为 RTMP。该字符长度不能超过 1024 字节。推流地址不支持中文等特殊字符。
更新 Token。
在如下情况下,SDK 判定当前的 Token 已过期:
TokenPrivilegeWillExpire
回调,或者ConnectionStateChanged
回调中报告 TokenExpired(9)
错误。你应该在服务端重新获取 token,然后调用该方法更新 Token,否则 SDK 无法和服务器建立连接。
新的 Token。
发送 metadata。
需要发送的 metadata。
Note
请确保在该方法中传入的 Metadata 大小不超过 setMaxMetadataSize
中设定的值。
发送数据流。
该方法发送数据流消息到频道内所有用户。SDK 对该方法的实现进行了如下限制:
成功调用该方法后,远端会触发 StreamMessage
回调,远端用户可以在该回调中获取接收到的流消息;
若调用失败,远端会触发 StreamMessageError
回调。
createDataStream 方法返回的数据流 ID。
待发送的数据,格式为 byte[]。
设置直播场景下的用户角色。
在加入频道前和加入频道后均可调用该方法设置用户角色。
如果你在加入频道后调用该方法成功切换用户角色,SDK 会触发以下回调:
ClientRoleChanged
回调。UserJoined
或 UserOffline(BecomeAudience)
回调。Note
setChannelProfile
中 profile
设为 LiveBroadcasting
)时生效。options
参数,支持设置用户级别。直播场景中的用户角色。详见 ClientRole。
用户具体设置,包含用户级别,详见 ClientRoleOptions。
设置是否默认接收音频流。
是否默认取消订阅远端用户的音频流:
设置是否默认接收视频流。
是否默认取消订阅远端用户的视频流:
设置内置的加密方案。
加密方式。
启用内置加密,并设置数据加密密码。
加密密码。
设置直播转码。
该方法用于旁路推流的视图布局及音频设置等。调用该方法更新转码参数 LiveTranscoding
时,
SDK 会触发 TranscodingUpdated
回调。
首次调用该方法设置转码参数时,不会触发 TranscodingUpdated
回调。
Note
addPublishStreamUrl
。旁路推流布局相关设置。
设置 Metadata 的最大数据大小。
Metadata 的最大数据大小,单位为 Byte,最大值不超过 1024。
设置默认订阅的视频流类型。
设置视频流大小类型。
设置用户媒体流优先级。
该方法可以与 setRemoteSubscribeFallbackOption
搭配使用。
如果将某个用户的优先级设为高,那么发给这个用户的音视频流的优先级就会高于其他用户。
Note
Agora SDK 仅允许将一名远端用户设为高优先级。
远端用户的 ID。
远端用户的需求优先级。
设置订阅的视频流类型。
在网络条件受限的情况下,如果发送端没有调用 enableDualStreamMode
关闭双流模式,
接收端可以选择接收大流还是小流。其中,大流可以接为高分辨率高码率的视频流,小流则是低分辨率低码率的视频流。
正常情况下,用户默认接收大流。如需节约带宽和计算资源,则可以调用该方法动态调整对应远端视频流的大小。 SDK 会根据该方法中的设置,切换大小流。
视频小流默认的宽高比和视频大流的宽高比一致。根据当前大流的宽高比,系统会自动分配小流的分辨率、帧率及码率。
远端用户的 ID。
设置视频流大小类型。
设置远端用户声音的空间位置和音量,方便本地用户听声辨位。
用户通过调用该接口,设置远端用户声音出现的位置,左右声道的声音差异会让用户产生声音的方位感, 从而判断出远端用户的实时位置。 在多人在线游戏场景,如吃鸡游戏中,该方法能有效增加游戏角色的方位感,模拟真实场景。
Note
enableSoundPositionIndication
开启远端用户的语音立体声。远端用户的 ID。
设置远端用户声音出现的位置,取值范围为 [-1.0,1.0]:
设置远端用户声音的音量,取值范围为 [0.0,100.0],默认值为 100.0, 表示该用户的原始音量。取值越小,则音量越低。
开始跨频道媒体流转发。
成功调用该方法后,SDK 会触发 ChannelMediaRelayStateChanged
和
ChannelMediaRelayEvent
回调,并在回调中报告当前的跨频道媒体流转发状态和事件。
ChannelMediaRelayStateChanged
回调报告 Running(2)
和 None(0)
,
且 ChannelMediaRelayEvent
回调报告 SentToDestinationChannel(4)
,则表示 SDK 开始在源频道和目标频道之间转发媒体流。ChannelMediaRelayStateChanged
回调报告 Failure(3)
,则表示跨频道媒体流转发出现异常。Note
stopChannelMediaRelay
方法退出当前的转发状态。跨频道媒体流转发参数配置。
停止跨频道媒体流转发。
一旦停止,主播会退出所有目标频道。
成功调用该方法后,SDK 会触发 ChannelMediaRelayStateChanged
回调。
如果报告 Idle(0)
和 None(0)
,则表示已停止转发媒体流。
Note
如果该方法调用不成功,SDK 会触发 ChannelMediaRelayStateChanged
回调,
并报告状态码 ServerNoResponse(2)
或 ServerConnectionLost(8)
。
你可以调用 leaveChannel
方法离开频道,跨频道媒体流转发会自动停止。
停止将本地音视频流发布到本频道。
请确保你想要停止发布音视频流的频道 channelId
,与当前正在 publish
音视频流的频道 channelId
一致,
否则 SDK 会返回 Refused(-5)
。
注销媒体 Metadata 观测器。
更新媒体流转发的频道。
成功开始跨频道转发媒体流后,如果你希望将流转发到多个目标频道,或退出当前的转发频道,可以调用该方法。
成功调用该方法后,SDK 会触发 ChannelMediaRelayEvent
回调,
并在回调中报告状态码 UpdateDestinationChannel(7)
。
Note
startChannelMediaRelay
方法后调用该方法,
更新媒体流转发的频道。跨频道媒体流转发参数配置。
创建并返回 RtcChannel
对象。
你可以多次调用该方法,创建多个 RtcChannel
对象,再调用各 RtcChannel
对象中的 joinChannel
方法,实现同时加入多个频道。
加入多个频道后,你可以同时订阅各个频道的音、视频流;但是同一时间只能在一个频道发布一路音、视频流。
标识通话的频道名称,长度在 64 字节以内的字符串。以下为支持的字符集范围(共 89 个字符):
Note
Refused(-5)
。RtcChannel
对象。channelId
设为空字符 "",则返回错误码 Refused(-5)
。销毁所有的 RtcChannel
对象。
RtcChannel
类。