tencent cloud

实时音视频

动态与公告
产品动态
产品近期公告
关于 TRTC Live 正式上线的公告
关于TRTC Conference 正式版上线的公告
Conference 商业化版本即将推出
关于多人音视频 Conference 开启内测公告
关于音视频通话 Call 正式版上线的公告
关于腾讯云音视频终端 SDK 播放升级及新增授权校验的公告
关于 TRTC 应用订阅套餐服务上线的相关说明
产品简介
产品概述
基本概念
产品功能
产品优势
应用场景
性能数据
购买指南
计费概述
免费时长说明
月订阅
现收现付
TRTC 逾期与暂停政策
常见问题解答
退款说明
新手指引
Demo 体验
视频通话 SDK
组件介绍
开通服务
跑通 Demo
快速接入
离线唤醒
会话聊天
云端录制
AI 降噪
界面定制
Chat 集成通话能力
更多特性
无 UI 集成
服务端 API
客户端 API
解决方案
错误码表
发布日志
常见问题
视频会议 SDK
组件介绍(TUIRoomKit)
开通服务(TUIRoomKit)
跑通 Demo(TUIRoomKit)
快速接入(TUIRoomKit)
屏幕共享(TUIRoomKit)
预定会议(TUIRoomKit)
会中呼叫(TUIRoomKit)
界面定制(TUIRoomKit)
虚拟背景(TUIRoomKit)
会议控制(TUIRoomKit)
云端录制(TUIRoomKit)
AI 降噪(TUIRoomKit)
会中聊天(TUIRoomKit)
机器人推流(TUIRoomKit)
更多特性(TUIRoomKit)
客户端 API(TUIRoomKit)
服务端 API(TUIRoomKit)
常见问题(TUIRoomKit)
错误码 (TUIRoomKit)
SDK更新日志(TUIRoomKit)
直播与语聊 SDK
Live 视频直播计费说明
组件介绍
开通服务(TUILiveKit)
跑通 Demo
无 UI 集成
UI 自定义
直播监播
视频直播
语聊房
高级功能
客户端 API
服务端 API
错误码
发布日志
常见问题
RTC Engine
开通服务
SDK 下载
API-Example
接入指引
API-参考手册
高级功能
AI 集成
概述
MCP 配置
Skills 配置
集成指南
常见问题
RTC RESTFUL API
History
Introduction
API Category
Room Management APIs
Stream mixing and relay APIs
On-cloud recording APIs
Data Monitoring APIs
Pull stream Relay Related interface
Web Record APIs
AI Service APIs
Cloud Slicing APIs
Cloud Moderation APIs
Making API Requests
Call Quality Monitoring APIs
Usage Statistics APIs
Data Types
Appendix
Error Codes
控制台指南
应用管理
套餐包管理
用量统计
监控仪表盘
开发辅助
解决方案
实时合唱
常见问题
迁移指南
计费相关
功能相关
UserSig 相关
应对防火墙限制相关
缩减安装包体积相关
Andriod 与 iOS 相关
Web 端相关
Flutter 相关
Electron 相关
TRTCCalling Web 相关
音视频质量相关
其他问题
旧版文档
RTC RoomEngine SDK(旧)
集成 TUIRoom (Web)
集成 TUIRoom (Android)
集成 TUIRoom (iOS)
集成 TUIRoom (Flutter)
集成 TUIRoom (Electron)
TUIRoom API 查询
实现云端录制与回放(旧)
监控仪表盘计费(旧)
协议与策略
安全合规认证
安全白皮书
信息安全说明
服务等级协议
苹果隐私策略:PrivacyInfo.xcprivacy
TRTC 政策
隐私协议
数据处理和安全协议
词汇表

输入媒体流进房

PDF
聚焦模式
字号
最后更新时间: 2024-12-02 10:08:27

概述

一起看、一起听、一起玩、一起学……原来需要线下面对面才能实现的各种体验正被不断搬到线上。相隔千里还能和好友们一起看电影、一起听音乐,然后一起交流吐槽,这样神奇的实时互动体验正受到当下年轻人的喜爱,并成为如今音视频产品的重点玩法和主流方向。
TRTC 提供 输入在线媒体流RTMP 推流进房 两种推流进房方案,有各自对应的适用场景,具体如下:
输入在线媒体流 用于拉取云端在线媒体流(在线流或云端点播文件)推流至 TRTC 房间内进行观看.
RTMP 推流进房 用于将本地媒体文件、音视频设备采集音视频通过 RTMP 标准协议推流到 TRTC 房间内。
说明:
相关费用如下:
功能位解锁:输入在线媒体流RTMP 推流进房功能需订阅 RTC-Engine 包月套餐 基础版专业版解锁。
用量费用:
使用推流功能会进行转码操作,产生转码费用,详情参见 混流转码与旁路转推计费说明
收取推流机器人在房产生的音频时长费用(注:输入在线媒体流功能产生的机器人在房费用将限免于2024年8月15日,从2024年8月16日起开始收取)。
房间内观众订阅推流进房的音视频内容会正常产生音视频通话费用,详情参见 音视频时长计费说明

输入在线媒体流

应用场景

场景类型
说明
AI 互动课堂
依托 TRTC 输入在线媒体流能力,平台可通过录播真人教学视频结合 AI 技术进行线上直播互动教学,在保证教学效果的同时大幅降低运营成本。上课前,平台根据教师的课程设置,将知识点讲解、互动提问、问题反馈和解答等信息录制成视频片段,上传到视频库。课堂中,通过 TRTC 输入在线媒体流能力将对应视频推送到 TRTC 房间进行直播。学生通过语音、触屏实现互动式学习。服务端通过 AI 技术,智能识别学生的实时语音和作答,并根据学生的表现,无缝切换教学片段,实时给予不同的反馈,从而提供个性化的教学体验。
“一起看”房间服务
游戏直播、秀场、体育赛事等直播类内容,可以通过 TRTC 输入在线媒体流能力将直播流推送到 TRTC 房间,实现房间内超低延时同步观看,配合 TRTC 的实时互动能力,观众可实时交流,一起加油喝彩,沉浸式观赛。电影、音乐等点播类节目,同样可以通过该能力输入至 TRTC 房间,帮助用户实时共享,与好友边看边聊。

功能架构

1. 用户使用 REST API 创建输入在线媒体流任务,输入在线媒体流任务由中转服务(relay server)执行。
2. 中转服务拉取在线流或者点播文件。
3. 中转服务将拉取到的音视频推至 TRTC 房间,中转服务中会自动生成一个虚拟主播用户,该用户的用户名和要进入的房间号在创建任务时指定。
4. TRTC 其他端可观看这路流,也可以复用 TRTC 录制、转推等能力。




功能描述

输入在线媒体流功能说明如下:详细输入在线媒体流事件,前往查看
类型
描述
发起任务方式
用户可以通过 REST API 发起输入在线媒体流任务,观众可观看这路流,支持录制、转推等功能。
多种源流协议和格式
协议:HTTP、HTTPS、RTMP、HLS
格式:FLV、MP3、MP4、MPEG-TS、MOV、MKV、M4A
视频编码:H.264、VP8
音频编码:AAC、OPUS
服务端回调
输入在线媒体流任务创建和结束时可回调给业务侧服务器,用于业务侧做逻辑,详细输入在线媒体流事件,前往查看

相关 Rest API

开启输入在线媒体流:StartStreamIngest
停止输入在线媒体流:StopStreamIngest
查询输入在线媒体流:DescribeStreamIngest

RTMP 推流进房

TRTC 支持将本地媒体文件、音视频设备采集音视频通过 RTMP 标准协议推流到 TRTC 房间内。为降低客户接入门槛,您可根据实际情况选择安装 OBS 、FFmpeg 或其他 RTMP 库进行推流。OBS 是一款好用的第三方开源程序直播流媒体内容制作软件,为用户提供免费使用,它可支持 OS X、Windows、Linux 操作系统,适用多种直播场景,满足大部分直播行为的操作需求,您可以到 OBS 官网 下载最新版本软件,使用 OBS 推流时无需安装插件。

应用场景

场景类型
说明
在线教育场景
老师展示视频课件教学视频时,可以通过 PC 端 OBS 或者 FFmpeg 把绝大多数媒体格式以 RTMP 推流至 TRTC 房间,房间内的学生通过 TRTC SDK 拉流,可以保证观看到相同进度的教学视频,课件播放跳转进度、调整速度、切换下一章等全部可由老师控制,各学生端观看对齐课堂秩序好,教学质量更稳定。
一起看球赛场景
比赛流媒体是赛事供应方固定以 RTMP 格式流的方式提供赛事画面,通过 RTMP 协议推流至 TRTC 房间,实现 TRTC 房间内同步观看超低延时的比赛直播,配合 TRTC 的实时互动能力,与好友语音/视频讨论,一起喝彩加油,不会错过每一个精彩瞬间的共享体验。
更多场景
任何基于媒体流的实时互动体验玩法,均可通过 RTMP 协议推流帮您实现,等多玩法等待您的探索。

网络架构

RTMP 属于 TRTC 的一个子模块,能与 TRTC 其他端互通,互通延迟在正常情况下小于600ms,也可使用 TRTC 录制、转推等已有能力。网络架构如下图所示。不支持使用 RTMP 从 TRTC 拉流,只支持 RTMP 推流。




流地址生成

推流地址

rtmp://intl-rtmp.rtc.qq.com/push/房间号?sdkappid=应用&userid=用户名&usersig=签名
主域名是 intl-rtmp.rtc.qq.com,备域名 rtmp.rtc-web.com,如果主域名解析有问题,可使用备域名。
RTMP appName 是 push。
地址中的房间号、应用、用户名、签名需要换成业务的。
为简化参数,只支持字符串房间号,不超过64个字符,字符只能是数字、字母、下划线。
警告:
1. TRTC 其他端如果要观看 RTMP 流,请使用字符串房间号进房
2. 以小程序端为例填写 enterRoom 接口 strRoomID 字段,其他端参考相应的 API 文档。
usersig 的生成规则,请参见 UserSig 相关请注意签名要在有效期内)。
示例:
rtmp://intl-rtmp.rtc.qq.com/push/hello-string-room?sdkappid=140*****66&userid=******rtmp2&usersig=eJw1jdE********RBZ8qKGRj8Yp-wVbv*mGMVZqS7w-mMDQL

使用示例

您可以使用支持 RTMP 协议的软件或者代码库推拉流,下面列举几种。

OBS 推流

准备工作
安装并打开 OBS 工具进行下述操作。
步骤1:选择输入源
查看底部工具栏的来源标签,单击+,根据您的业务需要选择输入源。常用来源输入有:
输入源
说明
图像
适用于单张图像直播
图像幻灯片放映
可循环或者顺序多张播放图片
场景
实现各种强大的直播效果。此时,另一个场景是作为来源被添加进当前场景的,可以实现整个场景的插入
媒体源
可上传本地视频,并本地点播视频文件进行直播化处理
文本
实时添加文字在直播窗口中
窗口捕获
可根据您选择的窗口进行实时捕获,直播仅显示您当前窗口内容,其他窗口不会进行直播捕获
视频捕获设备
实时动态捕捉摄像设备,可将摄像后的画面进行直播
音频输入捕获
用于音频直播活动(音频输入设备)
音频输出捕获
用于音频直播活动(音频输出设备)



步骤2:设置推流参数
1. 通过底部工具栏的控件 > 设置按钮进入设置界面。
img


2. 单击推流进入推流设置页签,选择服务类型为自定义
3. 服务器填写:rtmp://intl-rtmp.rtc.qq.com/push/
4. 填写串流密钥格式如下:
房间号?sdkappid=应用&userid=用户名&usersig=签名
其中房间号、应用、用户名、签名需要换成业务的,参考流地址生成章节。例如:
hello-string-room?sdkappid=140*****66&userid=******rtmp2&usersig=eJw1jdE***************ZLgi5UAgOzoMhrayt*cjbmiCJ699T09juc833IMT94Ld7I0iHZqVDzvVAqkZsG-IKlzLiXOnEhswHu1iUyTc9pv*****D8MQwoA496Ke6U1ip4EAH4UMc5H9pSmv6MeTBWLamhwFnWRBZ8qKGRj8Yp-wVbv*mGMVZqS7w-mMDQL



步骤3:设置输出
RTMP 后台不支持传输 B 帧,用户可以通过如下设置调整推流端软件的视频编码参数来去除 B 帧。
1. 设置中单击输出页签进行配置。
2. 输出模式中选择高级关键帧间隔建议填写1或2,CPU 使用预设为 ultrafast,配置选择 baseline,微调选择 zerolatency,x264 选项填写 threads=1,单击确定保存设置。
警告:
推流需要去除 B 帧,否则推流后连接会被断开,下面的配置选择 baseline 可去除 B 帧。



步骤4:设置视频选项
设置中单击视频页签,设置分辨率和帧率。分辨率决定了观众看到的画面清晰程度,分辨率越高画面越清晰。FPS 是视频帧率,它控制观看视频的流畅,普通视频帧率有24帧 - 30帧,低于16帧画面看起来有卡顿感,而游戏对帧率要求比较高,一般小于30帧游戏会显得不连贯。


步骤5:设置高级选项
建议不启用串流延迟以减少端到端延迟。
启动自动重连,建议设置重试延迟时长尽量短,网络抖动时如果连接断开可尽快重连上。


步骤6:单击推流
1. 查看 OBS 底部工具栏的控件,单击开始推流


2. 推流成功后,正常情况在界面底部会展示推流状态,TRTC 控制台仪表盘 上有该用户进房记录。


步骤7:其他端观看
如前面 设置推流参数 所说,TRTC 其他端进房需要使用字符串房间号,Web 端 观看 RTMP 流的效果如下所示,您也可以选择使用其他端观看。



FFmpeg 推流

如果需要用命令行或其他 RTMP 库推流,使用完整的流地址供 FFmpeg 或其他 RTMP 库推流,视频编码使用 H.264,音频编码使用 AAC,容器格式使用 FLV,建议 GOP 设置为2s或1s。 FFmpeg 不同场景下指令配置参数不同,因此需要您具有一定的 FFmpeg 使用经验,以下列出 FFmpeg 常用命令行选项,更多 FFmpeg 选项请参见 FFmpeg 官网
FFmpeg 命令行
ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url}
常见的 FFmpeg 选项
选项
说明
-re
以 native 帧率读取输入,通常只用于读取本地文件
其中 output_file_options 可配置选项包括:
选项
说明
-c:v
视频编码,建议用 libx264
-b:v
视频码率,例如 1500k 表示 1500kbps
-r
视频帧率
-profile:v
视频 profile,指定 baseline 将不编码 B 帧,TRTC 后端不支持 B 帧
-g
GOP 帧数间隔
-c:a
音频编码,建议用 libfdk_aac
-ac
声道数,填2或1
-b:a
音频码率
-f
指定格式,固定填 flv,发送到 TRTC 使用 FLV 容器封装
下面的例子是读取文件推到 TRTC,注意 URL 两边加引号。
ffmpeg -loglevel debug -re -i sample.flv -c:v libx264 -preset ultrafast -profile:v baseline -g 30 -sc_threshold 0 -b:v 1500k -c:a libfdk_aac -ac 2 -b:a 128k -f flv 'rtmp://intl-rtmp.rtc.qq.com/push/hello-string-room?userid=rtmpForFfmpeg&sdkappid=140xxxxxx&usersig=xxxxxxxxxx'
其他端观看
下面是使用 Web 端 观看的效果,您也可以选择使用其他端观看。




FAQ

推流失败

常见原因
没买套餐包或过期。
签名错误或过期。
推了B帧(仪表盘上的现象是“推流一秒就结束”),可设置 baseline 编码。
其他原因
如果是嵌入式硬件设备推流,可能将 URL 截断。
推了 H.265,改为 H.264。
端上 set chunk 太大,改为 1360。

卡顿、花屏

观察腾讯云实时音视频 控制台仪表盘,查看推流帧率是否稳定,如果稳定则大概率是播放端的问题,建议排查播放端;如果帧率不稳可排查以下几点:
检查推流客户端本地 CPU、内存是否高负载。如果使用的是 OBS 推流,观察软件底部状态栏,有丢帧、网络、CPU、帧率等信息。
检查本地网络带宽是否足够。ping 推流的域名观察 RTT;使用 网络诊断工具 检测推流域名,查看带宽,最好能达到 10M。
推流端可尝试降低码率、帧率减少客户端压力,参考正文中 OBS 的设置,720p 建议码率 1500 Kbps。

延迟大

拉流端如果使用主播角色,延迟通常低于观众角色,如果不是主播角色可尝试对比一下观察是否有改善。
推流端本地编码和网络影响较大。可尝试不同平台测试,如果使用的是 OBS,可尝试 Windows 系统推流;ping 推流域名观察 RTT。

其他端看不到推的流

推流端使用的是字符串房间号,拉流端使用了数字房间号,修改拉流端,改为字符串房间号进房。

频繁断开重推

用户名重名,两处互踢引起,请确保单个 sdkappid 下的用户名 userid 全局唯一。
推了 B 帧,可设置 baseline 编码。

服务端回调

RTMP 推流用户也是 TRTC 房间中的一个用户,和其他端用户没有本质区别,参见 TRTC 事件回调

使用业务侧域名

设置业务侧域名 CNAME 到官方域名,后续也建议这样使用。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈