功能简介
客户端将直播媒体流发布到 CDN (Content Delivery Network) 的过程称为 客户端推流到CDN。用户需要集成 ARStreamingKit
类进行推流。
客户端在推流过程中,当频道中有多个主播时,客户端默认合流音频,视频合流布局需要客户端调用setLiveTranscoding
方法。
前提条件
- 集成 anyRTC RTC SDK。
- 开通第三方CDN服务。
实现方法
-
频道内主播可以调用
setLiveTranscoding
方法设置音视频流的直播参数 (ARLiveTranscoding
),如分辨率、码率、帧率、水印和背景色位置。如果你需要多主播转码合图,请在ARLiveTranscodingUser
类中设置每个主播的参数,详见示例代码。 -
频道内主播可以调用
pushStream
方法向 CDN 推流直播中增加指定的一路媒体流。客户端可以创建多个 ARStreamingKit 类进行推多个地址。 -
(可选)频道内主播再次调用
setLiveTranscoding
方法更新音视频流的直播参数 (ARLiveTranscoding
)。直播参数(
ARLiveTranscoding
)更新时,rtcEngineTranscodingUpdated
回调会被触发并向主播报告更新信息。 -
频道内主播可以调用
unPushStream
方法向 CDN 暂停推流。
示例代码
self.streamKit = [[ARStreamingKit alloc] init];
// 设置音视频音频:该步骤是向音视频引擎中获取音视频数据,为下方的合流提供音视频源
[self.streamKit setRtcEngine:_rtcKit];
// CDN 推流参数设置。
ARLiveTranscoding *transcoding = [[ARLiveTranscoding alloc] init];
transcoding.audioSampleRate = ARAudioSampleRateType44100;
transcoding.audioChannels = 2;
transcoding.audioBitrate = 48;
// 用于旁路推流的输出视频流的 width × height (px)。480 x 640 为默认值。
transcoding.size = CGSizeMake(480, 640);
// 设置推流输出视频的码率 (Kbps),默认值为 400。
transcoding.videoBitrate = 400;
// 用于旁路推流的输出视频的帧率 (fps)。默认值为 15。取值范围为 [1,30]。anyRTC 服务器会将高于 30 的帧率设置改为 30。
transcoding.videoFramerate = 30;
// 推流输出视频的编码规格。可以设置为 Baseline (66)、Main (77) 或 High (100)。如果设置其他值,anyRTC 会统一设为默认值 High (100)。
transcoding.videoCodecProfile = ARVideoCodecProfileTypeHigh;
transcoding.transcodingUsers = @[user];
[self.streamKit setLiveTranscoding:transcoding];
//设置推流模式(视频)
[self.streamKit setMode:ARStreamPushModeVidMix];
//推流
[self.streamKit pushStream:url];
//停止推流
[self.streamKit unPushStream];
合图示例1:两人横向平铺
Canvas:
width: 640
height: 360
backgroundColor: #FFFFFF
User0:
userId: 123
x: 0
y: 0
width: 320
height: 360
zOrder: 1
alpha: 1.0
User1:
userId: 456
x: 320
y: 0
width: 320
height: 360
zOrder: 1
alpha: 1.0
合图示例2:三人纵向平铺
Canvas:
width: 360
height: 640
backgroundColor: #FFFFFF
User0:
userId: 123
x: 0
y: 0
width: 360
height: 640
zOrder: 1
alpha: 1.0
User1:
userId: 456
x: 0
y: 320
width: 180
height: 320
zOrder: 2
alpha: 1.0
User2:
userId: 789
x: 180
y: 320
width: 180
height: 320
zOrder: 2
alpha: 1.0
合图示例3:1 人全屏 + N 人悬浮小窗
Canvas:
width: 360
height: 640
backgroundColor: #FFFFFF
User0:
userId: 123
x: 0
y: 0
width: 360
height: 640
zOrder: 1
alpha: 1.0
User1:
userId: 456
x: 45
y: 390
width: 110
height: 213
zOrder: 2
alpha: 1.0
User2:
userId: 789
x: 185
y: 390
width: 110
height: 213
zOrder: 2
alpha: 1.0
API 参考
setLiveTranscoding
pushStream
unPushStream
setMode
rtmpStreamingChangedToState
rtcEngineTranscodingUpdated
注意事项
- 同一频道内最多支持 50 位主播。
- 客户端推流转码时,anyRTC 不会收取转码费用。
- 如果音频直播无需在调用
setLiveTranscoding
方法。 - 本地音视频的参数为RTC中的音视频参数。
- 需要推多个地址的,请初始化多个 ARStreamingKit 类,进行不同地址推流。