原理
如图所示,nginx 通过 rtmp 模块提供 rtmp 服务 , ffmpeg 推送一个 rtmp 流到 nginx, 然后客户端通过访问 nginx 来拉流收 看实时视频流 .
需要安装的
FFMPEG :音视频处理及编码,将视频源以 rtmp 流形式推送到 NGINX 服务器
NGINX :流媒体服务器,接收推流与推送客户端的拉流
nginx-rtmp-module : nginx 的模块,提供 rtmp 服务
安装方法参考我之前的文章
需要配置的
打开 NGINX 安装路径下的 nginx.conf 配置文件(一般为 /usr/local/nginx/conf/nginx,conf ) 配置 rtmp ,如下:
vents {
... ...
}
rtmp{
server{
listen 1935; # 默认监听端口
chunk_size 4096;
application vod{ # 支持点播
play /opt/video/vod; # 点播视频存放路径
}
application mylive{ # 支持直播
live on;
}
}
}
http {
... ...
}复制代码
实现推流
( 1 ) ffmpeg 推流
ffmpeg -re -i "D:\test.mp4"-vcodec copy -f flv rtmp://serverIP:1935/mylive/room1
这个 room1 是可以随便定义的,只要 mylive 和上面 nginx.conf 里面配置的一样就行
( 2 )推流软件进行推流
支持推流的软件,如 OBS
实现拉流
所有支持 rtmp 流的客户端,如 VLC 播放器,拉流地址: rtmp://serverIP:1935/mylive/room1
实现点播
将视频文件存放于上面 nginx.conf 里面配置的点播路径里( /opt/video/vod ),然后在 拉流端输入拉流地址: rtmp://serverIP:1935/vod/test.mp4
实现多直播
在配置文件 nginx.conf 里进行配置,如下:
rtmp{
server{
listen 1935; # 默认监听端口
chunk_size 4096;
application vod{ # 支持点播
play /opt/video/vod; # 点播视频存放路径
}
application mylive1{ # 支持直播 1
live on;
}
application mylive2{ # 支持直播 2
live on;
}
application mylive3{ # 支持直播 3
live on;
}
}
} 复制代码
此时,对应的推流拉流的地址也应进行变化,如 rtmp://serverIP:1935/mylive3/room1