前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于TRTC云端混流的踩坑分享

关于TRTC云端混流的踩坑分享

原创
作者头像
马凌鑫
修改2020-08-19 11:11:21
2.5K0
修改2020-08-19 11:11:21
举报
文章被收录于专栏:云知识学习

前言

今年可以说是直播火爆的元年的,虽然早在之前早已有直播、视频通话等应用不断涌出,但是在2020年疫情的影响下,线下的许多场景都慢慢转变成线上直播等形式来展示。许多开发者借助腾讯云的TRTC产品能力就能开发出一套双人通话、多人会议、线上课等应用场景。

本文主要是梳理如何使用TRTC进行云端混流进行画面混流(画面拼接)后通过直播形式展示

混流效果之一
混流效果之一

原理解析

腾讯云会使用一批旁路转码集群,将 TRTC 中的音视频数据旁路到直播 CDN 系统中,该集群负责将 TRTC 所使用的 UDP 协议转换为标准的直播 RTMP 协议。

混合画面的旁路直播

TRTC 最擅长的领域就是音视频互动连麦,如果一个房间里同时有多个主播,而 CDN 观看端只希望拉取一路音视频画面,就需要使用云端混流服务将多路画面合并成一路,其原理如下图所示:

操作步骤

步骤1:TRTC侧开通旁路直播

步骤2:配置播放域名并完成 CNAME

  1. 登录 云直播控制台
  2. 在左侧导航栏选择【域名管理】,您会看到在您的域名列表新增了一个推流域名,格式为 xxxxx.livepush.myqcloud.com,其中 xxxxx 是一个数字,叫做 bizid,您可以在实时音视频控制台 >【应用管理】>【应用信息】中查找到 bizid 信息。
  3. 单击【添加域名】,输入您已经备案过的播放域名,选择域名类型为【播放域名】,选择加速区域(默认为【中国大陆】),单击【确定】即可。
  4. 域名添加成功后,系统会为您自动分配一个 CNAME 域名(以.liveplay.myqcloud.com为后缀)。CNAME 域名不能直接访问,您需要在域名服务提供商处完成 CNAME 配置,配置生效后,即可享受云直播服务。具体操作请参见 CNAME 配置

本段直接摘取于原文

步骤3:关联 TRTC 的音视频流到直播 streamId

开启旁路推流功能后, TRTC 房间里的每一路画面都配备一路对应的播放地址,该地址的格式如下:

代码语言:javascript
复制
http://播放域名/live/[streamId].flv

到这一步骤有些用户可能就会疑惑了,接下来细说:

疑问1:StreamID是如何生成的?

解答:如果TRTC.createClient时没有指定streamId,则生成的streamId则为该格式:sdkappid_roomid_userid_main

TRTC.createClient代码片段:

不指定streamId则使用默认规则

旁路直播侧效果:

若需要指定StreamId则需要在TRTC.createClient中指定

旁路直播侧效果:

步骤4:控制多路画面的混合方案

完成上面步骤后,需要开启混流将画面凭借,调用 TRTCCloud 的 setMixTranscodingConfig 接口启动云端混流转码,该接口的参数 TRTCTranscodingConfig 可用于配置:

  • 各个子画面的摆放位置和大小。
  • 混合画面的画面质量和编码参数。

画面布局的详细配置方法请参考 云端混流转码 启动混流转码

首次使用的,推荐用API 3.0 Explorer进行调试,里面的参数都可以在侧边栏中看到

这里着重的讲下OutputParams.StreamId,这里的StreamId不能与旁路直播的streamId冲突,否则将导致拉流时拉到的是还未混流前的画面。

如何确认充不冲突?请参考步骤3的疑问1

代码语言:javascript
复制
{
    "EncodeParams": {
        "AudioBitrate": 64,
        "AudioChannels": 2,
        "AudioSampleRate": 24000,
        "BackgroundColor": 0,
        "BackgroundImageId": 113,
        "VideoBitrate": 1560,
        "VideoFramerate": 15,
        "VideoGop": 2,
        "VideoHeight": 720,
        "VideoWidth": 1280
    },
    "LayoutParams": {
        "MainVideoStreamType": 0,
        "MainVideoUserId": "243205_screen",
        "Template": 2
    },
    "OutputParams": {
        "PureAudioStream": 0,
        "RecordAudioOnly": 0,
        "StreamId": "这里需要填写混流后的streamID,不能与旁路直播的id冲突"
    },
    "RoomId": "8067",
    "SdkAppId": "1400360798"
}

步骤5:获取播放地址并对接播放

通过上述的操作后,生成云端混流的流。再根据规则可以拼接出以下直播地址:

例如,您的播放域名为live.myhost.com,您将房间(1001)中的用户 userA 的直播流 ID 通过进房参数指定为 streamId = "streamd1001"。

则您可以得到三路播放地址:

代码语言:javascript
复制
 rtmp 协议的播放地址:rtmp://live.myhost.com/live/streamd1001
 flv 协议的播放地址:http://live.myhost.com/live/streamd1001.flv
 hls 协议的播放地址:http://live.myhost.com/live/streamd1001.m3u8

本文主要是补充部分使用者在混流时可能犯的错。详细的请观看官方文档,这里只梳理大概脉络以及需要注意的点,细节在文档中更清晰。

https://cloud.tencent.com/document/product/647/16826

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
    • 原理解析
      • 操作步骤
        • 步骤1:TRTC侧开通旁路直播
        • 步骤2:配置播放域名并完成 CNAME
        • 步骤3:关联 TRTC 的音视频流到直播 streamId
        • 步骤4:控制多路画面的混合方案
        • 步骤5:获取播放地址并对接播放
    相关产品与服务
    实时音视频
    实时音视频(Tencent RTC)基于腾讯21年来在网络与音视频技术上的深度积累,以多人音视频通话和低延时互动直播两大场景化方案,通过腾讯云服务向开发者开放,致力于帮助开发者快速搭建低成本、低延时、高品质的音视频互动解决方案。
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档