今年可以说是直播火爆的元年的,虽然早在之前早已有直播、视频通话等应用不断涌出,但是在2020年疫情的影响下,线下的许多场景都慢慢转变成线上直播等形式来展示。许多开发者借助腾讯云的TRTC产品能力就能开发出一套双人通话、多人会议、线上课等应用场景。
本文主要是梳理如何使用TRTC进行云端混流进行画面混流(画面拼接)后通过直播形式展示
腾讯云会使用一批旁路转码集群,将 TRTC 中的音视频数据旁路到直播 CDN 系统中,该集群负责将 TRTC 所使用的 UDP 协议转换为标准的直播 RTMP 协议。
混合画面的旁路直播
TRTC 最擅长的领域就是音视频互动连麦,如果一个房间里同时有多个主播,而 CDN 观看端只希望拉取一路音视频画面,就需要使用云端混流服务将多路画面合并成一路,其原理如下图所示:
xxxxx.livepush.myqcloud.com
,其中 xxxxx 是一个数字,叫做 bizid,您可以在实时音视频控制台 >【应用管理】>【应用信息】中查找到 bizid 信息。.liveplay.myqcloud.com
为后缀)。CNAME 域名不能直接访问,您需要在域名服务提供商处完成 CNAME 配置,配置生效后,即可享受云直播服务。具体操作请参见 CNAME 配置。本段直接摘取于原文
开启旁路推流功能后, TRTC 房间里的每一路画面都配备一路对应的播放地址,该地址的格式如下:
http://播放域名/live/[streamId].flv
到这一步骤有些用户可能就会疑惑了,接下来细说:
疑问1:StreamID是如何生成的?
解答:如果TRTC.createClient
时没有指定streamId
,则生成的streamId
则为该格式:sdkappid_roomid_userid_main
TRTC.createClient代码片段:
不指定streamId则使用默认规则
旁路直播侧效果:
若需要指定StreamId则需要在TRTC.createClient中指定
旁路直播侧效果:
完成上面步骤后,需要开启混流将画面凭借,调用 TRTCCloud 的 setMixTranscodingConfig
接口启动云端混流转码,该接口的参数 TRTCTranscodingConfig
可用于配置:
首次使用的,推荐用API 3.0 Explorer进行调试,里面的参数都可以在侧边栏中看到
这里着重的讲下OutputParams.StreamId,这里的StreamId不能与旁路直播的streamId冲突,否则将导致拉流时拉到的是还未混流前的画面。
如何确认充不冲突?请参考步骤3的疑问1
{
"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"
}
通过上述的操作后,生成云端混流的流。再根据规则可以拼接出以下直播地址:
例如,您的播放域名为live.myhost.com
,您将房间(1001)中的用户 userA 的直播流 ID 通过进房参数指定为 streamId = "streamd1001"。
则您可以得到三路播放地址:
rtmp 协议的播放地址:rtmp://live.myhost.com/live/streamd1001
flv 协议的播放地址:http://live.myhost.com/live/streamd1001.flv
hls 协议的播放地址:http://live.myhost.com/live/streamd1001.m3u8
本文主要是补充部分使用者在混流时可能犯的错。详细的请观看官方文档,这里只梳理大概脉络以及需要注意的点,细节在文档中更清晰。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。