功能介绍
TUIRoomKit 支持使用机器人推流,允许用户将本地或在线媒体文件推流至房间内。在某些场景中,会议中可能需要推送预先录制的教学视频或在线视频流到在线课堂中,以便用户观看和学习。TUIRoomKit 可以满足相关需求,实现自动化和高效的视频播放。
使用本功能,需开通 TUIRoomKit 包月套餐。接入的机器人推流会作为房间中的虚拟用户产生正常的通话费用,一条流是一个虚拟用户,详情参见 音视频时长计费说明;同时,接入机器人推流过程中会进行转码操作,从而产生转码费用,详情参见 云端混流转码计费说明。
应用场景
一起看、一起听、一起玩、一起学等原来需要线下面对面才能实现的各种体验正被不断搬到线上。相隔千里还能和好友们一起看电影、一起听音乐,然后一起交流吐槽,这样神奇的实时互动体验正受到当下年轻人的喜爱,并成为如今音视频产品的重点玩法和主流方向。
TUIRoomKit 输入媒体流功能可以将外部媒体流共享至房间内,用户可通过这一功能向房间内其他用户分享音乐、电影、讲座、课程等媒体内容并同时与他们进行实时互动。平台可借助 TUIRoomKit 的这一新功能快速实现一起看场景。除了一起看电影、听音乐等场景外,TUIRoomKit 输入媒体流能力还能够在互动课堂、体育赛制、网络会议等场景中,为平台带来更多创新可能。
使用方法
方法一:Rest API 输入在线媒体流
功能描述
输入在线媒体流功能说明如下:
类型 | 描述 |
发起任务方式 | 用户可以通过 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 推流
使用 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 帧,TUIRoomKit 后端不支持 B 帧 |
-g | GOP 帧数间隔 |
-c:a | 音频编码,建议用 libfdk_aac |
-ac | 声道数,填2或1 |
-b:a | 音频码率 |
-f | 指定格式,固定填 flv ,发送到 TUIRoomKit 使用 FLV 容器封装 |
使用
下面的例子是 使用 FFmpeg 命令读取文件推到 TUIRoomKit,注意 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://rtmp.rtc.qq.com/push/yourRoomId?userid=yourUserId&sdkappid=xxxxxxxxx&usersig=xxxxxxxxxx'
对上述命令中相关参数的解释如下:
参数 | 含义 |
-i sample.flv | 需要推流至 TUIRoomKit 的媒体文件。您可以将 sample.flv 更换为您需要推流的本地或在线媒体文件。 |
yourRoomId | 您需要推流的房间 ID。您需要将 yourRoomId 更换为您实际的 RoomId。 |
userId | 您需要推流的 UserID。您需要将“=”后面的值更改为实际的 userId。 |
sdkappid | |
usersig | 您的 usersig。您已在登录 TUIRoomKit 组件时获得。您需要将“=”后面的值更改为实际的 userSig。 |
当您需要在代码中实现上述功能时,可以使用您所在平台上的相关 FFmpeg 库或通过命令行调用 FFmpeg 来实现上述命令。
使用 OBS 推流
准备工作
步骤1:选择输入源
查看底部工具栏的来源标签,单击 + ,根据您的业务需要选择输入源。常用来源输入有:
输入源 | 说明 |
图像 | 适用于单张图像直播 |
图像幻灯片放映 | 可循环或者顺序多张播放图片 |
场景 | 实现各种强大的直播效果。此时,另一个场景是作为来源被添加进当前场景的,可以实现整个场景的插入 |
媒体源 | 可上传本地视频,并本地点播视频文件进行直播化处理 |
文本 | 实时添加文字在直播窗口中 |
窗口捕获 | 可根据您选择的窗口进行实时捕获,直播仅显示您当前窗口内容,其他窗口不会进行直播捕获 |
视频捕获设备 | 实时动态捕捉摄像设备,可将摄像后的画面进行直播 |
音频输入捕获 | 用于音频直播活动(音频输入设备) |
音频输出捕获 | 用于音频直播活动(音频输出设备) |
步骤2:设置推流参数
1. 通过底部工具栏的控件 > 设置按钮进入设置界面。
2. 单击推流进入推流设置页签,选择服务类型为自定义。
3. 服务器填写:
rtmp://rtmp.rtc.qq.com/push/
。4. 填写串流密钥格式如下:
房间号?sdkappid=应用&userid=用户名&usersig=签名
其中房间号、应用、用户名、签名需要换成业务的,参考流地址生成章节。例如:
yourRoomId?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. 推流成功后,正常情况在界面底部会展示推流状态,控制台仪表盘 上有该用户进房记录。