合流配置
合流方法在 qiniu::QNRoomInterface
接口中定义;
- 开启服务端合流
服务端合流(旁路直播)配置信息,通过 SDK 信令将参数发送到服务端,服务端按照指定的参数进行合流并推出 RTMP 流;
struct MergeOptInfo
{
string track_id; // Track Id,房间内唯一
bool is_video; // 是否为视频类型,如果为 false, 则以下参数无效
int pos_x; // 此路流(即此 Track)在 RTMP 流画布中的 X 坐标
int pos_y; // 此路流(即此 Track)在 RTMP 流画布中的 Y 坐标
int pos_z; // 此路流(即此 Track)在 RTMP 流画布中的 Z 坐标
int width; // 此路流(即此 Track)在 RTMP 流画布中的宽度,缩放、裁减方式根据后端配置决定
int height; // 此路流(即此 Track)在 RTMP 流画布中的高度,缩放、裁减方式根据后端配置决定
};
typedef list<MergeOptInfo> MergeOptInfoList;
// 配置各个 Track 的合流参数
// @param add_tracks_list_ 新增 Tracks 的合流配置
// @param remove_tracks_list 去除 Tracks 的合流配置,Tracks Id 链表
// @return 0:操作成功,具体合流结果可通过观看旁路直播进行查看
virtual int SetMergeStreamlayouts(
const MergeOptInfoList& add_tracks_list_,
const list<string>& remove_tracks_id_list
) = 0;
- 关闭服务端合流
virtual int StopMergeStream() = 0;
建议一个房间内同时只有一个用户可以控制服务端合流的配置,当此用户离开房间时,务必调用 StopMergeStream
取消合流操作,以免旁路推流(RTMP 流)出现黑屏现象。
有关服务端合流功能更详细的介绍,请参考链接:服务端合流