【腾讯云】TRTC直播推流实践

2022-08-19 17:09:36 浏览数 (2)

该文档只是测试demo,简单测试trtc房间推流,让读者有个大致直观的了解。需要开通腾讯云的trtc和scf产品。

1. 先使用trtc的快速demo运行一个测试房间

2. 然后利用scf的函数模板,给trtc直播房间推流。

创建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视频为例
代码语言:javascript复制
{
        "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.myzijiebao.com/williamji/record.mp4"
}
  • 参数配置后之后点击发送,查看响应情况,返回码200,并且返回消息“Async run task submitted”表示函数正在异步执行
  • 查看函数日志,可以看到函数正在执行,并且有日志打印。在“Serverless”->“函数服务”找到测试的函数并查看“函数管理”->"日志查询"可以看到函数日志打印
  • 查看web房间的信息,发现有音频,并且有视频播放。表示推流成功
  • 在“实时音视频”->“房间通话调查”界面,选择应用名,然后搜索后,可以看到房间ID以及参与用户数,点击房间ID可以查看音视频监控信息。

0 人点赞