腾讯云的TRTC直播推流实践

| 2019-05-17

 

创建TRTC
TRTC产品
产品简介:腾讯实时音视频(Tencent Real-Time Communication,TRTC),参考:https://cloud.tencent.com/document/product/647/16788
 
应用场景:音视频直播等,参考:https://cloud.tencent.com/document/product/647/46252
 
创建TRTC应用
控制台创建trtc应用参考:https://cloud.tencent.com/document/product/647/50493
 
这里以williamji名称为例,创建好之后,在“实时音视频”->“应用管理”可以看到创建的应用

 

快速测试demo
创建好之后使用demo支持的平台以及开发语言参考https://cloud.tencent.com/document/product/647/32398
 
这里以web为例。具体开发场景根据业务需要选择
 
点击“实时音视频”→“开发辅助”-“快速跑通Demo”,然后应用类型“选择已有应用”,并选择自己创建的trtc应用(当然也可以在界面选择“新建应用”),点击下一步

选择平台或者开发语言,这里选择web,到github上把对应的源码下载下来
然后根据选择找到对应的提示信息,修改代码中的SDKAppID和秘钥。web支持多种框架,这里以jQuery+JavaScript为例,需要修改TRTC_Web/base-js/js/debug/GenerateTestUserSig.js 的配置
修改好配置之后,然后直接在浏览器上打开TRTC_Web/base-js/index.html

打开html之后,有web房间的信息,需要输入用户名和房间ID即可创建房间,这里以用户名:williamji1,房间号:111为例

输入房间号和用户名之后,可以看到如下界面,这里会有一些摄像头,音频授权操作允许。可以看到房间里只有williamji1一个用户

 

生成UserSig
参考文档:https://cloud.tencent.com/document/product/647/50686
 
UserSig主要是给房间推流的时候需要。
 
在“实时音视频”→“开发辅助”->“UserSig生成&校验”界面选择应用,并输入一个用户名(注意这个用户名和web房间的用户名不一样)这里以williamji2为例,点击“生成签名”即可。
    

创建云函数
云函数产品
产品简介:腾讯云云函数(Serverless Cloud Function,SCF),参考:https://cloud.tencent.com/document/product/583/9199
 
应用场景:参考:https://cloud.tencent.com/document/product/583/30511
 
创建“TRTC直播推流”云函数
直播推流参考scf文档:https://cloud.tencent.com/document/product/583/55102
在“Serverless”→“函数服务”点击“新建”来新建函数

选择“模板创建”,然后搜索“TRTC直播推流”,点击下一步

之后需要配置函数的一些信息,在“基础配置”中自定义修改函数名称,以及执行超时时间,注意超时时间主要跟推流的视频长度有关,如果超时时间过短可能导致推流到房间中断。
在函数配置里配置运行内存,以及网络,注意配置内存过小可能导致函数oom,过大会费钱。网络配置,如果需要redis记录推流状态的话则云函数网络必须要和redis网络打通,reids和该函数需要配置同样的vpc和subnet。
     
触发器使用默认的apigw即可。
创建好函数后,可以在"Serverless"→“函数服务”查看函数
进入函数里可以在“函数管理”->“函数代码”中下载代码,该函数是java8开发的,然后以zip包上传。
在“触发管理”里可以查看apigw的触发器并进入到apigw服务。可以使用apigw暴露的公网服务来进行测试。

 

测试推流
这里从apigw的调试界面来进行测试(当然也可以使用apigw提供的公网url来测试)
在云函数的“触发管理”中点击“API服务名”的链接进入apigw的服务界面
点击API调试,然后method选择POST,并调整Body为json,然后把测试json串输入body体。json样例如下 房间号用RoomId字段,RoomId对应的值是数字,不是字符串,不用StrRoomId UserId和UserSig可以参考该文档“创建TRTC”→“生成UserSig” videoSrc填写视频源url,这里以一个共有读私有写的mp4视频为例
{
        "SdkAppId": 1400710547, 
        "StrRoomId": "111",
        "RoomId": 111,
        "UserId": "williamji2", 
        "Mode": "vod", 
        "UserSig": "eJwtzF0LgjAYhuH-suOwd8ttKHTUBzXEoGXB8MRwxZtasqQPov*eqYfP9cD9IbtIew-rSEiYB2TUbczttcETdvzEssSsuiAb3nteZHWNOQmpDyApcF-2j33V6GzrnHMGAL02WP1NCJBMBMCGCp7buJ28lQS7WuAs2tLimOyD2KTjROtDbIzaMDM366VTOr4lU-L9AXvMMss_", 
        "Redis": false, 
        "VideoSrc": "https://williamji-1253970226.cos.ap-guangzhou.myqcloud.com/williamji/record.mp4"
}

参数配置后之后点击发送,查看响应情况,返回码200,并且返回消息“Async run task submitted”表示函数正在异步执行

查看函数日志,可以看到函数正在执行,并且有日志打印。在“Serverless”->“函数服务”找到测试的函数并查看“函数管理”->"日志查询"可以看到函数日志打印

查看web房间的信息,发现有音频,并且有视频播放。表示推流成功

在“实时音视频”->“房间通话调查”界面,选择应用名,然后搜索后,可以看到房间ID以及参与用户数,点击房间ID可以查看音视频监控信息。


编辑:航网科技 来源:腾讯云 本文版权归原作者所有 转载请注明出处

在线客服

微信扫一扫咨询客服


全国免费服务热线
0755-36300002

返回顶部