RTMP服务器搭建

1、流媒体

基本概念

流媒体(Streaming media),也叫做:流式媒体。

  • 是指将一连串的多媒体数据压缩后,经过互联网分段发送数据,在互联网上即时传输影音以供观赏的一种技术与过程
  • 此技术使得数据包可以像流水 一样发送,如果不使用此技术,就必须得先下载整个媒体文件才能进行观看

流媒体的一个非常典型、火爆的应用场景:直播。近几年,直播行业是蒸蒸日上。

直播架构

下面放几张图片,简单了解一下直播技术的基本架构。

你可能会有个疑问:信令服务器是干嘛用的?用来处理分享端和观看端的一些信令指令,比如创建房间、加入房间等。

用文字总结一下基本流程是:

  • 分享端(比如主播) -> 产生音视频 -> 编码压缩音视频 -> 推流到服务器
  • 观看端(比如观众) -> 从服务器拉流 -> 解码解压缩音视频 -> 播放音视频

推拉流

  • 推流:通过流媒体协议,将音视频数据发送到流媒体服务器
  • 拉流:通过流媒体协议,从流媒体服务器上拉取获得音视频数据

流媒体协议

常见的流媒体协议有:RTMP、HLS等。

  • RTMP(R eal-T ime M essaging Protocol)译为:实时消息传输协议,由Adobe公司出品默认基于TCP的1935端口
  • HLS(H TTP L ive Streaming)基于HTTP的流媒体网络传输协议,苹果公司出品参考:RFC 8216

本文主要介绍RTMP协议相关知识。

2、服务器环境

首先,要搭建好RTMP服务器环境,主要步骤如下:

  • 安装虚拟机VMWare或Parallels Desktop我这里安装的是VMWare
  • 在虚拟机上安装CentOS 系统CentOS是Linux系统的一种,这里用7.6版本,建议跟我的版本保持一致
  • 在CentOS系统中安装nginxnginx-rtmp-modulenginx:一款高性能的开源web服务器nginx-rtmp-module:让nginx支持rtmp
  • 配置nginx
  • 启动nginx

安装CentOS

下载CentOS

推荐网站:centoschina,上面有CentOS的各种版本,这里下载CentOS-7-x86_64-DVD-1810.iso,大小是4G多。

安装nginx

在nginx官网下载目前最新的稳定版:nginx-1.20.1.tar.gz。

安装nginx-rtmp-module

在nginx-rtmp-module的github下载目前最新的稳定版:v1.2.2.tar.gz。

配置nginx

启动nginx

一些步骤和命令整理

  • 安装依赖

    yum install -y gcc pcre pcre-devel zlib zlib-devel openssl openssl-devel

  • 设置共享文件夹查看共享成功与否vmware-hgfsclient 挂载到对应目录(这里放mnt)vmhgfs-fuse .host:/共享目录名称 /mnt/目录名称

  • 解压ngnix相关内容cp 源 目标tar -zxvf 解压文件

  • 进入nginx目录,执行configure进行配置

    ./configure --prefix=/usr/local/nginx --add-module=ngnix的rtmp模块目录 --with-http_ssl_module

  • 修改nginx配置

vim conf/nginx.conf

复制代码
rtmp {      
    server {    
        listen 1935; # 端口
        chunk_size 4000;     
        application live { # 请求路径
            live on;     
        }   
    }   
}
  • 配置PATH

export PATH=$PATH:/usr/local/nginx/sbin

  • 启动nginx

nginx

  • 查看

端口占用:lsof -i:1935 杀死进程:kill -9 pid

  • 如果远程连接不上rtmp服务器,有可能是因为防火墙把1935端口关掉了

    查看端口情况(返回no代表被关闭了)

    firewall-cmd --query-port=1935/tcp

    拿到zone名称(一般是public)

    firewall-cmd --get-active-zones

    打开端口

    firewall-cmd --zone=public --add-port=1935/tcp --permanent

    重启防火墙(再次查看端口情况,应该会返回yes了)

    firewall-cmd --reload

  • ffmpeg推流

    ffmpeg -i xx.mp4 -f flv rtmp://ip地址:1935/live/xx

  • ffmpeg拉流

    ffplay rtmp://ip地址:1935/live/xx

本文福利, 免费领取C++音视频学习资料包+学习路线大纲、技术视频/代码,内容包括(音视频开发,面试题,FFmpeg ,webRTC ,rtmp ,hls ,rtsp ,ffplay ,编解码,推拉流,srs),有需要的可以进企鹅裙 927239107领取哦~

相关推荐
minji...2 分钟前
Linux 多线程(三)线程控制,线程终止,线程中的异常问题
linux·运维·服务器·开发语言·网络·算法
zzzsde3 分钟前
【Linux】进程间通信(1)管道&&进程池实现
linux·运维·服务器
开开心心_Every14 分钟前
实用PDF擦除隐藏信息工具,空白处理需留意
运维·服务器·网络·pdf·电脑·excel·依赖倒置原则
Hello World . .20 分钟前
Linux:Linux命令行音视频播放器
linux·音视频
qZ6bgMe4321 分钟前
一个高性能的 .NET MQTT 客户端与服务器库
运维·服务器·.net
kvo7f2JTy26 分钟前
.NET 11 预览版1:CoreCLR 在 WebAssembly 上的全面集成与性能突破
服务器·.net·wasm
做cv的小昊26 分钟前
【conda】打包已有conda环境并在其他服务器上搭建
运维·服务器·python·conda·运维开发·pip·开发
Vfw3VsDKo27 分钟前
Android设备搭建本地RTSP服务器(基于live555)
android·运维·服务器
YYYing.29 分钟前
【Linux/C++网络篇(二) 】TCP并发服务器演进史:从多进程到Epoll的进化指南
linux·服务器·网络·c++·tcp/ip
daemon.qiang32 分钟前
麒麟系统v10服务器版本支持intel 12th集成显卡
服务器·图形渲染