基于Nginx部署直播推流服务器
基于Nginx部署直播推流服务器
1:环境
什么是RTMP:
RTMP: RTMP协议是Real Time Message Protocol(实时信息传输协议)的缩写,它是由Adobe公司提出的一种应用层的协议,用来解决多媒体数据传输流的多路复用(Multiplexing)和分包(packetizing)的问题
Nginx: 服务器
nginx-rtmp-module: 基于Nginx的流媒体Server
HLS:苹果出的一套Http Live Streaming协议,它的工作原理简单来说就是把一段视频流,分成一个个小的基于HTTP的文件来下载。当媒体流正在播放时,客户端可以根据当前网络环境,方便地在不同的码率流中做切换,以实现更好的观影体验。
2:部署Nginx与RTMP
[root@nginx-rtmp ~]# wget https://nginx.org/download/nginx-1.21.6.tar.gz --no-check-certificate
[root@nginx-rtmp ~]# ls
anaconda-ks.cfg nginx-1.21.6.tar.gz nginx-rtmp-module
# 安装nginx所需软件包
[root@nginx-rtmp ~]# yum -y install pcre pcre-devel openssl openssl-devel zlib-devel gcc
# 解压nginx并安装
[root@nginx-rtmp ~]# tar xf nginx-1.21.6.tar.gz
[root@nginx-rtmp ~]# cd nginx-1.21.6/
[root@nginx-rtmp nginx-1.21.6]# ./configure --prefix=/usr/local/nginx --add-module=../nginx-rtmp-module --with-http_ssl_module
[root@nginx-rtmp nginx-1.21.6]# echo $?
0
[root@nginx-rtmp nginx-1.21.6]# make && make install
[root@nginx-rtmp nginx-1.21.6]# echo $?
0
# 配置Nginx
[root@nginx-rtmp nginx-1.21.6]# cat /usr/local/nginx/conf/nginx.conf | grep -v "^#"
[root@nginx-rtmp nginx-1.21.6]# cat /usr/local/nginx/conf/nginx.conf
worker_processes 1;
events {
worker_connections 1024;
}
rtmp {
server {
listen 1935;
chunk_size 4000;
application live {
live on;
hls on;
hls_path /usr/local/nginx/html/live;
hls_fragment 5s;
}
}
}
http {
server {
listen 80;
location /{
root /usr/share/nginx/html;
index index.html index.htm;
}
}
}
# 注意:hls所在目录nginx的用户必须有写入权限。
[root@nginx-rtmp nginx-1.21.6]# ln -s /usr/local/nginx/sbin/nginx /usr/local/sbin/
[root@nginx-rtmp nginx-1.21.6]# nginx -t
nginx: the configuration file /usr/local/nginx/conf/nginx.conf syntax is ok
nginx: configuration file /usr/local/nginx/conf/nginx.conf test is successfu
3:启动Nginx测试推流
[root@nginx-rtmp nginx-1.21.6]# ss -lnt
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:1935 *:*
LISTEN 0 128 *:111 *:*
LISTEN 0 128 *:80 *:*
# 下载OBS
下载地址:https://obsproject.com/
[root@nginx-rtmp live]# ls
aaa-35.ts aaa-37.ts aaa-39.ts aaa-41.ts aaa-43.ts aaa-45.ts aaa.m3u8
aaa-36.ts aaa-38.ts aaa-40.ts aaa-42.ts aaa-44.ts aaa-46.ts
# 有数据流进来
可以就可以使用拉流软件拉取来播放了
【推荐】FlashTable:表单开发界的极速跑车,让你的开发效率一路狂飙
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么PostgreSQL不自动缓存执行计划?
· 于是转身独立开发者
· C#.Net筑基-泛型T & 协变逆变
· dotnet 代码调试方法
· DbContext是如何识别出实体集合的
· 【Cursor保姆级教程】零基础小白从安装到实战,手把手教你玩转AI编程神器!
· Cursor 实战万字经验分享,与 AI 编码的深度思考
· MySQL查询执行顺序:一张图看懂SQL是如何工作的
· 工作流引擎系统-基于橙单(flowable)的系统开发-流程配置举例
· 用 AI 制作超长视频,保姆级教程!