自 1.8.0 起,RTSA Lite SDK 新增 Connection ID 机制。你可以通过 Connection ID 在多个频道推流,或者向单个频道推多路流。
你可以参考以下步骤在多个频道发送媒体流。
调用 agora_rtc_create_connection
创建多个 Connection。
// C
connection_id_t conn1, conn2, conn3;
agora_rtc_create_connection(&conn1); // conn1 = 1
agora_rtc_create_connection(&conn2); // conn2 = 2
agora_rtc_create_connection(&conn3); // conn3 = 3
调用 agora_rtc_join_channel
分别通过上一步创建的 Connection 加入不同频道。
// C
agora_rtc_join_channel(conn1, cname1, 1, ...);
agora_rtc_join_channel(conn2, cname2, 1, ...);
agora_rtc_join_channel(conn3, cname3, 1, ...);
调用 agora_rtc_send_audio_data
和 agora_rtc_send_video_data
分别为多个 Connection 发送音视频数据。
// C
agora_rtc_send_video_data(conn1, ...); // 向cname1推流
agora_rtc_send_video_data(conn2, ...); // 向cname2推流
agora_rtc_send_video_data(conn3, ...); // 向cname3推流
调用 agora_rtc_leave_channel
和 agora_rtc_destroy_connection
离开频道并销毁 Connection。
// C
agora_rtc_leave_channel(cname1);
agora_rtc_leave_channel(cname2);
agora_rtc_leave_channel(cname3);
agora_rtc_destroy_connection(conn1);
agora_rtc_destroy_connection(conn2);
agora_rtc_destroy_connection(conn3);
你可以参考以下步骤在多个频道发送媒体流。
调用 agora_rtc_create_connection
创建多个 Connection。
// C
connection_id_t conn1, conn2, conn3;
agora_rtc_create_connection(&conn1); // conn1 = 1
agora_rtc_create_connection(&conn2); // conn2 = 2
agora_rtc_create_connection(&conn3); // conn3 = 3
调用 agora_rtc_join_channel
分别通过上一步创建的 Connection 加入同一个频道。每次你必须使用不同的用户名。
// C
agora_rtc_join_channel(conn1, cname, 1, ...);
agora_rtc_join_channel(conn2, cname, 2, ...);
agora_rtc_join_channel(conn3, cname, 3, ...);
调用 agora_rtc_send_audio_data
和 agora_rtc_send_video_data
分别为多个 Connection 发送音视频数据。
// C
agora_rtc_send_video_data(conn1, ...); // 以uid=1向cname推流
agora_rtc_send_video_data(conn2, ...); // 以uid=2向cname推流
agora_rtc_send_video_data(conn3, ...); // 以uid=3向cname推流
agora_rtc_send_audio_data(conn1, ...); // 以uid=1向cname推流
agora_rtc_send_audio_data(conn2, ...); // 以uid=2向cname推流
agora_rtc_send_audio_data(conn3, ...); // 以uid=3向cname推流
调用 agora_rtc_leave_channel
和 agora_rtc_destroy_connection
离开频道并销毁 Connection。
// C
agora_rtc_leave_channel(cname);
agora_rtc_destroy_connection(conn1);
agora_rtc_destroy_connection(conn2);
agora_rtc_destroy_connection(conn3);