文章目录
- [1 概要](#1 概要)
- [2 Nginx是什么](#2 Nginx是什么)
- [3 Nginx在流媒体方案中的位置](#3 Nginx在流媒体方案中的位置)
- [4 Nginx移植](#4 Nginx移植)
- [5 运行Nginx](#5 运行Nginx)
- [6 测试流媒体方案](#6 测试流媒体方案)
- [7 总结](#7 总结)
- [8 其他章节链接](#8 其他章节链接)
1 概要
本章节主要介绍Nginx的使用,参考了韦东山老师的视频【自己做一个物联网视频监控系统】韦东山老师手把手带你从0开始自己做一个视频监控系统],还有CSDN博主热爱嵌入式的小家同学的内容流媒体方案之FFmpeg------实现物联网视频监控项目。
其中本文章大量内容来自博主热爱嵌入式的小家同学,大家可以直接点链接跳转过去看。
前两篇已经介绍,MJPG-streamer方案和流媒体方案之FFmpeg实现物联网视频监控,链接如下:
2 Nginx是什么
- 一套开源软件,纯C语言编写,效率高
- HTTP和反向代理web服务器,同时也是一个 IMAP、POP3、SMTP 代理服务器
- 稳定、高效,支持高并发
- 即使强如阿里巴巴,也是使用Nginx:http://tengine.taobao.org/,它就是在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。
- 我们只关注:Nginx可以作为流体服务器,支持RTMP、HTTPFLV、HLS等协议
3 Nginx在流媒体方案中的位置

推流端
- FFmpeg使用RTMP协议向Nginx推流
拉流端
- VLC播放器使用RTMP或HTTPFLV协议从Nginx拉流
- 浏览器使用HTTPFLV协议从Nginx拉流(安装flv.js)
让Ngnix支持RTMP、HTTPFLV协议
Nginux需要第3方模块;
nginx-rtmp-module:实现了RTMP协议;
nginx-http-flv-module:在nginx-rtmp-module的基础上,实现了HTTPFLV,并覆盖nginx-rtmp-module的所有功能,所以,我们将会在Nginx上使用nginx-http-flv-module
第3方模块源码:
https://github.com/winshining/nginx-http-flv-module/
添加第三方模块这部分下面配置buildroot会涉及到。
4 Nginx移植
参考此篇文章:
【STM32MP157 视频监控项目】(2) 移植 Nginx
5 运行Nginx
在开发板上烧写好映像文件后,开发板启动时会自动运行Ngnix。
输入命令可查看第三方模块已被添加:
c
nginx -V

为了让它支持RTMP、HTTPFLV,需要修改配置文件:
c
vi /etc/nginx/nginx.conf

c
rtmp {
server {
listen 1935; # Listen on standard RTMP port
chunk_size 4096;
application live {
allow publish 127.0.0.1;
allow play all;
live on; # Enable listening for live streampplication
record off; # Do not record the stream
meta copy; # Copy the incoming metadata for the outgoing metadata
}
}
}
在http里添加:
c
location /test {
flv_live on;
}

修改后重启Nginx服务:
c
/etc/init.d/S50nginx restart

6 测试流媒体方案
接网线:

在开发板上运行了Nginx后,它就已经是一个WEB站点了,可以在电脑浏览器里输入开发板的IP访问开发板:

推流
在开发板上执行:
c
ffmpeg -f v4l2 -framerate 10 -i /dev/video1 -q 10 -f flv rtmp://127.0.0.1/live/wei
- ffmpeg: 调用FFmpeg程序。
- -f v4l2: 设置输入格式为v4l2,即Video for Linux 2,用于访问摄像头设备。
- -framerate 10: 设置输入帧率为10帧每秒。
- -i /dev/video1: 指定输入设备为/dev/video1,这是Linux系统中摄像头设备的路径。
- -q 10: 设置输出视频的质量,范围是1(最好)到31(最差),这里设置为10。
- -f flv: 设置输出格式为FLV,一种流行的网络视频格式。
- rtmp://127.0.0.1/live/wei: 指定输出的RTMP服务器地址和流名称,这里是本地服务器的地址,流名称为"wei"。
拉流
在PC上安装VLC播放器:大家自行下载VLC
- **使用RTMP协议拉流:**VLC播放器中点击"媒体"->"打开网络串流",输入:rtmp://192.168.5.9/live/wei就可以播放了
- **使用HTTPFLV协议拉流:**VLC播放器中点击"媒体"->"打开网络串流",输入: http://192.168.5.9/test?app=live\&stream=wei ,就可以播放了
RTMP协议拉流:
c
rtmp://192.168.5.9/live/wei
rtmp://192.168.1.6/live/wei 使用rttp拉流
live 是 app stream
name是wei:从开发板找到live这个app里面wei的这个流
HTTPFLV协议拉流:
c
http://192.168.5.9/test?app=live&stream=wei
test是目录
对应前面写的节点
去这个目录里面拉这个app live的stream 就可以播放了
7 总结
本章节介绍了Nginx的相关知识点。
8 其他章节链接
- 三种视频监控方案介绍
- MJPG-streamer方案的实现以及原理分析
- 流媒体方案的实现之ffmpeg
- 流媒体方案的实现之Nginx
- 摄像头和声卡接口