流媒体方案之Nginx——实现物联网视频监控项目

简介: 流媒体方案之Nginx——实现物联网视频监控项目

前言

最近想做一个安防相关的项目,所以跟着韦东山老师的视频来学习视频监控方案的相关知识,韦东山老师讲的课非常好,本章主要介绍推流端Nginx


一、Nginx是什么

  • 一套开源软件,纯C语言编写,效率高
  • HTTP和反向代理web服务器,同时也是一个 IMAP、POP3、SMTP 代理服务器
  • 稳定、高效,支持高并发
  • 即使强如阿里巴巴,也是使用Nginx:
  • http://tengine.taobao.org/,它就是在Nginx的基础上,针对大访问量网站的需求,添加了很多高级功能和特性。
  • 我们只关注:Nginx可以作为流体服务器,支持RTMP、HTTPFLV、HLS等协议

二、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会涉及到。

三、软硬件准备

硬件:

  • 100ASK_IMX6ULL开发板 (或其他Linux开发板)
  • USB摄像头

软件:

  • Ubuntu;
  • Buildroot(Buildroot会自动下载其他软件: MJPG-streamer, ffmpeg, nginx);

四、移植编译Nginx

这里跟我前两篇文章移植编译 FFmpeg 和 MJPG-streamer 一样有两种方法:

方法1:下载源码,手工编译

方法2:使用Buildroot,配置选择Nginx,直接编译生成映象文件

我们使用Buildroot:

  1. 设置交叉编译工具链
  2. 下载第3方模块: 在Buildroot目录下,创建目录:mkdir dl/nginx 使用git下载:cd dl/nginx && git clone https://github.com/winshining/nginx-http-flv-module.git
  3. 在Buildroot根目录 make menuconfig

把原来的lighttpd去掉。(否则板子也会自动启动它,就会有两个HTTP服务了:lighttpd, nginx)

  1. 如图选择Nginx,建议把所有功能都选上
  2. 并且设置额外的参数,在“additional modules”中添加:

$(TOPDIR)/dl/nginx/nginx-http-flv-module

  1. 最后执行(先删除之前编译的nginx,我发现有时设置的第3方模块不起作用,删除后再make就可以了):rm -rf

output/build/nginx-1.15.7 && make

  1. 这会在Buildroot的dl/nginx目录下自动下载源码,并编译
  2. 结果保存在output/images目录下,有emmc.img, sdcard.img,可以直接烧写到板能的EMMC或SD卡上

五、运行Ngnix

在开发板上烧写好映像文件后,开发板启动时会自动运行Ngnix

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

修改后重启Nginx服务

/etc/init.d/S50nginx restart

六、测试流媒体方案

在开发板上运行了Nginx后,它就已经是一个WEB站点了。

可以在电脑浏览器里输入开发板的IP访问开发板:如图

推流

在开发板上执行:

ffmpeg -f v4l2 -framerate 10 -i /dev/video1 -q 10  -f flv rtmp://127.0.0.1/live/wei

拉流

在PC上安装VLC播放器:https://www.videolan.org/


  1. 使用RTMP协议拉流:VLC播放器中点击“媒体”->“打开网络串流”,输入:rtmp://192.168.5.9/live/wei
  2. 就可以播放了
  3. 使用HTTPFLV协议拉流:VLC播放器中点击“媒体”->“打开网络串流”,输入: http://192.168.5.9/test?app=live&stream=wei ,就可以播放了

缺点:

IMX6ULL性能太弱,在VLC播放器里看到的视频很卡,很滞后

我们可以上传一个mp4文件到开发板,把它推到


Nginx: ffmpeg -re -i test.mp4 -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/wei

然后再用VLC拉流看看,会发现很顺畅


笔记:推送mp4文件就不会涉及到编解码 就会快 会把mp4里面的视频音频原样推送给nginx -re :保持原来的播放速度(就不用一下子把文件全推)


-i test 取test这个文件


-vcodec copy -acodec copy 视频、音频编解码器 保持跟原来的一样 。


framerate 10 代表1秒10帧 –q 10 代表质量是10

-f flv rtmp://127.0.0.1/live/wei 以rtmp协议推送给本地服务器

rtmp://192.168.1.6/live/wei 使用rttp拉流

live是app stream name是wei 从开发板找到live这个app里面wei的这个流


http://192.168.1.6/test?app=live&stream=wei 是用httpflv协议拉流 test是目录


对应前面写的节点 去这个目录里面拉这个app live的stream 就可以播放了

七、浏览器播放

参考:

无插件web直播解决方案,ffmpeg+nginx-http-flv-module+flv.js

【入门】无插件web直播解决方案,ffmpeg+nginx-http-flv-module+flv.js_ffmpeg + nginx + nginx-http-flv-module + flv-CSDN博客

HTTP-FLV直播初探

https://www.cnblogs.com/saysmy/p/7851911.html

具体参考步骤如下:

1.修改/etc/nginx/nginx.conf:

如下:

location /test {
flv_live on;
chunked_transfer_encoding on;
add_header ‘Access-Control-Allow-Origin’ ‘*’;
add_header ‘Access-Control-Allow-Credentials’ ‘true’;
}

4e61353c53f643af2777a0eb32e3b9c5_1aef29081fac4ed091e02f6a7b33c5f9.png

2.编写一个html网页

无插件web直播解决方案,ffmpeg+nginx-http-flv-module+flv.js

https://blog.csdn.net/string_kai/article/details/100598268

Heml的demo:

HTTP-FLV直播初探

https://www.cnblogs.com/saysmy/p/7851911.html

新建一个html文件,复制里面的源码


1.修改里面的url地址 https://xl.live-play.acgvideo.com/live-xl/520658/live_12860646_332_c521e483.flv?wsSecret=778d91efcb22c588be28cb67ebe57082&wsTime=1510929009

修改为: http://192.168.5.9/test?app=live&stream=wei (我们的html拉流串流)

2.他用到一个flv.js文件 我们本地没有 所以要去网上下载 在html中改: <script src=“./flv.js?v=2”>

改为

3.把开发板中的 /usr/html/index.html里面的内容改为上述保存的html的内容,就大功告成了。

此时在浏览器中输入开发板的ip,便可以访问监控页面,如图。


38e644399c2f552e383b11104338886d_e34bda12e1874595831a8bf24b30b4df.png


注意我的开发板的ip是192.168.5.9,老师使用的是192.168.1.6

相关实践学习
钉钉群中如何接收IoT温控器数据告警通知
本实验主要介绍如何将温控器设备以MQTT协议接入IoT物联网平台,通过云产品流转到函数计算FC,调用钉钉群机器人API,实时推送温湿度消息到钉钉群。
阿里云AIoT物联网开发实战
本课程将由物联网专家带你熟悉阿里云AIoT物联网领域全套云产品,7天轻松搭建基于Arduino的端到端物联网场景应用。 开始学习前,请先开通下方两个云产品,让学习更流畅: IoT物联网平台:https://iot.console.aliyun.com/ LinkWAN物联网络管理平台:https://linkwan.console.aliyun.com/service-open
相关文章
|
23天前
|
监控 物联网 编解码
流媒体方案之FFmpeg——实现物联网视频监控项目
流媒体方案之FFmpeg——实现物联网视频监控项目
流媒体方案之FFmpeg——实现物联网视频监控项目
|
23天前
|
编解码 监控 Ubuntu
MJPG-streamer方案实现物联网视频监控
MJPG-streamer方案实现物联网视频监控
MJPG-streamer方案实现物联网视频监控
|
8天前
|
传感器 存储 机器学习/深度学习
物联网(IoT)简介:定义、技术与应用
【5月更文挑战第30天】物联网(IoT)是将物品通过嵌入式系统、传感器及通信技术连接至互联网,实现物物、物人交互和数据共享的技术。其关键包括传感器、通信、嵌入式系统、云计算和人工智能技术。物联网应用于智能家居、智慧城市、工业自动化、农业和健康医疗等领域,通过Arduino等平台可实现简单数据传输。随着技术发展,物联网将深远影响人们生活和工作方式。
49 3
|
2天前
|
供应链 物联网 分布式数据库
未来技术的浪潮:区块链、物联网和虚拟现实的融合与创新
【6月更文挑战第4天】随着科技的不断进步,新兴技术如区块链、物联网和虚拟现实正在逐渐改变我们的生活和工作方式。这些技术的发展趋势和应用场景不仅令人兴奋,也引发了许多有趣的讨论。本文将探讨这些新兴技术的发展趋势,并分析它们在未来可能的应用场景。
|
4天前
|
传感器 物联网 区块链
新兴技术的未来展望:区块链、物联网与虚拟现实的融合
【6月更文挑战第3天】在科技飞速发展的今天,新兴技术如区块链、物联网和虚拟现实正不断重塑我们的生活和工作方式。本文将探讨这些技术的发展趋势,并分析它们如何相互融合,创造出新的应用场景和商业模式。
|
5天前
|
物联网 云计算 传感器
物联网与云计算:天作之合的技术搭档
【6月更文挑战第2天】物联网与云计算协同创造智能世界:物联网如网,连接万物,收集海量数据;云计算似云,提供强大计算力,分析数据,挖掘价值。两者结合,应用于智能家居、工业制造、医疗健康、智能交通等领域,推动数字化转型。代码示例展示物联网数据上传云端过程。未来,随着技术进步,二者的融合将深化,引领更多创新应用,促进社会福祉和进步。
25 5
|
7天前
|
Cloud Native 物联网 持续交付
未来科技浪潮:区块链、物联网与虚拟现实的融合创新云原生技术:重塑IT架构的未来
【5月更文挑战第31天】在信息技术飞速发展的今天,新兴技术如区块链、物联网和虚拟现实等正成为推动社会进步的重要力量。本文将探讨这些技术的发展趋势及其在各领域的应用前景,揭示它们如何相互融合,共同塑造一个智能化、互联的未来世界。 【5月更文挑战第31天】本文深入探讨了云原生技术的兴起及其对传统IT架构的颠覆性影响。通过分析云原生的核心概念,如微服务、容器化、以及持续集成/持续部署(CI/CD),文章揭示了这些技术如何促进更高效、灵活和可扩展的软件开发实践。同时,本文还讨论了企业在采用云原生技术时面临的挑战与机遇,并展望了云原生技术在未来IT领域的发展趋势。
|
7天前
|
存储 边缘计算 物联网
未来技术的融合潮流:区块链、物联网与虚拟现实的革新之路
【5月更文挑战第31天】随着科技的不断进步,新兴技术如区块链、物联网(IoT)和虚拟现实(VR)正在逐渐改变我们的生活和工作方式。本文将探讨这些技术的发展动态,并分析它们在各个应用场景中的结合点,揭示如何利用这些技术推动创新和效率的提升。
|
7天前
|
传感器 供应链 物联网
未来技术纵横谈:区块链、物联网与虚拟现实的革新融合
【5月更文挑战第31天】 在数字化浪潮中,创新技术如区块链、物联网(IoT)、和虚拟现实(VR)正塑造着新的经济和社会格局。本文将探讨这些技术的最新发展趋势,分析它们在不同领域的应用前景,并讨论这些技术如何相互融合,共同推动第四次工业革命的深入发展。通过案例分析和专家访谈,文章揭示了这些技术在未来可能带来的变革,并对企业和个人如何适应这一趋势提出了建议。
|
7天前
|
传感器 机器学习/深度学习 数据采集
物联网中的数据收集与处理技术
【5月更文挑战第31天】物联网依赖数据收集与处理技术实现智能化和价值化。传感器实时采集各类信息,但数据多样、复杂及海量性带来挑战。MQTT等协议用于高效传输,Python示例展示了数据发布。数据处理涉及清洗、转换和分析,如机器学习用于故障预测。实时数据处理技术确保高时效性应用的需求。持续的技术创新将推动物联网在各领域的广泛应用。
16 0

热门文章

最新文章