1. RTMP 基础概念
-  
核心角色:
- 推流端(Publisher):将音视频数据推送到服务器的设备(如OBS、手机APP)。
 - 服务器(RTMP Server):接收推流并分发给观众的中间节点(如Nginx-RTMP、SRS)。
 - 播放端(Player):从服务器拉取流并播放的设备(如VLC、网页播放器)。
 
 -  
协议特点:
- 基于TCP:保证数据完整性,但延迟较高(3-5秒)。
 - 默认端口:1935(推流和拉流均通过此端口)。
 - 2. 快速搭建 RTMP 服务器
 -  
以 Nginx-RTMP 为例(支持Linux/Windows):
步骤1:安装 Nginx-RTMP
步骤2:配置 RTMP 服务
编辑配置文件
/etc/nginx/nginx.conf,添加以下内容: -  
rtmp {server {listen 1935;chunk_size 4096;application live {live on;record off;# 允许所有IP推流(生产环境需限制)allow publish all;}} }步骤3:重启 Nginx
 -  
sudo systemctl restart nginx 
 
3. 推流与拉流操作
推流端(以 OBS 为例)
-  
下载 OBS:https://obsproject.com/
 -  
配置推流地址:
- 服务器:
rtmp://你的服务器IP:1935/live - 流密钥:自定义唯一标识(如 
test) - 完整推流URL:
rtmp://你的服务器IP:1935/live/test 
 - 服务器:
 -  
开始推流:点击“开始推流”。
 
拉流播放(以 VLC 为例)
- 打开 VLC → 媒体 → 打开网络串流 → 输入地址: 
rtmp://你的服务器IP:1935/live/test - 点击“播放”。
 
4. 进阶功能
转码与多协议分发
在 nginx.conf 中添加转码配置:
application live {live on;exec ffmpeg -i rtmp://localhost:1935/live/$name-c:v libx264 -preset ultrafast -tune zerolatency -g 20 -r 30 -b:v 1000k -f flv rtmp://localhost:1935/hls/$name;
}application hls {live on;hls on;hls_path /tmp/hls;hls_fragment 2s;hls_playlist_length 6s;
} 
通过HLS协议播放:http://你的服务器IP:8080/hls/test.m3u8
录制直播流
application live {live on;record all;record_path /var/rec;record_unique on;
} 
5. 常见问题与解决
问题1:推流失败
问题3:浏览器无法播放RTMP
- 原因:服务器防火墙未开放1935端口。
 - 解决: 
sudo ufw allow 1935/tcp sudo systemctl restart nginx问题2:播放卡顿
 - 原因:网络带宽不足或服务器性能瓶颈。
 - 解决: 
- 降低推流码率(OBS设置 → 输出 → 视频比特率)。
 - 使用CDN分发或升级服务器配置。
 
 - 原因:现代浏览器已废弃Flash,需转用HLS/WebRTC。
 - 解决: 
- 使用基于HLS的播放器(如Video.js、hls.js)。
 - 将RTMP流转码为HLS/DASH(参考进阶功能)。 
6. RTMP 的替代方案
 - SRT(Secure Reliable Transport):低延迟、抗丢包,适合不稳定网络。
 - WebRTC:超低延迟(<1秒),适合实时互动场景。
 - HLS/DASH:基于HTTP的流媒体,兼容所有浏览器和设备。
 -  
总结
 - 适用场景:传统直播推流、视频监控、简单直播系统。