当前位置: 首页 > news >正文

RTMP 入门指南

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 为例)​
  1. ​下载 OBS​​:https://obsproject.com/

  2. ​配置推流地址​​:

    • 服务器:rtmp://你的服务器IP:1935/live
    • 流密钥:自定义唯一标识(如 test
    • 完整推流URL:rtmp://你的服务器IP:1935/live/test
  3. ​开始推流​​:点击“开始推流”。

​拉流播放(以 VLC 为例)​
  1. 打开 VLC → 媒体 → 打开网络串流 → 输入地址:
    rtmp://你的服务器IP:1935/live/test
  2. 点击“播放”。

​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的流媒体,兼容所有浏览器和设备。

    • ​总结​

    • ​适用场景​​:传统直播推流、视频监控、简单直播系统。

相关文章:

  • 【语法】C++的stack和queue
  • 零基础快速搭建AI绘画网站!用Gradio玩转Stable Diffusion
  • Langchain入门介绍
  • Spring @Transactional 自调用问题深度解析
  • C语言----函数栈帧讲解
  • 抖音IP属地跟无线网有关系吗?一文解析
  • 【智慧城市】新中地GIS开发实训:基于 Vue 框架的武汉智慧旅游系统
  • http协议详解附带c/c++服务器和客户端源码
  • 在统信UOS/麒麟Kylin OS中创建网页桌面快捷方式
  • 反序列化漏洞1
  • python pymysql如何保证数据库更新成功
  • 12.thinkphp验证
  • 隧道调频广播覆盖的实现路径:隧道无线广播技术赋能行车安全升级,隧道汽车广播收音系统助力隧道安全管理升级
  • 海量信息处理分析有效决策
  • 控件和QWidget核心属性
  • Android——Activity与Fragment通信
  • SpringBoot 常用注解大全
  • 智能分析网关摄像机实时接入分析平台,如何开启周界防护智能新时代?
  • Allegro23.1新功能之将差分过孔替换成via structure操作指导
  • ArkTS中的空安全:全面解析与实践
  • 我国对国家发展规划专门立法
  • 特朗普称已为俄乌问题设最后期限,届时美国态度或生变
  • “两高”司法解释:升档为境外非法提供商业秘密罪的量刑标准
  • 上海体育消费节将从5月持续至11月,推出运动装备商品促销活动
  • 美联储褐皮书:关税政策背景下,美国部分地区物价上涨、经济前景恶化
  • 中纪报刊文:新时代反腐败斗争为党赢得历史主动