【物联网视频监控系统----韦东山老师视频总结】(4)流媒体方案的实现之Nginx

文章目录

  • [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实现物联网视频监控,链接如下:

  1. 【物联网视频监控系统----韦东山老师视频总结】(3)MJPG-streamer方案的实现及原理分析
  2. 【物联网视频监控系统----韦东山老师视频总结】(4)流媒体方案的实现之ffmpeg

2 Nginx是什么

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

  1. **使用RTMP协议拉流:**VLC播放器中点击"媒体"->"打开网络串流",输入:rtmp://192.168.5.9/live/wei就可以播放了
  2. **使用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 其他章节链接

  1. 三种视频监控方案介绍
  2. MJPG-streamer方案的实现以及原理分析
  3. 流媒体方案的实现之ffmpeg
  4. 流媒体方案的实现之Nginx
  5. 摄像头和声卡接口
相关推荐
光依旧2 小时前
发版就掉请求?Spring Boot优雅停机的四步
运维·spring boot·nginx·高可用·优雅停机·mcp server
李永奉3 小时前
日常使用的锂电池上,新、旧锂电池的差异分析
单片机·嵌入式硬件·物联网·智能手机·电脑
小猴子爱上树7 小时前
跨境电商AI图片翻译工具:批量图片翻译、视频字幕翻译与智能抠图一站式解决
大数据·人工智能·python·音视频
曹小强wxx8 小时前
Flutter 局域网设备发现:UDP 广播 + mDNS 双路合并,以及靠谱的在线判定与断线重连
物联网·网络协议·flutter
弈语道破AI8 小时前
一稿出片!双十一品牌宣传AI视频生成工具推荐:即梦 Seedance 2.5 全球首发
人工智能·音视频
虎王物联9 小时前
随身WiFi后台随心改:web页面定制实录(改标题、换图标、加按钮)
物联网·随身wifi
赛博仓鼠9 小时前
Vidu Q4 Preview实测:15张参考图+3段音频驱动,2K/4K输出,国产视频生成新标杆
ai·aigc·音视频
小猴子爱上树10 小时前
跨马翻译:批量图片翻译+视频字幕+智能抠图,一站式跨境电商翻译工具
python·音视频
ofoxcoding11 小时前
Gemini TTS 与 ElevenLabs 语音合成实测:同一段视频旁白效果对比
ai·ffmpeg·音视频