云端直播推流
功能简介: 用于多个主播实时连麦互动。技术实现上,我们会把房间里多个主播的音视频在服务器合成一路流后推流到CDN流媒体服务器,直播观众可以获取RTMP或HLS流观看直播。
互动直播架构图:
互动直播使用流程如下:
1.创建直播间并获得推流地址
- 创建直播间请参见:Web API 创建直播。
- 获取直播推流地址请参见:Web API 获取推流地址。
2.开始互动直播
- 调用接口:
//配置混图器编码参数:尺寸为640*360,其他采用默认设置
string mutiMixerCfgs = "[{\
\"id\": "1",\
\"cfg\": {\"width\":640,\"height\":360}\
}]";
//配置混图器内容: 混图器宽高保持比例,为左右布局(示例图如下),左边为user1的1号摄像头, 右边为user2的1号摄像头
string mutiMixerContents = "[{\
\"id\": "\1\",\
\"content\": [\
{\"type\":0,\"keepAspectRatio\":1,\"left\":5,\"top\":181,\"width\":633,\"height\":356,\"param\":{\"camid\":\"usr1.1\"}},\
{\"type\":0,\"keepAspectRatio\":1,\"left\":642,\"top\":181,\"width\":633,\"height\":356,\"param\":{\"camid\":\"usr2.1\"}}]}\
]";
//配置混图器输出:直播推流地址为rtmp://xxx
string mutiMixerOutputs = "[{\
\"id\": \"1\",\
\"output\": [\
{\"type\":1,\"liveUrl\": \"rtmp://xxx\"}\
]}]";
int rst = axVideoSDK.startSvrMixer(mutiMixerCfgs, mutiMixerContents, mutiMixerOutputs);
if(rst != 0)
{
Console.WriteLine("开启 互动直播 出错!");
...
}
相关API请参考:
左右布局示例图:
- 回调通知:
//互动直播状态变化通知
void svrMixerStateChanged(object sender, ICloudroomVideoMeetingEvents_svrMixerStateChangedEvent e)
{
...
}
相关API请参考:
3.更新互动直播内容
- 接口调用:
string mixerID = "1";
//混图器尺寸为640*360,帧率为15
string cfg = "[{\"width\":640,\"height\":360,\"frameRate\":15}]";
//混图器内容:画中画布局(示例图如下, 底层640*360, 上层160*90),底层为user1的1号摄像头, 上层为user2的1号摄像头
string mutiMixerContents = "[{\
\"id\": \"1\",\
\"content\": [\
{\"type\":0,\"keepAspectRatio\":1,\"left\":5,\"top\":181,\"width\":633,\"height\":356,\"param\":{\"camid\":\"usr1.1\"}},\
{\"type\":0,\"keepAspectRatio\":1,\"left\":642,\"top\":181,\"width\":633,\"height\":356,\"param\":{\"camid":\"usr2.1\"}}\
]}]";
axVideoSDK.updateSvrMixerContent(mutiMixerContents)
(2)画中画布局示例图:
相关API请参考:
4.观众观看直播
通过 播放器SDK观看直播.
5.停止互动直播
停止互动直播后,也会触发事件svrMixerStateChanged
- 接口调用:
axVideoSDK.stopSvrMixer();
相关API请参考:
6.回放点播
通过 云屋点播API回放点播。