搜索本产品文档关键词
超低延迟直播
所有文档
menu

智能视频SDK

超低延迟直播

概述

百度智能云超低延时直播(BRTCPlayer)是在百度智能云视频直播的基础上通过链路传输协议优化,解决传统直播延迟过高的弊端,通过集成百度智能云播放器SDK,可以支持千万级并发场景的毫秒级延时直播,并为用户提供低卡顿、秒开流畅的直播观看体验。

功能介绍

BRTCPlayer 主要功能如下:

  • 支持UDP信令模式:除HTTP标准信令模式外支持UDP信令模式,0 RTT 极速启播,有效提升秒开率;
  • 支持AVC、HEVC视频硬解码;
  • 支持视频B帧:引入B帧,可在清晰率不变的情况下降低码率;
  • 支持AAC音频解码,支持MP4A-ADTS格式 48000 及 44100 采样率;
  • 支持视频平滑渲染: 网络抖动时,平滑渲染视频帧, 降低卡顿;
  • 支持最小延迟动态配置:可实现延迟换流畅,在允许范围内增大延迟可有效降低卡顿;
  • 支持网络健康度实时检测;
  • 内置HTTPDns支持;
  • 支持 SEI 消息;

Demo体验

前往DEMO下载页面扫码安装DEMO

SDK 下载

前往SDK下载页面下载支持超低延时直播的智能视频SDK V1.8.0 及以后版本, 内含Demo源码;

快速集成

百度云超低延时直播由独立SDK提供支持,用户可通过在播放侧单独集成BRTCPlayer SDK实现超低延时直播,而推流侧则可复用当前使用的推流器,仅需在百度直播LSS平台针对当前域名开通低延时播放能力。 BRTCPlayer SDK具体的集成步骤如下:

  • BRTCPlayer 作为独立SDK 提供低延时播放能力,包体精简,BaiduRtcPlayer.framework 包体约1.78M;
  • 导入BaiduRtcPlayer.framework到工程,集成后的示例如下:

image.png

快速开始

  1. 创建播放渲染视窗
Java
1// 在布局文件中添加渲染控件
2    [self.playerView addSubview:self.bdPlayer.view];
3// 寻回渲染控件对象
  1. 创建播放器对象及播放器初始化
Java
1// 创建播放参数集,初始化播放器
2 BaiduRtcPlayerParameter *param = [BaiduRtcPlayerParameter defaultParameter];
3        param.externalSetActive = YES;
4        param.enableDtlsSrtp = NO;
5 // 初始化播放器 传入播放参数及事件监听器
6 self.bdPlayer = [[BaiduRtcPlayer alloc] initWithParameter:param
7                                                   delegate:self];
8
9// 设置播放器信令服务地址
10    [self._bdPlayer setSignalServer:@"http://test-pl-central.bigenemy.cn/brtc/v3/pullstream]
11// UDP 信令模式需要进行相关预设
12if (bUseUdpSignaling) {
13    //设置播放地址
14     [self._bdPlayer setMediaServerIp:ip];
15    // 设置Udp信令模式
16     [self.bdPlayer setSingalMode:BaiduRtcPlayerSingalModeOverHttp];
17    // 由业务侧确定是否为H265格式,默认为H264格式; udp 信令模式需设置视频编码
18    [self.bdPlayer setCodecType:self->_boCodec265Type ? CODEC_H265 : CODEC_H264];
19} else {
20    //设置http信令模式
21    [self._bdPlayer setSingalMode:BaiduRtcPlayerSingalModeOverHttp];
22}
  1. 播放设置
Java
1// 设置媒体流地址
2  [self.bdPlayer prepareToPlay:@"webrtc://test-pl-central.bigenemy.cn/myapp/test321.flv" autoPlay:NO];
  1. 播放控制
Java
1// 准备播放,获取播放依赖资源
2- (void)prepareToPlay;
3// 开始播放
4- (void)startPlay;
5// 暂停播放
6- (void)pausePlay;
7// 恢复播放
8- (void)resumePlay;
9// 停止播放
10- (void)stopPlay;
  1. 释放播放器
Java
1// 释放播放器

在智能视频SDK Demo中对上述流程有详细的展示,可以参考;

接口说明

BaiduRtcPlayerParameter类

接口名
描述
netStatus 网络类型 wifi 4g
audioEnable 是否播放音频
videoEnable 是否播放视频
audioVolume 设置静音启播
logReportEnable 启动日志上报监控 设置最小延时, 可通过该参数增大延时降低卡顿提升播放流畅度
signalServer 设置信令服务器
palyer_url 设置播放地址
enableDtlsSrtp 设置数据加密
mediaServerIP 设置播放地址
videoCodectype UDP模式使用 设置视频解码格式,由业务侧确定是否为H265格式,默认为H264格式,仅UDP信令模式
videoBFrame 是否开启B帧支持,由业务侧确定是否开启,默认开启 ,仅UDP信令模式
sampleRate 设置音频播放采样率[48000, 44100], 仅UDP信令模式
signalMode 低延迟直播的信令交互模式http方式udp方式

BaiduRtcPlayerDelegate类

错误码
含义
BaiduRtcPlayerErrorInvalidUrl = 10000 URL 格式错误
BaiduRtcPlayerErrorIceFailed = 10001 ICE 连接错误
BaiduRtcPlayerErrorIceDisconnected = 10002 替换预留错误码
BaiduRtcPlayerErrorConnection = 10003 连接创建失败
BaiduRtcPlayerErrorGetLocalSdpFailed = 10004 媒体描述请求失败
BaiduRtcPlayerErrorSetLocalSdpFailed = 10005 媒体描述设置失败
BaiduRtcPlayerErrorGetRemoteSdpFailed = 10006 远端媒体描述请求失败,一般由于启播放时主播侧已停播
BaiduRtcPlayerErrorSetRemoteSdpFailed = 10007 远端媒体描述设置失败
BaiduRtcPlayerErrorInvalidStatus = 10008 播放状态错误
BaiduRtcPlayerErrorNullVideoFrame = 10009 媒体流中断,一段时间未收媒体流,SDK内部检测到断流错误后会立即停止播放,一般在播放中主播停播但业务侧未退出
BaiduRtcPlayerErrorLoadLibaraies = 10010 SO库文件后下载失败
BaiduRtcPlayerErrorTimeOut = 100011 license错误
BaiduRtcPlayerErrorUdpUnsupport = 10012 当前license不包含低延时播放feature

事件码
含义
BaiduRtcPlayerInfoRoomRender = 1000 开始远端渲染
BaiduRtcPlayerInfoIceConnected = 1001 ICE连接成功
BaiduRtcPlayerInfoPeerConnectionClosed = 1002 对端连接关闭
BaiduRtcPlayerInfoStatsUpdated = 1003 媒体流信息更新
BaiduRtcPlayerInfoBufferingStart = 1004 Buffering start事件
BaiduRtcPlayerInfoBufferingEnd = 1005 Buffering end事件
BaiduRtcPlayerInfoIceDisconnected = 1006 ICE连接断开
BRTC_PLAYER_EVENT_NO_STREAMING_DETECTED = 1007 没有检测到媒体流
BRTC_PLAYER_EVENT_PLAY_TIME_STATISTIC = 1008 启播各阶段耗时统计
BaiduRtcPlayerInfoLocalSDPSetted = 1009 local sdp 设置完成
BaiduRtcPlayerInfoRemoteSDPRequested = 1010 remote sdp 请求完成

事件回调
含义
- (void)onPrepared:(BaiduRtcPlayer *)player elapse:(NSInteger)interval; 播放器准备就绪
- (void)onFirstVideoFrameRendered:(BaiduRtcPlayer *)player elapse:(NSInteger)interval; 首帧渲染事件
- (void)onResolutionChanged:(BaiduRtcPlayer *)player size:(CGSize)size; 分辨率更新回调
- (void)onPlayerError:(BaiduRtcPlayer )player errorCode:(BaiduRtcPlayerErrorCode)errorCode error:(nullable NSError )error; 错误错误回调,错误码定义见前文
- (void)onPlayerInfo:(BaiduRtcPlayer )player infoCode:(BaiduRtcPlayerInfoCode)infoCode obj:(NSObject )obj; 事件更新回调,事件码定义见前文
- (void)onPeriodRenderStatis:(BaiduRtcPlayer *)player frame:(NSInteger)frameRate; 播放状态更新
- (void)onPlayerReceivedSEI:(BaiduRtcPlayer )player sei:(NSData )sei; 接收到SEI 消息,回调在解码线程,不应在该回调里实现复杂业务

SEI 数据格式(h264):[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字段的值(h265);如:[ 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 ]
注: h265 与 h264 的 sei 格式略有不同, h264 的nal_type 为 0x06, sei_type 为0x 05; h265 的 nal_type 为 0x4e, sei_type 为两字节 0x01、0x05;

BRTCPlayer接口

接口名
描述
initWithParameter:(BaiduRtcPlayerParameter*) delegate: 初始化播放器。
playParameters 播放参数集
delte 播放事件监听
- (void)setCodecType:(CodecType) typeCodec 设置视频编码类型 UDP模式支持
- (void)setScalingMode:(BaiduRtcPlayerScalingMode)mode; 设置播放视窗缩放模式
- (void)prepareToPlay:(NSString* )url autoPlay:(BOOL)autoPlay; 准备播放
- (void)startPlay; 开始播放
- (void)pausePlay; 暂停播放,不停止拉流,仅暂停本地媒体流渲染
- (void)resumePlay; 恢复播放,从暂停状态恢复播放
- (void)stopPlay; 停止播放,停止媒体拉流及渲染,再次播放需调用startPlay()
- (void)setSingalMode:(BaiduRtcPlayerSingalMode)mode; 设置信令模式
- (void)setMediaServerIp:(NSString *)mediaServerIp; UDP模式设置播放url媒体ip
- (void)setSignalServer:(NSString *)signalServer; 设置信令地址,HTTP模式设置
- (void)setVoulme:(float)volume; 设备播放音量
- (void)setBufferLevel:(NSInteger) bufferInterval; 设置播放媒体手动延迟
- (void)setStatistics:(BOOL) on 日志统计开关
上一篇
互动直播
下一篇
Android开发说明