本文介绍如何将外部RTMP或WHIP直播流发布到RTC频道内。
功能介绍
阿里云RTC支持将外部直播流发布到指定的RTC频道中,实现直播流与实时音视频互动的融合。
发布直播流到RTC频道涉及转码为收费服务,当前为公测阶段,您可以免费使用,公测结束后将正常收费,具体时间另行通知。
典型应用场景
场景 | 应用描述 |
教育直播 | 教师通过OBS推送课件视频或录播课程,学生在RTC频道中实时观看并参与互动问答。 |
电商带货 | 主播使用推流工具播放商品视频或切换多机位画面,观众在直播间实时连麦、点赞、下单。 |
远程医疗 | 医院通过直播流推送手术直播或医学影像,专家在RTC频道中进行实时讲解与会诊。 |
流程概览
服务端调用Open API接口,为指定RTC频道生成推流地址。
用户使用OBS、FFmpeg等工具,将预先录制的视频、摄像头画面或屏幕内容推流至生成的推流地址。
推流内容作为一路音视频流进入RTC频道,与其他加入频道的用户共享。
客户端通过ARTC SDK或Demo加入相同频道后,可自动接收并播放该直播流。
前提条件
在设置视频配置之前,请确保达成以下条件:
功能实现
以下是将直播流发布到RTC频道的具体实现步骤:
1.创建推流地址
创建RTMP推流地址
调用CreateRoomRealTimeStreamAddress - 创建RTMP流在房间中的推流地址接口生成推流地址请求。
成功调用后,接口返回如下结果:
{
"RtmpAddress": "rtmp://rcrpush.rtmp.alivecdn.com/4050f7-*****-851be4e/4573e******831?qqzr=H4sIAAAAAAAC_wTAS************mkSAAAAA&auth_key=1756*******81c0",
"RequestId": "1ADD*********D1393"
}
创建WHIP推流地址
调用创建RTC频道WHIP推流地址接口生成推流地址请求。
成功调用后,接口返回如下结果:
{
"RequestId": "58E7**D4-xxxx-xxxx-xxxx-6B5**6Cxxxxx",
"WhipAddress": "https://xxxxxx.media-sh.xxxxx.com/xxxxxxxxxxxx/3723a3xxxxxxxxx223c606b***5f7a2bc7c56ea5cdd0xxxxe?auth_key=17495xxxxx-xxxx-0-f013003067c78c4053f9cd0xxxxxxx&qqzr=H4sIAAAAAAAC_6pWSlayUkrOMxxxxxxrPyCxQ0lFKQTCLlKyUjM2Nj**NDQ1TEy2Mjc3xxxxxxxxxxqRYAAAD__xxxxx__xxxxxxxx"
}
2.使用OBS进行推流
打开OBS Studio,按以下步骤配置推流:
点击【Settings】→【Stream】
OBS推流设置。
RTMP推流设置
服务选择“自定义”,填入上一步获取的RtmpAddress。点击【确定】保存设置
WHIP推流设置
服务选择“WHIP”,填入上一步获取的WhipAddress。点击【确定】保存设置
在OBS主界面点击【开始推流】。
推流成功后,OBS状态栏会显示“正在推流”及实时码率信息。
3.播放视频流
在App端加入相同的AppId及ChannelId,等待数秒后,OBS推流的视频画面将自动出现在频道成员列表中。
若未显示画面,请检查以下内容:
OBS是否正常推流。
频道ID是否一致。
推流地址是否过期。
网络连接是否正常。
FFmpeg 推流
使用1.创建推流地址返回的完整推流地址,可通过 FFmpeg 或其他 RTMP 库推送音视频流至 RTC 频道。请遵循以下基本规范:
视频编码:H.264。
音频编码:AAC。
容器格式:FLV(通过 RTMP 传输)。
建议 GOP:1~2 秒。
FFmpeg常用参数说明
参数 | 说明 |
| 按文件原始帧率推流,适用于本地文件。 |
| 视频编码,建议使用 H.264 编码 |
| 视频码率,如 |
| 视频帧率。 |
| 视频profile,指定baseline,避免编码B帧。 |
| GOP 帧数间隔。 |
| 音频编码,建议使用 |
| 双声道,音频码率 128kbps。 |
| 输出格式,固定填 |
更多参数详见FFmpeg 官网。
推流示例
ffmpeg -re -i sample.flv \
-c:v libx264 -profile:v baseline -g 50 -b:v 1500k -r 25 \
-c:a aac -b:a 128k -ac 2 \
-f flv "rtmp://rcrpush.rtmp.alivecdn.com/4050f7-*****-851be4e/4573e******831?qqzr=H4sIAAAAAAAC_wTAS************mkSAAAAA&auth_key=1756*******81c0"