1.
在开始前确认:CDN支持RTMP上行(ingest)并能做转封装(RTMP->HLS/FLV/DASH),你有CDN提供的推流地址与流名(stream key),以及用于推流的编码器(如OBS、Wirecast、ffmpeg)。
还需确认防火墙开放TCP端口1935(RTMP常用),以及控制台或API上的鉴权方式(明文key、签名或Token)。
2.
从CDN控制台复制RTMP推流地址,常见格式:rtmp://push.cdn.com/app/streamkey 或 rtmp://push.cdn.com:1935/app/streamkey。
若使用鉴权(推荐),记录好有效期、签名规则或HTTP回调配置,确认推流URL是否需要附带token作为查询参数或放在streamKey里。
3.
打开OBS:设置 -> 流,服务选择“自定义”,在“服务器”填入rtmp推流地址(去掉流名部分),在“串流密钥”填入streamkey或token。
在“输出”里选择编码器(x264或硬件),设置比特率(观众数与带宽决定),建议视频码率2.5-6Mbps、音频128kbps。应用并开始推流,查看OBS日志确认连接成功。
4.
常用命令:ffmpeg -re -i input.mp4 -c:v libx264 -preset veryfast -b:v 3000k -maxrate 3500k -bufsize 7000k -g 50 -c:a aac -b:a 128k -f flv "rtmp://push.cdn.com/app/streamkey"
若是实时采集设备,可将input替换为摄像头或声卡设备,注意加入-re选项用于实时推送,监控控制台输出判断是否断流或丢帧。
5.
一:检查推流地址和streamkey是否正确;二:确认防火墙/网络是否能连通1935端口;三:查看CDN返回的错误码或OBS/ffmpeg日志(如401、403为鉴权问题);四:若频繁断流,检查推流端比特率与网络带宽是否匹配。
可用telnet push.cdn.com 1935 或 curl 检查网络连通性。
6.
注意:浏览器原生不再支持RTMP(Flash已淘汰),移动端与现代桌面端推荐使用HLS或DASH。常见做法:CDN接收RTMP上行后实时转为HLS(m3u8)或fMP4用于播放。
若需在网页播放RTMP历史流,可使用流式播放器或专门的插件(但不推荐生产环境)。
7.
确保CDN已生成HLS地址(例如:https://play.cdn.com/live/app/streamkey.m3u8)。在前端使用hls.js或Video.js的HLS插件即可播放:
步骤:引入hls.js,创建video标签,若浏览器支持MSE,用hls.loadSource(hlsUrl)并attachMedia(video)。在iOS Safari可直接设置video.src = hlsUrl。
8.
若CDN支持FLV over HTTP(flv.js),可以在支持MSE的浏览器使用flv.js播放rtmp转成的flv文件或http-flv流。插入flv.js并new FlvPlayer({type:'flv',url:'https://play.cdn.com/live/stream.flv'})并attach到video标签。
注意兼容性与延迟:HTTP-FLV延迟通常介于RTMP与HLS之间。
9.

若要求低延迟(<3s),优先考虑WebRTC链路或CDN提供的LL-HLS/Low-Latency HLS服务。部署方式:RTMP上行到CDN后由CDN转发为WebRTC或LL-HLS供前端直接消费。
实现上需在CDN侧开通低延迟模块,并在推流端保证关键帧间隔和超时时间设置合理。
10.
生产环境建议启用CDN提供的监控(RTMP会话、推流质量、观众数)并配置告警。对关键活动使用双路冗余推流(主备CDN或主备streamKey),推流端配置断线重连策略(OBS/ffmpeg均支持自动重连参数)。
同时准备回退播放URL(备用CDN或录制回放)以应对突发故障。
11.
A1:在推流成功后登录CDN控制台查看流状态或播放地址面板,常见会显示m3u8或mpd链接。也可以尝试用curl访问该m3u8地址或在浏览器/播放器中打开,若返回的是索引文件且包含.ts片段链接,则已生成。
12.
A2:先确认HLS链接能在工具(VLC、ffplay)播放;若能,检查前端是否正确使用hls.js并且MSE被浏览器支持;查看控制台是否有跨域(CORS)或MIME类型错误,必要时在CDN配置允许CORS并设置正确的Content-Type。
13.
A3:首先在CDN确认是否支持低延迟方案(WebRTC/LL-HLS),其次调整编码器:降低GOP(关键帧间隔)、缩短片段时长(HLS片段2s左右)、启用分段和快速启动选项;最后在前端选择支持低延迟的播放方案并进行端到端测试。