融云 CDN 播放器
融云 CDN 插件(RongRTCPlayer
) 从 5.3.0 版本开始提供 CDN 播放器 RCRTCMediaPlayer
。
融云 CDN 插件 RongRTCPlayer
中提供了 CDN 流播放组件 RCRTCMediaPlayer
,可用于播放第三方 CDN 直播流、获取 SEI 数据、或直接获取音视频帧数据用于自行处理。
- 仅支持播放 CDN 直播流,不支持点播文件或网络点播资源。
- 支持的 CDN 直播流协议:RTMP、HTTP-FLV、HLS
- 仅支持播放 60fps 以下(不含)帧率的视频。
适用场景
融云 CDN 插件(RongRTCPlayer
)直接在 RTC 房间内提供了 融云 CDN 服务的订阅、播放等处理逻辑,降低了 App 业务侧的接入成本。
CDN 流播放组件 RCRTCMediaPlayer
可直接输入 CDN 流地址进行播放,不依赖于用户加入 RTC 房,能有效降低 CDN 首屏打开延时,带来更优秀的用户体验。具体适用场景如下:
- 您的 App 自行接入了第三方 CDN 服务,希望通过融云 CDN 播放器组件播放第三方拉流地址。
- 您的 App 使用了融云 CDN 服务,按照融云指定的规则自行拼接生成推流、拉流地址后(详见融云 CDN 服务配置),通过融云客户端旁路推流或服务端旁路推流接口将 CDN 推流地址提交给融云。配置成功后,可在融云 CDN 播放器中输入您自行生成的 CDN 拉流地址进行播放。该方式要求您将融云 CDN 的「推拉流模式」配置为自行生成推拉流地址模式。
- 您的 App 使用了融云 CDN 服务,并直接使用融云服务端接口获取融云 CDN 拉流地址,您也可以通过融云 CDN 播放器组件进行播放。该方式要求您将融云 CDN 的「推拉流模式」配置为开播自动推流或开播手动推流模式。
集成 CDN 播放器组件
RCRTCMediaPlayer
在融云 CDN 插件(RongRTCPlayer
)中提供。
融云 CDN 插件(RongRTCPlayer
) 支持通过 Maven 或 Android 本地库模块 (Module) 导入。详见导入 SDK。
使用 CDN 播放器组件
-
创建
RCRTCMediaPlayer
实例,同时设置播放事件代理RCRTCMediaPlayerEventListener
。注意,设置代理必须在加载资源(open
)调用之前。mMediaPlayer = new RCRTCMediaPlayer();
/**注册播放器事件监听,不需要时可取消注册 unRegisterEventListener() */
mMediaPlayer.registerEventListener(mediaPlayerEventListener); -
加载资源。资源缓冲完成后,不会自动播放。
/** ret==0时加载成功,其他返回值为错误码。注意 open 调用后,需要在收到 OPEN_COMPLETED 通知后,调用 play 接口才会播放 **/
int ret = mMediaPlayer.open(url); -
播放资源。
/** ret==0时加载成功,其他返回值为错误码。如果想暂停播放,请调用pause方法 **/
int ret = mMediaPlayer.play() -
设置渲染视图。注意
setVideoView
必须在open
接口后才能调用。提示如果设置音频帧数据监听
RCRTCMediaPlayerVideoFrameListener
,则播放器不执行内部渲染。RCRTCVideoView videoView = new RCRTCVideoView(context.getApplicationContext());
FrameLayout.LayoutParams layoutParams =
new FrameLayout.LayoutParams(
ViewGroup.LayoutParams.MATCH_PARENT,
ViewGroup.LayoutParams.MATCH_PARENT);
layoutParams.gravity = Gravity.CENTER_HORIZONTAL;
frameLayout.addView(videoView, layoutParams);
/** 注意 setVideoView接口 需要在 open 接口调用后才能调用 */
mMediaPlayer.setVideoView(videoView); -
(可选)设置渲染模式。如不设置,默认为
ScalingType.SCALE_ASPECT_FIT
,等比例填充黑边,直到一个维度到达区域边界。// 注意要先设置视图,再设置视图渲染模式,详细见 ScalingType 枚举
mMediaPlayer.setRenderMode(ScalingType.SCALE_ASPECT_FILL); -
销毁当前播放资源。App 用户可能需要切换到另一个主播的 CDN 流,或者切换到不同分辨率的 CDN 流地址时,此时必须先调用
destroy
,再调用open
加载另一个资源。/** 停止播放,如果想恢复播放,请调用 open方法 **/
mMediaPlayer.destroy();
播放控制
-
在播放过程中可暂停。暂停后调用
play
方法可恢复播放。/** ret==0时加载成功,其他返回值为错误码。如果想恢复播放,请调用play方法 **/
int ret = mMediaPlayer.pause(); -
设置播放音量。如不设置,使用默认值 100。
/**播放器支持设置播放音量,以及取值当前音量,取值范围 [0,100],如果用户没有设置音量,默认值 100(媒体文件的原始音量)。**/
mMediaPlayer.setVolume(progress); -
获取当前音量
int volume = mMediaPlayer.getVolume();