当前位置: 首页 > 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的流媒体,兼容所有浏览器和设备。

    • ​总结​

    • ​适用场景​​:传统直播推流、视频监控、简单直播系统。
http://www.xdnf.cn/news/141247.html

相关文章:

  • Aloudata Agent :基于 NoETL 明细语义层的分析决策智能体
  • Linux阻塞与非阻塞I/O:从原理到实践详解
  • 学硕热度下降,25西电数学与统计学院(考研录取情况)
  • 高频面试题:如何保证数据库和es数据一致性
  • ES历史版本下载
  • 第TR5周:Transformer实战:文本分类
  • 图像识别系统 - Ubuntu部署指南(香橙派开发板测试)-学习记录1
  • MySQL 详解之函数:数据处理与计算的利器
  • HOW - 如何模拟实现 gpt 展示答案的交互效果
  • form表单提交前设置请求头request header及文件下载
  • 线程怎么创建?Java 四种方式一网打尽
  • uniapp 仿企微左边公司切换页
  • FreeRTOS
  • 斗鱼娱乐电玩平台源码搭建实录
  • 短视频矩阵系统可视化剪辑功能开发,支持OEM
  • QT 连接数据库操作(15)
  • Pandas 数据导出:如何将 DataFrame 追加到 Excel 的不同工作表
  • 银发科技:AI健康小屋如何破解老龄化困局
  • MYSQL之数据类型
  • 【MySQL】3分钟解决MySQL深度分页问题
  • git 命令集
  • 【Web应用服务器_Tomcat】一、Tomcat基础与核心功能详解
  • 如何配置Spark
  • Spring-Framework源码环境搭建
  • 7.10 GitHub Sentinel CLI开发实战:Python构建企业级监控工具的5大核心技巧
  • JMeter添加HTTP请求默认值元件的作用详解
  • 百度打响第一枪!通用超级智能体时代,真的来了
  • 常用第三方库:flutter_boost混合开发
  • Android Kotlin 依赖注入全解:Koin appModule 配置与多 ViewModel 数据共享实战指南
  • 解决视频处理中的 HEVC 解码错误:Could not find ref with POC xxx【已解决】