URL 拉流播放
AddView
添加渲染视图。
public void addView(View view, ViewConfig viewConfig) throws RteException;
适用场景
当你需要使用播放器播放视频,你可以调用该方法将一个视图(view)添加到视频渲染器中,以便显示视频内容。
调用时机
该方法需要在 setCanvas 之前调用。
调用限制
当前仅支持添加一个视图。
参数
- view
- SurfaceView 对象。
- config
- View 对象的设置,目前请传空。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
code
errorCode
destroy
销毁 RTE 对象。
public synchronized void destroy() throws RteException;
该方法释放 RTE 对象使用的所有资源。
调用限制
无。
getInfo
获取播放器播放及媒体流的相关信息。
public void getInfo(PlayerInfo info) throws RteException;
你可以通过该方法获取播放器及媒体流的相关信息,例如音频采样率、视频帧的尺寸等信息。
调用时机
该方法需要在 Player 之后调用。
调用限制
无。
参数
- info
- 播放器及媒体流的相关信息,详见 PlayerInfo。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
message
muteAudio
订阅或取消订阅主播的音频流。
public void muteAudio(boolean mute) throws RteException;
观众端可以调用该方法来设置是否订阅主播的音频流。
调用时机
该方法需要在 openWithUrl 之后调用。
调用限制
无。
相关回调
成功调用该方法后,会触发 onPlayerInfoUpdated [2/2] 回调报告最新的播放器和媒体流信息。
参数
- mute
- 是否订阅主播的音频流:
true
:不订阅主播的音频流。false
:订阅主播的音频流。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
muteVideo
订阅或取消订阅主播的视频流。
public void muteVideo(boolean mute) throws RteException;
观众端可以调用该方法来设置是否订阅主播的视频流。
调用时机
该方法需要在 openWithUrl 之后调用。
调用限制
无。
相关回调
成功调用该方法后,会触发 onPlayerInfoUpdated [2/2] 回调报告最新的播放器和媒体流信息。
参数
- mute
- 是否订阅主播的视频流:
true
:不订阅主播的视频流。false
:订阅主播的视频流。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
openWithUrl
打开 URL 资源。
public void openWithUrl(String url, long startTime, AsyncCallback callback);
该方法支持通过 URL 打开实时流媒体。如果你想要加快打开 URL 资源的速度,可以在调用该方法前,调用 preloadWithUrl 预加载资源。
如果资源打开失败,你会收到 onStateChanged 的回调报告状态为 FAILED。此时你需要先调用 stop 然后再调用 openWithUrl 重新打开 URL 资源。如果你设置关闭了自动播放,打开资源后可以调用 play 进行播放。
调用时机
该方法需要在 Player 之后调用。
调用限制
该方法目前仅支持打开以 rte://
开头的 URL。
相关回调
调用该方法后会触发 onStateChanged 回调,报告播放器状态为 OPENING,表示正在打开 URL。成功打开后,报告播放器状态为 OPEN_COMPLETED。
参数
- url
- 带
rte://
前缀的 URL。各字段的详细说明详见观众端 URL 拉流。 - startTime
- 预留参数。
- callback
- 一个异步回调函数,用于通知打开 URL 资源的结果。如果打开过程中出错,你可以通过 AsyncCallback 下的 onResult 回调得知具体错误信息。
pause
暂停播放。
public void pause() throws RteException;
调用时机
该方法需要在 play 之后调用。
调用限制
无。
相关回调
成功调用该方法后会触发 onStateChanged 回调,报告播放器状态为 PAUSED。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
Player
构造一个播放器对象。
public Player(Rte rte, PlayerInitialConfig initialConfig);
调用时机
该方法需要在 initMediaEngine 之后调用。
调用限制
无。
参数
- rte
- 一个 Rte 对象。
- initialConfig
- 播放器对象初始化设置,可传空指针。
play
播放 URL 资源。
public void play() throws RteException;
如果你关闭了自动播放,当你调用 openWithUrl 成功打开实时流媒体,你可以调用此方法进行播放。
调用时机
请在收到 onStateChanged 回调报告状态为 OPEN_COMPLETED 后再调用该方法。
调用限制
该方法目前仅支持播放带 rte://
前缀的 URL。
相关回调
成功调用该方法后,会触发 onStateChanged 回调来报告播放器状态。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
preloadWithUrl
预加载 URL 资源。
public static void preloadWithUrl(String url) throws RteException;
成功预加载后,可以加快通过 openWithUrl 打开 URL 资源的速度。当需要使用这些资源时,可以更加快速地访问,缩短等待的过程。
适用场景
在打开媒体资源之前,提前加载可以减少用户等待时间,提供更流畅的视听体验。
调用时机
该方法需要在 openWithUrl 之前调用。
调用限制
该方法目前仅对带 rte://
前缀的 URL 生效,最多可以预加载 20 个 URL。如果超出限制,新预加载的 URL 将会替换最早的 URL。
参数
- url
- 带
rte://
前缀的 URL。各字段的详细说明详见观众端 URL 拉流。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
removeView
registerObserver
注册播放器观测器的对象。
public void registerObserver(PlayerObserver observer) throws RteException;
调用该方法前,你需要实现一个继承自 PlayerObserver 的接口类。
调用时机
该方法需要在 Player 之后调用。
调用限制
无。
参数
- observer
- 接口对象实例,详见 PlayerObserver。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
Rte
构造一个 RTE 对象。
public Rte(InitialConfig initialConfig);
RTE 对象用于组织和管理 Rte 内部相关资源。
调用时机
该方法需要在 initMediaEngine 前调用。
调用限制
无。
参数
- initialConfig
- 初始化设置,当前可传空。
setAbrFallbackLayer
设置已订阅的视频流的回退选项。
public void setAbrFallbackLayer(Constants.AbrFallbackLayer fallbackLayer) throws RteException;
网络不理想的环境下,实时通信音视频的质量会下降。调用该方法后,SDK 会在网络情况差的时候将视频流的分辨率回退到你指定的视频质量层级。不同的视频质量层级对应不同的分辨率和码率。同时,SDK 会持续监控网络质量,并在网络质量改善时恢复至你所订阅的视频流质量层级。
默认情况下,调用该方法后只能选择回退至 LOW 或 AUDIO_ONLY。如果你对视频体验有更高要求,你可以联系技术支持开通 ABR 功能。启用该功能后,可以选择回退到所有质量层级的视频流,并支持自定义不同质量层级的视频流所对应的分辨率。
适用场景
- 在一般场景下,你可以调用该方法并将回退的质量层级设为 LOW 或 AUDIO_ONLY,SDK 会在网络情况差的时候将视频流回退为低质量的视频流、或是仅接收音频流。
- 如果对视频流回退的分辨率要求较高,可以联系联系技术支持开通 ABR 功能。开通后,你可以自定义每个层级的分辨率。SDK 会以你指定的最低质量层级分辨率为下限,在此范围内根据网络状况动态调整分辨率。详细功能实现详见观众端 URL 拉流。
调用时机
该方法需要在 setConfigs [2/3] 之前调用。
调用限制
调用该方法时如果你未开通 ABR 功能,视频流回退的质量层级只能选择 LOW 或 AUDIO_ONLY。
参数
- fallbackLayer
- 视频流回退的质量层级,详见 AbrFallbackLayer。在自定义 LAYER1 至 LAYER6 的分辨率时,可以参考下表进行设置,你也可以根据实际需求自行设置:
视频质量层级 分辨率 LAYER1 2160p(4K)
LAYER2 1440p(2K) LAYER3 1080p(HD) LAYER4 720p(HD) LAYER5 540p(SD) LAYER6 480p(SD) 注意自定义分辨率时请务必将视频质量层级(Layer)按分辨率从大到小进行排序,分辨率相同时需按帧率从大到小进行排序。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
setAbrSubscriptionLayer
设置订阅的媒体流的质量层级。
public void setAbrSubscriptionLayer(Constants.AbrSubscriptionLayer subscriptionLayer) throws RteException;
你可以根据实际的网络情况切换订阅不同的视频流质量层级,对应不同的分辨率。 默认情况下,调用该方法后观众只能切换订阅视频的大小流,即在 HIGH 和 LOW 之间切换。如对视频分辨率切换有更高要求,你可以联系技术支持开通 ABR(自适应码率)功能。启用该功能后,你可以自定义不同质量层级的视频流所对应的分辨率,观众可以根据需求切换所有质量层级的视频流。详细功能实现详见观众端 URL 拉流。
适用场景
在网络环境不稳定的情况下,观众端可以根据实际的网络状况来选择订阅合适的视频质量级别,以保证流畅的观感体验。
调用时机
该方法需要在 setConfigs [2/3] 之前调用。
调用限制
调用该方法时如果你未开通 ABR 功能,订阅的视频质量层级只能选择 HIGH 或 LOW。
参数
- subscriptionLayer
- 订阅的视频质量层级,详见 AbrSubscriptionLayer。在自定义 LAYER1 至 LAYER6 的分辨率时,可以参考下表进行设置,你也可以根据实际需求自行设置:注意自定义分辨率时请务必将视频质量层级(Layer)按分辨率从大到小进行排序,分辨率相同时需按帧率从大到小进行排序。
视频质量层级 分辨率 LAYER1 2160p(4K)
LAYER2 1440p(2K) LAYER3 1080p(HD) LAYER4 720p(HD) LAYER5 540p(SD) LAYER6 480p(SD)
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
setAppId
设置 App ID。
public void setAppId(String appId) throws RteException;
调用时机
该方法需要在 initMediaEngine 之前调用。
调用限制
无。
参数
- appId
- 你的项目的 App ID,在声网控制台获取。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
setAutoPlay
设置是否自动播放。
public void setAutoPlay(boolean autoPlay) throws RteException;
当你调用 openWithUrl 打开媒体流之前,你可以调用该方法设置是否自动播放。如不设置,默认会启用自动播放。
调用时机
该方法需要在 openWithUrl 之前调用。
调用限制
无。
参数
- autoPlay
- 是否自动播放:
true
:(默认)开启自动播放。false
:关闭自动播放。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
setCanvas
setConfigs [1/3]
setConfigs [2/3]
播放器配置。
public void setConfigs(PlayerConfig config) throws RteException;
你可以调用该方法来进行播放器设置,如开启自动播放、订阅不同分辨率和码率的视频流等。
调用时机
该方法需要在 Player 之后调用。
调用限制
无。
参数
- config
- 播放器设置的对象,详见 PlayerConfig。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
setConfigs [3/3]
设置播放器视频渲染配置。
public void setConfigs(CanvasConfig config) throws RteException;
调用时机
该方法需要在 openWithUrl 之前调用。
调用限制
无。
参数
- config
- Canvas 对象的设置,详见 CanvasConfig。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
setJsonParameter
通过 JSON 配置 SDK 提供技术预览或特别定制功能。
public void setJsonParameter(String jsonParameter) throws RteException;
适用场景
当你需要设置私有参数或使用定制功能时,可以调用该方法。
调用时机
该方法需要在 setConfigs [1/3] 之前调用。
调用限制
无。
参数
- jsonParameter
- JSON 字符串形式的参数。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
setMirrorMode
设置视频的镜像模式。
public void setVideoMirrorMode(Constants.VideoMirrorMode mode) throws RteException ;
调用时机
该方法需要在 setConfigs [3/3] 之前调用。
调用限制
无。
参数
- mode
- 镜像模式,详见 VideoMirrorMode。默认为 AUTO,即由 SDK 决定镜像模式。默认关闭远端用户的镜像模式。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
setRenderMode
设置视频的渲染模式。
public void setVideoRenderMode(Constants.VideoRenderMode mode) throws RteException ;
调用时机
该方法需要在 setConfigs [3/3] 之前调用。
调用限制
无。
参数
- mode
- 渲染模式,详见 VideoRenderMode。默认的渲染模式为 HIDDEN,即视频尺寸等比缩放,优先保证视窗被填满。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
stop
停止播放媒体资源。
public void pause() throws RteException;
当你成功打开 URL 流并调用 play 播放后,如果你想停止播放,可以调用此方法。如果你需要暂停播放,请调用 pause。
如果你调用 openWithUrl 打开 URL 流失败,需要先调用此方法,然后再调用 openWithUrl 重新打开 URL。
调用时机
该方法需要在 openWithUrl 之后调用。
调用限制
无。
相关回调
成功调用该方法后会触发 onStateChanged 回调,并报告播放器状态为 STOPPED。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
getAbrFallbackLayer
获取已设置的视频流回退选项。
public Constants.AbrFallbackLayer getAbrFallbackLayer() throws RteException;
调用时机
该方法需要在 getConfigs [2/3] 之后调用。
调用限制
无。
返回值
设置的视频流回退选项,详见 AbrFallbackLayer。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
getAbrSubscriptionLayer
获取所订阅的视频流的质量层级。
public Constants.AbrSubscriptionLayer getAbrSubscriptionLayer() throws RteException;
调用时机
该方法需要在 getConfigs [2/3] 之后调用。
调用限制
无。
返回值
当前设置的视频质量层级,详见 AbrSubscriptionLayer。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
getAppId
获取设置的 App ID。
public String getAppId() throws RteException;
调用限制
无。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
getAutoPlay
获取自动播放设置。
public boolean getAutoPlay() throws RteException;
你可以调用该方法来得知当前播放器的自动播放设置。
调用时机
该方法需要在 getConfigs [2/3] 之后调用。
调用限制
无。
返回值
true
:获取成功。false
:获取失败。
getConfigs [1/3]
getConfigs [2/3]
获取当前的播放器设置。
public void getConfigs(PlayerConfig config) throws RteException;
调用时机
该方法需要在 Player 之后调用。
调用限制
无。
参数
- config
- 播放器设置的对象,详见 PlayerConfig。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
getConfigs [3/3]
获取当前的播放器视频渲染配置。
public void getConfigs(CanvasConfig config) throws RteException;
调用时机
该方法需要在 Canvas 之后调用。
调用限制
无。
参数
- config
- Canvas 对象的设置,详见 CanvasConfig。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
GetFromBridge
从 RtcEngine 中桥接出一个 RTE 对象。
public static synchronized Rte getFromBridge() throws RteException;
调用该方法创建的 RTE 对象,无需再通过 initMediaEngine 进行初始化。如果你之前未创建并初始化 RTC 引擎,可以先调用 Rte 创建一个 RTE 对象,然后再调用 initMediaEngine 进行初始化。
调用时机
调用该方法前,请确保已调用 create [2/2] 初始化 RTC 引擎。
调用限制
无。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
getJsonParameter
获取已设置的 SDK JSON 配置信息。
public String getJsonParameter() throws RteException;
当你调用 setJsonParameter 设置 JSON 配置信息后,你可以调用该方法获取已设置的配置信息。
调用时机
该方法需要在 getConfigs [1/3] 之后调用。
调用限制
无。
返回值
设置的 JSON 配置信息。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
getMirrorMode
获取当前设置的镜像模式。
public Constants.VideoMirrorMode getVideoMirrorMode() throws RteException ;
调用时机
该方法需要在 getConfigs [3/3] 之后调用。
调用限制
无。
返回值
当前设置的镜像模式,详见 VideoMirrorMode。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
getRenderMode
获取当前设置的视频渲染模式。
public Constants.VideoRenderMode getVideoRenderMode() throws RteException ;
调用时机
该方法需要在 getConfigs [3/3] 之后调用。
调用限制
无。
返回值
当前设置的视频渲染模式,详见 VideoRenderMode。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
getStats
获取播放器当前播放的媒体资源的统计信息。
public void getStats(PlayerGetStatsCallback callback);
该方法用于获取播放器的统计信息,包括解码、渲染帧率、音视频码率等,并通过回调函数异步返回结果。
调用时机
该方法需要在 openWithUrl 之后调用。
调用限制
无。
参数
- callback
- 回调接口,用于异步接收统计信息和可能的错误信息,详见 PlayerGetStatsCallback 接口类下的 onResult 回调。
initMediaEngine
初始化 RTE 引擎。
public void initMediaEngine(AsyncCallback callBack) throws RteException;
此方法为异步方法,通过回调函数返回初始化结果。
调用时机
该方法需要在创建 RTE 对象并设置 App ID 后调用。
调用限制
无。
参数
- callback
- 一个异步回调函数,用于返回引擎初始化结果。详见 AsyncCallback。初始化过程中的错误信息,详见 Error。在调用 initMediaEngine 方法初始化时,如果过程遇到立即可检测的错误(如参数无效、资源不足等),SDK 会通过此参数同步返回错误信息。
unregisterObserver
取消注册播放器事件观测器的对象。
public void unregisterObserver(PlayerObserver observer) throws RteException;
调用 registerObserver 注册播放器事件观测器后,如果你需要取消注册,请调用该方法。
调用时机
该方法需在 registerObserver 之后调用。
调用限制
无。
参数
- observer
- 接口对象实例,详见 PlayerObserver。
异常
调用该方法失败时,SDK 会抛出 RteException 异常,并返回相应的错误信息。你需要捕获异常并进行处理。
onAudioVolumeIndication
主播音量提示回调。
public void onAudioVolumeIndication(int volume){}
触发时机
当主播的音量发生变化时,SDK 会触发该回调。
使用限制
无。
参数
- volume
- 主播当前的音量,取值范围为 [0,225]。
onEvent
播放器事件回调。
public void onEvent(int event){}
如果你需要监控播放器事件,需要先调用 registerObserver 注册播放器观测器的对象。
触发时机
当播放器事件发生变化时,SDK 会触发该回调。
使用限制
无。
参数
- event
- 播放器事件,详见 PlayerEvent。
onMetadata [2/2]
已获取媒体附属信息回调。
public void onMetadata(int type, byte[] data){}
如果你需要获取媒体流的附属信息,需要先调用 registerObserver 注册播放器观测器的对象。
触发时机
在 SDK 解析播放器所播放的媒体流的附属信息后,会触发该回调报告数据的类型及其具体内容。
使用限制
无。
参数
- type
- 附属信息类型:
- 0: SEI(补充增强信息)类型。
- data
- 解析的附属信息。
onPlayerInfoUpdated [2/2]
播放器及媒体流的相关信息发生变化回调。
public void onPlayerInfoUpdated(PlayerInfo info){}
如果你需要获取播放器、媒体流的相关信息,需要先调用 registerObserver 注册播放器观测器的对象。你也可以直接通过 getInfo 方法来获取。
触发时机
当播放器及媒体流的相关信息发生变化时,SDK 会触发该回调。
使用限制
无。
参数
- info
- 播放器及媒体流的相关信息,详见 PlayerInfo。
onResolutionChanged
视频分辨率发生改变回调。
public void onResolutionChanged(int width, int height){}
如果你需要监控播放器所播放视频流分辨率的变化,需要先调用 registerObserver 注册播放器观测器的对象。
触发时机
当视频流的分辨率发生变化时,SDK 会触发该回调报告当前视频的宽高。
使用限制
无。
参数
- width
- 视频帧的宽度(px)。
- height
- 视频帧的高度(px)。
onResult
onResult
该回调用于处理获取媒体资源统计信息的异步操作结果。
@CalledByNative void onResult(PlayerStats playerStats, Error error);
触发时机
当获取媒体资源信息的异步操作完成后,SDK 会触发该回调报告异步操作的结果。
使用限制
无。
参数
- playerStats
- 媒体资源的统计信息,详见 PlayerStats。
- error
- 状态及错误信息,详见 Error。
onStateChanged
播放器状态发生改变回调。
public void onStateChanged(int old_state, int new_state, Error error){}
如果你需要监控播放器状态的变化,需要先调用 registerObserver 注册播放器观测器的对象。
触发时机
当播放器状态发生变化时,SDK 会触发此回调报告当前和变化之前的状态。
使用限制
无。
参数
- old_state
- 播放器变化前的状态,详见 PlayerState。
- new_state
- error
- 状态或错误信息,详见 Error。