超低延时直播功能接入
所有文档
menu

智能视频SDK

超低延时直播功能接入

移动直播SDK短视频SDK

接入准备

接入超低延时直播功能,需要使用播放器SDK高级版,并申请高级版License。

功能介绍

在高级版SDK中,提供了超低延时直播流的播放能力,该能力由RTCPlayerWrapper组件提供,请确保该组件已集成到你的App中,SDK接口设计接近Android原生MediaPlayer接口,方便理解与接入。

SDK当前支持的音视频编码格式如下:

  • 视频:H.264/HEVC,支持B帧
  • 音频:AAC

Demo体验

前往SDK简介与下载页面扫码安装DEMO

rtcplayer.gif

快速开始

  1. 创建播放渲染视窗
// 在布局文件中添加渲染控件
<com.baidu.rtc.RTCVideoView
        android:id="@+id/brtc_video_view"
 		android:layout_width="match_parent"
        android:layout_height="match_parent" />

// 寻回渲染控件对象
mVideoView = (RTCVideoView) findViewById(R.id.brtc_video_view);
  1. 设置默认加载SO架构并启动SO后下载
// SO提供armeabi/armeabi-v7a/arm64-v8a三种架构,设置默认加载的架构
RTCLoadManager.getInstance(this).setDefaultCpuType("arm64-v8a");
// 注册SO后下载进度监听器
RTCLoadManager.getInstance(this).registerCallback(mLoadListener);
// 开始SO后下载,下载完成后自动加载
RTCLoadManager.getInstance(this).loadLibraries(BRTCPlayerImpl.getDefaultSoDownloadUrl(), "arm64-v8a", null);
  1. 创建播放器对象及播放器初始化
// 创建播放器对象,需要传入您申请的高级版证书LicenseID,ID可以在百度智能云控制台(https://console.bce.baidu.com/bvc/#/bvc/player-license/list)查看
mBRTCPlayer = new BRTCPlayerImpl(this, "your-license-id");
// 创建播放参数集,初始化播放器
mPlayerParameters = new BRTCPlayerParameters();
// 使能SO后下载
mPlayerParameters.enableSoLaterLoad(true);
// 设置加载的SO架构
mPlayerParameters.setCpuType("arm64-v8a");
// 设置播放器信令服务地址
mPlayerParameters.setPullUrl(mSignalUrl);
// 初始化播放器 传入播放参数及事件监听器
mBRTCPlayer.initPlayer(mPlayerParameters, this);
  1. 播放设置
// 设置播放渲染视图
mBRTCPlayer.setSurfaceView(mVideoView);
// 设置媒体流地址
mBRTCPlayer.setStreamUri(mStreamUrl);
  1. 播放控制
// 准备播放,获取播放依赖资源
mBRTCPlayer.prepareAsync();
// 开始播放
mBRTCPlayer.startPlay();
// 暂停播放
mBRTCPlayer.pausePlay();
// 恢复播放
mBRTCPlayer.resumePlay();
// 停止播放
mBRTCPlayer.stopPlay();
  1. 释放播放器
// 释放播放器
mBRTCPlayer.releasePlayer();
  1. 混淆规则
-keepclasseswithmembernames,allowshrinking,allowoptimization class * {
    native <methods>;
}

-keep interface * {
    public <fields>;
    public <methods>;
}

-keep class com.baidu.rtc.** {*;}
-keep class com.webrtc.** {*;}

在播放器SDK Demo中对上述流程有详细的展示,可以参考

接口说明

BRTCPlayerParameters类

接口名 描述
void setEnableDebug(boolean enable) 设置是否开启debug日志
void setPullUrl(String pullUrl) 设置信令服务地址,格式为http[:s]//domain/brtc/v3/pullstream
void setCpuType(String cpuType) 指定下载的SO库CPU架构
void enableSoLaterLoad(boolean enableSoLaterLoad) 是否开启SO后下载
void setAutoPlay(boolean autoPlay) 设置是否自动启播,默认false
void setVideoDecodeFormat(int videoDecodeFormat) 设置视频解码格式,由业务侧确定是否为H265格式,默认为H264格式
void setEnableVideoBFrame(boolean bFrame) 是否开启B帧支持,由业务侧确定是否开启,默认关闭

BRTCPlayerEvents类

错误码 含义
BRTC_PLAYER_ERROR_INVALID_URL = 10000 URL 格式错误
BRTC_PLAYER_ERROR_ICE_CHANNEL = 10001 ICE 连接错误
BRTC_PLAYER_ERROR_RESERVED = 10002 替换预留错误码
BRTC_PLAYER_ERROR_CONNECTION = 10003 Peer连接创建失败
BRTC_PLAYER_ERROR_LOCAL_SDP_REQUEST = 10004 媒体描述请求失败
BRTC_PLAYER_ERROR_LOCAL_SDP_SET = 10005 媒体描述设置失败
BRTC_PLAYER_ERROR_REMOTE_SDP_REQUEST = 10006 远端媒体描述请求失败
BRTC_PLAYER_ERROR_REMOTE_SDP_SET = 10007 远端媒体描述设置失败
BRTC_PLAYER_ERROR_INVALID_STATE = 10008 播放状态错误
BRTC_PLAYER_ERROR_STREAMING_INTERRUPT = 10009 媒体流中断,一段时间未收媒体流,SDK内部检测到断流错误后会立即停止播放
BRTC_PLAYER_ERROR_LOAD_LIBRARIES = 10010 SO库文件后下载失败
BRTC_PLAYER_ERROR_INVALID_LICENSE = 100011 license错误
BRTC_PLAYER_ERROR_LICENSE_FEATURE_INVALID = 10012 当前license不包含低延时播放feature
BRTC_PLAYER_ERROR_DECODER_OPEN_FAILED = 10013 解码器打开失败

事件码 含义
BRTC_PLAYER_EVENT_REMOTE_RENDER = 1000 开始远端渲染
BRTC_PLAYER_EVENT_ICE_CONNECTED = 1001 ICE连接成功
BRTC_PLAYER_EVENT_PEER_CONNECTION_CLOSED = 1002 对端连接关闭
BRTC_PLAYER_EVENT_STATS_UPDATED = 1003 媒体流信息更新
BRTC_PLAYER_EVENT_BUFFERING_START = 1004 Buffering start事件
BRTC_PLAYER_EVENT_BUFFERING_END = 1005 Buffering end事件
BRTC_PLAYER_EVENT_ICE_DISCONNECTED = 1006 ICE连接断开
BRTC_PLAYER_EVENT_NO_STREAMING_DETECTED = 1007 没有检测到媒体流
BRTC_PLAYER_EVENT_PLAY_TIME_STATISTIC = 1008
BRTC_PLAYER_EVENT_LOCAL_SDP_SET = 1009
BRTC_PLAYER_EVENT_REMOTE_SDP_ACQUIRED = 1010
BRTC_PLAYER_EVENT_LIBS_DOWNLOAD_COMPLETED = 1011
BRTC_PLAYER_EVENT_LIBS_LOADED_SUCCESS = 1012
BRTC_PLAYER_EVENT_RENDERVIEW_VISIBLE = 1013
启播各阶段耗时统计
BRTC_PLAYER_EVENT_DECODER_OPENED = 1014 解码器成功打开

事件回调 含义
void onPrepared() 播放器准备就绪
void onFirstFrameRendered() 首帧渲染事件
void onResolutionChanged(int w, int h) 分辨率更新回调
void onError(int errCode, String msg) 错误错误回调,错误码定义见前文
void onInfoUpdated(int event, Object msg) 事件更新回调,事件码定义见前文
void onPlayerStateChanged(BRTCPlayer.PlayerState currentState) 播放状态更新
void onSEIRecv(ByteBuffer data) 接收到SEI 消息,回调在解码线程,不应在该回调里实现复杂业务

SEI 数据格式:[nal_type(1)|sei_type(1)|sei_size(n+1)|sei_payload(n*255+m)|trailing_bits(1)]
sei_size: 需判断第3个字节起连续0xFF的个数n,加第1个不为0xFF的字节(如: 0x21),该字段占字节数为 n + 1; 其值为:0xFF*n+0x21;
sei_payload: SEI字段的值;如:[ 0x06 0x05 0x18 0x54 0x80 0x83 0x97 0xF0 0x23 0x47 0x4B 0xB7 0xF7 0x4F 0x32 0xB5 0x4E 0x06 0xAC 0x27 0x11 0xFE 0x69 0x79 0x01 0x00 0x00 0x80 ]

RTCVideoView类

枚举类型 描述
ScalingType.SCALE_ASPECT_FIT 缩放模式:适应
ScalingType.SCALE_ASPECT_FILL 缩放模式:拉伸

RTCLoadManager类

接口名 描述
RTCLoadManager getInstance(Context context) 获取单例
void setDefaultCpuType(String cpuType) 指定下载的SO库CPU架构
void registerCallback(LoadListener callback) 注册SO后下载进度监听器
void unregisterCallback(LoadListener callback) 反注册SO后下载进度监听器
void loadLibraries(String soLaterLoadUrl, String cpuType, LoadListener loadListener) 从soLaterLoadUrl下载cpuType架构的SO,并将进度回调给loadListener。
默认SO下载地址可通过BRTCPlayerImpl.getDefaultSoDownloadUrl()获取

BRTCPlayer接口

接口名 描述
long initPlayer(BRTCPlayerParameters playParameters, BRTCPlayerEvents events) 初始化播放器。
playParameters 播放参数集
events 播放事件监听
void setEventObserver(BRTCPlayerEvents events) 设置播放事件监听
void setSurfaceView(RTCVideoView surfaceView) 设置播放渲染视窗,当前只支持RTCVideoView
void setScalingType(RTCVideoView.ScalingType scaleType) 设置播放视窗缩放模式
void prepareAsync() 准备播放
void setPlayWhenReady(boolean autoPlay) 设置是否自动启播,默认false
void startPlay() 开始播放
void pausePlay() 暂停播放,不停止拉流,仅暂停本地媒体流渲染
void resumePlay() 恢复播放,从暂停状态恢复播放
void stopPlay() 停止播放,停止媒体拉流及渲染,再次播放需调用startPlay()
boolean hasVideo() 媒体流是否包含视频流
boolean hasAudio() 媒体流是否包含音频流
void releasePlayer() 释放播放器
void setVolume(double volume) 设备播放音量
void setStreamUri(String streamPath) 设置播放媒体流地址,媒体流URL格式为webrtc://domain/app/stream
PlayerState getPlayerState() 获取播放状态
上一篇
HDR功能接入
下一篇
投屏功能接入