【最佳实践】巡检项:实时音视频 (TRTC) 检查 TRTC启动云端混流接口中的子画面布局是否超出编码输出的画面

2023-05-11 18:03:06 浏览数 (2)

问题/风险描述:

在使用 腾讯实时音视频(TRTC) 进行云端混流转推时,可能会出现混流失败的情况,其中一种错误的情况是启动云端混流接口中的子画面布局超出编码输出的画面,导致混流出现失败的情况,比如通过云端的日志检查发现是因为发起混流参数的子画面的布局超出了编码输出的画面。

子画面超出编码输出画面子画面超出编码输出画面

通过计算可以知道,整个输出的画面大小为1920x1080,但是通过x:2180,y:302 坐标和画面的宽高444x250,计算得出 整个画面在输出画面之外,从而导致无效的混流输出。

调用报错后返回的结果是

代码语言:javascript复制
{
    "Response":{
        "Error":{
            "Code":"InvalidParameter.SmallVideoLayoutParams",
            "Message":""
        },
        "RequestId":"xxxxx-09e1-483a-b1d8-xxxxxxxxx"
    }
}

解决方案:

为了解决以上的混流失败错误情况,我们建议您采取以下措施:

1. 在业务程序端在计算 子画面的坐标和宽高的时候,需要根据大画面的宽度来进行计算,参考代码如下

代码语言:javascript复制
假设:
- 总输出画面大小为 1920x1080 像素
- 9 个子画面要均匀分布在总输出画面中
- 子画面之间的间距为 10 像素
- 每行显示 3 个子画面

代码:

// 计算子画面大小
int output_width = 1920;
int output_height = 1080;
int spacing = 10;
int num_cols = 3;
int num_rows = 3;
int sub_width = (output_width - spacing * (num_cols - 1)) / num_cols;
int sub_height = (output_height - spacing * (num_rows - 1)) / num_rows;

// 计算子画面位置
for (int row = 0; row < num_rows;   row) {
    for (int col = 0; col < num_cols;   col) {
        int x = col * (sub_width   spacing);
        int y = row * (sub_height   spacing);
        // 在这里使用 x、y、sub_width 和 sub_height 来设置子画面的位置和大小
    }
}

2. 时刻关注您的服务端发起混流后返回的接口,如果发现有相关的错误情况的话,需要及时的修复并发布,以免影响您业务正常使用。

注意事项:

混流失败会影响到从CDN拉流的观众和回放录制,请及时关注相关的错误。

0 人点赞