将直播流发布到 CDN(Content Delivery Network)的过程称为 CDN 直播推流,用户无需安装 App,可以通过 Web 浏览器观看直播。
在旁路推流过程中,当频道中有多个主播时,通常会涉及到转码,将多个直播流组合成单个流,并设置这个流的音视频属性和合图布局。
请确保已开通 CDN 旁路推流功能,步骤如下:
开通成功后,你可以在用量页面看到旁路推流的使用情况。
检查浏览器兼容性 (checkSystemRequirements
)
checkSystemRequirements()
创建音视频对象 (createClient
)
createClient()
初始化客户端对象 (init
)
init(appId, onSuccess, onFailure)
加入 AgoraRTC 频道 (join
)
join(token, channel, uid, onSuccess, onFailure)
创建音视频流对象 (createStream
)
createStream(spec)
设置直播转码 (setLiveTranscoding
)
var LiveTranscoding = {
width: 640, //用于旁路直播的输出视频的总宽度,默认值为 640。取值范围为 [16,10000]。
height: 360, //用于旁路直播的输出视频的总高度,默认值为 360。取值范围为 [16,10000]。
videoBitrate: 400, //设置转码推流的码率,单位为 Kbps,默认值为 400。
videoFramerate: 15, //用于旁路直播的输出视频的帧率,单位为帧每秒,默认值为 15。取值范围为 [1,30]。服务器会将高于 30 的帧率设置改为 30。
lowLatency: false,
audioSampleRate: 48000,
audioBitrate: 48,
audioChannels: 1,
videoGop: 30,
videoCodecProfile: 100, //用于旁路直播的输出视频的编码规格。可以设置为 66、77 或 100。如果设置其他值,声网会统一设为默认值 100。
userCount: 0,
userConfigExtraInfo: {},
backgroundColor: 0x000000,
transcodingUsers: [],
};
- 在
AgoraRTC.createClient({mode:'interop'})
模式下,如果使用单 Web 主播进行推流,需要将 Web 单主播的码流进行转码后再进行推流,否则会出现没有视频的现象。- 若要对 Web 单主播直接进行推流,请使用
AgoraRTC.createClient({mode:'h264_interop'})
模式。- 声网转码需要收取转码费用。
- 你可以参考视频分辨率表格设置
videoBitrate
的值。如果设置的码率超出合理范围,声网服务器会在合理区间内自动调整码率值。
新建直播流 (startLiveStreaming
)
client.setLiveTranscoding(coding);
// 如果在 enableTranscoding 里设置为 true,那么必须在调用 setLiveTranscoding 之后再调用 startLiveStreaming。
client.startLiveStreaming(url, true)
删除直播流 (stopLiveStreaming
)
client.stopLiveStreaming(url);
离开 AgoraRTC 频道 (leave
)
leave(onSuccess, onFailure)