共享体验社交和在线协作场景逐渐涌现出很多新玩法,例如一起看场景下,通过 TRTC 可以实现音视频实时互动交流,然而各端如何能够保证看到进度相同的电影和演出呢?各端进度同步对齐就会是第一个实现难点,此外还有很多特殊情况和业务需求需要兼容,比如:
- 如果大家都通过在线视频平台观看,喊321播放然后小伙伴们一起点击播放按钮可行吗?
- 那么一起看「高能片段」需要大家同时跳转到某个时刻的视频进度开始怎么办?
- 如果是一起看的是直播流,各端无法控制播放进度无法保证对齐怎么处理?
- 其中一个小伙伴的视频卡住一会儿,缓冲转圈圈后比其他人进度慢怎么解决?
要是有一种技术解决方案解决以上痛点就好了~
另外有些小伙伴目前线上稳定运行的业务是通过 RTMP 推流,或者推流端仅支持 RTMP/RTSP 推流(比如安防视频画面流、赛事直播在线媒体流、移动端推出直播流等),这种情况能否实现通过 TRTC 拉流观看?
TRTC 最近上线了新功能,支持 RTMP 标准协议推流,现已完美支持此类场景,我们详细聊聊。
- 方案 -
TRTC 实时音视频服务架构如图所示,上行推流和下行拉流的全链路是通过自研 UDP 私有协议 / Web 端 WebRTC 实现各个终端和Web小程序之间的互通。
如下图所示,TRTC 最新支持以 RTMP 协议推流至 RTC 房间的方案,常见 RTMP 流的来源:
- 在 PC 端通过 OBS 或 其他直播平台工具 进行RTMP推流;
- 在服务端通过FFMPEG推在线媒体流;
- 使用第三方资源,如直播平台、赛事流、视频网站VOD资源等提供的流媒体,甚至是无人机航拍实时画面、监控摄像头画面等等
OBS 是一款好用的第三方开源程序直播流媒体内容制作软件,为用户提供免费使用,它可支持 OS X、Windows、Linux 操作系统,适用多种直播场景,满足大部分直播行为的操作需求。目前国内外直播平台有大量主播正在使用 OBS 采集画面、布置直播间以及推流,无需改变使用习惯,即可快速将直播内容 RTMP 推流到实时音视频TRTC房间中 。在此基础上配合 RTC 音视频能力可以实现主播和观众连麦互动,将游戏直播、户外直播、唱歌舞蹈直播,秒变一起看一起聊的互动直播间。
同时配合FFmpeg 能够将其他媒体格式都推到实时音视频TRTC房间中,进一步扩展使用场景并降低业务接入和升级至超低延时直播的门槛。
- 扩展场景 -
在线教育行业的各类班型场景,老师展示视频课件教学视频时,可以通过 PC 端 OBS 或者 FFmpeg 把绝大多数媒体格式以 RTMP 推流至 RTC 房间,房间内的学生通过 TRTC SDK 拉流,可以保证观看到相同进度的教学视频,课件播放跳转进度、调整速度、切换下一章等全部可由老师控制,各学生端观看对齐课堂秩序好,教学质量更稳定。
在 AI 课堂的场景,学生跟着课程进度进行答题和互动,比如提交选项答题后会观看对应的答题反馈讲解视频,那么可以通过服务端推流的方式统一控制视频素材的播放,将媒体推流至 RTC 房间让学生低延迟观看,给学生流畅及时的 AI 互动课堂体验,比点播课程更生动有趣。
一起看球赛的场景下,比赛流媒体是赛事供应方固定以 RTMP 格式流的方式提供赛事画面,通过推流至 RT-ONE™ 的方案,实现 RTC 房间内同步观看超低延时的比赛直播,配合 RTC 的实时互动能力,与好友语音/视频讨论,一起喝彩加油,不会错过每一个精彩瞬间的共享体验。
在赛场有多视角机位画面的场景也可以完美支持,多路流都可以分别推流至 RTC 房间,用户可以根据自己喜好选择想要看的一个或者多个视频画面,同时进行实时互动聊天;并且除了赛事直播外,这类功能可以拓展应用在一起看云演唱会、一起看春晚,辅以千人同屏互动的能力展示在现场大屏幕,营造更有沉浸感和参与感的直播互动体验。
- RTMP 协议推流使用手册 -
OBS 推流设置
准备工作
安装并打开 OBS(https://obsproject.com/download?spm=a2c4g.11186623.2.15.6aac1445JPlKR8) 工具进行下述操作。
选择输入源
查看底部工具栏的来源标签,单击 按钮,根据您的业务需要选择输入源。常用来源输入有:
设置推流参数
1. 通过底部工具栏的 控件>设置 按钮进入设置界面。
2. 单击 推流 进入推流设置页签,选择服务类型为自定义。
服务器填写:
rtmp://rtmp.rtc.qq.com/push/
填写串流密钥格式如下:
房间号?sdkappid=应用&userid=用户名&usersig=签名
其中房间号、应用、用户名、签名需要换成业务的,例如:
22998?sdkappid=140*****66&userid=******rtmp2&usersig=eJw1jdE***************ZLgi5UAgOzoMhrayt*cjbmiCJ699T09juc833IMT94Ld7I0iHZqVDzvVAqkZsG-IKlzLiXOnEhswHu1iUyTc9pv*****D8MQwoA496Ke6U1ip4EAH4UMc5H9pSmv6MeTBWLamhwFnWRBZ8qKGRj8Yp-wVbv*mGMVZqS7w-mMDQL
- 为简化参数,只支持字符串房间号,不超过64个字符,字符只能是数字、字母、下划线。TRTC 其他端如果要观看 RTMP 流,需要使用字符串房间号进房。
- usersig 的生成规则,请参见 UserSig (https://cloud.tencent.com/document/product/647/17275)相关 (请注意签名要在有效期内)。
- 以上服务器地址 串流密钥组成 RTMP 推流地址,也可以供 FFmpeg 或其他 RTMP 库推流。
设置输出
RTMP 后台不支持传输 B 帧,用户可以通过如下设置调整推流端软件的视频编码参数来去除 B 帧。
- 在设置中单击输出页签进行配置;
- 在输出模式中选择高级,关键帧间隔建议填写1或2,单击确定保存设置。
设置视频选项
在设置中单击视频页签,设置分辨率和帧率。分辨率决定了观众看到的画面清晰程度,分辨率越高画面越清晰。FPS 是视频帧率,它控制观看视频的流畅,普通视频帧率有24帧 - 30帧,低于16帧画面看起来有卡顿感,而游戏对帧率要求比较高,一般小于30帧游戏会显得不连贯。
高级选项
- 建议不启用串流延迟以减少端到端延迟。
- 启动自动重连,建议设置重试延迟时长尽量短,网络抖动时如果连接断开可尽快重连上。
单击推流
1. 查看 OBS 底部工具栏的 控件,单击 开始推流。
2. 推流成功后,正常情况在界面底部会展示推流状态,TRTC 控制台仪表盘上有该用户进房记录。
其他端观看
如前面 设置推流参数(https://cloud.tencent.com/document/product/647/66671#step2) 所说,TRTC 其他端进房需要使用字符串房间号,Web 端观看 RTMP 流的效果如下所示:
参考文档
关于 FFmpeg 推流的方法以及更多详细说明,请参考腾讯云官网文档:https://cloud.tencent.com/document/product/647/66671
如您需要开通使用或进行进一步技术交流,请在官网页面右下角与 TRTC 产品架构师取得联系,进行售前技术咨询申请开通。
腾讯云音视频在音视频领域已有超过21年的技术积累,持续支持国内90%的音视频客户实现云上创新,独家具备 RT-ONE™ 全球网络,在此基础上,构建了业界最完整的 PaaS 产品家族,并通过腾讯云视立方 RT-Cube™ 提供All in One 的终端SDK,助力客户一键获取众多腾讯云音视频能力。腾讯云音视频为全真互联时代,提供坚实的数字化助力。