监控物联网项目:web、flv视频流 、websocket、ESP32

2023-05-16

在网上接了第一个项目,在此记录......

目录

项目需求

 前端浏览

两个后端

        python后端

        nginx-flv+ffmpeg后端

总结


项目需求

        手机浏览器,远程查看实时监控视频、按钮控制电机、获取环境温度。

       难点:

       1. 远程控制,两者之间需要外网服务器来中转控制消息和传输视频,这里使用得是阿里家的服务器。

       2. 视频监控,常见的视频流有rtmp、rtsp、http-flv三种传输协议,其中rtmp需要靠 Flash 播放器插件播放,遗憾Flash 于 2020 年正式结束了(但是可以用来服务端的视频推流);而rtsp不兼容HTTP,不能应用在web端。即,移动端选择http-flv视频流协议拉流。

        3. web端,需要和外网服务器进行消息收发,毫无疑问使用websocket最友好。

         暂时用我身边的linux机子局域网实现,后期移植到阿里家

        (以上有什么更好的方法,欢迎评论区或者私聊我讨论)

 前端浏览

 

web移动端——加载状态

        个人前端设计不好,丑了凑合着看,主要是先功能实现,后期在慢慢优化。下面献上js后端代码,简短了一下代码,主要是展现思路:

//创建websocket
var ws = new WebSocket("ws://192.168.10.100:8082");


//每200毫秒执行getstate函数,获取状态值
window.setInterval(function(){getstate()},200);

//获取状态值
function getstate(){

	ws.send("getstate");

	......
   
}


//onclick事件,按钮触发,向服务器发送用户控制信息
function order(serial)
{
	......
}

        每200毫秒获取状态值,200毫秒延时还是有一点感觉的,可以适当减少间隔时间,但时间过于小对移动端不是很友好。

两个后端

        python后端

        主要用的库有:

                websockets ——联络web移动端

                soocket ——联络ESP32端

                cv2——处理图像

                pipe——使用ffmpeg将处理好的图像推流给nginx-flv

                threading ——线程(开始用的是 Process 进程库,可是遇到没法共享消息的问题,移动端进程和ESP32端进程之间交流不了,索性就用了线程)

        nginx-flv+ffmpeg后端

                nginx-flv的安装和配置不太友好,但按照github作者的用法做就可以。

                ffmpeg视频推流的安装,我试过在官网下载压缩包make编译安装,但是还有依赖包等东西的安装。。。最后用apt install ffmpeg安装,一劳永逸。

——2023.3.29


本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

监控物联网项目:web、flv视频流 、websocket、ESP32 的相关文章

  • 从零开始学GO ---- 错误处理

    从零开始学GO 错误处理 Go 语言通过内置的错误接口提供了非常简单的错误处理机制 error类型接口 在这个接口类型的声明中只包含了一个方法Error Error方法不接受任何参数 xff0c 但是会返回一个string类型的结果 它的作
  • 从零开始学GO ---- 接口

    从零开始学GO 接口 接口是一个编程规范 xff0c 一组方法签名的集合 Go的接口是非侵入式的设置 xff0c 一个具体类型实现接口不需要在语法上显式地声明 xff0c 只要具体类型的方法集是接口方法集的超集 xff0c 就代表该类型实现
  • Golang通过反射对结构体进行赋值和其他操作

    Golang通过反射对结构体进行赋值和其他操作 通过反射可以方便快捷地访问Golang的结构体字段 xff0c 并进行赋值或其他操作 当两个结构体内容相同但名字不同时 xff0c 如何快捷地进行赋值 xff1f 或者内容有交集 xff0c
  • 如何使用github来下载你需要使用的ros资源

    使用ros系统 xff0c 需要用到许多数据包 xff0c 有些时候你需要使用的ROS数据包并没有Debian包的形式 xff0c 这时你需要从数据源安装它 代码开发人员通常使用的有三种主流的版本控制系统 xff1a SVN xff0c G
  • VLC RTSP视频播放终极解决方案

    VLC播放RTSP视频流遇到的问题 摄像头是RTSP协议的 xff0c 需要在Android端实时显示摄像头视频流 xff0c 这里采用了开源的VLC播放器 xff0c 可能会有如下需求 xff1a 一 有截屏的需求 二 有屏幕录制的需求
  • docker push 实现过程

    这一篇文章分析一下docker push的过程 xff1b docker push是将本地的镜像上传到registry service的过程 xff1b 根据前几篇文章 xff0c 可以知道客户端的命令是在api client push g
  • FreeRTOS专题六:支持多优先级

    在 FreeRTOS 中 xff0c 数字优先级越小 xff0c 逻辑优先级也越小 xff0c 这与RT Thread 和 C OS刚好相反 就绪列表 pxReadyTasksLists configMAX PRIORITIES 是一个数组
  • 操作系统中的中断(详细介绍+图片理解)

    中断的概念 中断是指程序执行过程中 xff0c 遇到急需处理的事件时 xff0c 暂时中止CPU上现行程序的运行 xff0c 转去执行相应的事件处理程序 xff0c 待处理完成后再返回原程序被中断处或调度其他程序执行的过程操作系统是 中断驱
  • Android 如何杀死Service

    方法很简单就是用ActivityManager private void killeService List lt RunningAppProcessInfo gt infos TODO 自动生成的方法存根 ActivityManager
  • [自动驾驶]Build a Traffic Sign Recognition Program

    看 准确率98 的深度学习交通标志识别是如何做到的 xff1f 这篇文章的时候 xff0c 发现了udacity的自动驾驶课程 可惜要收费 xff0c 不过课程project在github上有 xff0c 那直接做project就好了 xf
  • 教你快速学习PID控制原理

    教你快速学习PID控制原理 写在前面 在这篇文章中我会通过举例的方式来让大家了解什么是PID控制 xff0c 这篇博客是让大家更加容易的理解PID控制 xff0c 如果大家想要跟深入的了解的话最好是自己上手去做一个关于PID控制的实物 xf
  • opencv HSV找颜色,找轮廓用最小旋转矩形框出

    include lt opencv2 opencv hpp gt include lt iostream gt include lt string gt using namespace cv using namespace std 输入图像
  • FreeRTOS学习笔记——FreeRTOS 任务基础知识

    RTOS 系统的核心就是任务管理 xff0c FreeRTOS 也不例外 xff0c 而且大多数学习RTOS 系统的工程师或者学生主要就是为了使用RTOS 的多任务处理功能 xff0c 初步上手RTOS 系统首先必须掌握的也是任务的创建 删
  • linux c char * char[]相互转换

    1 char 转char 可以直接赋值 char pp 20 61 34 helloworld 34 char p 61 pp 2 char 转char 主要有两种方法可以将char 转换为char 类型 xff0c 分别是 xff1a s
  • GDB改变程序的执行

    1 修改变量值 xff1a set var var name 61 num 最佳 print var name 61 num 2 跳转执行 gdb提供了乱序执行的功能 jump linespec linespec可以是文件的行号 xff0c
  • Linux缓冲区

    所有的磁盘I O都要进过内核的快缓冲区 xff08 内核缓冲区高速缓冲 xff09 xff0c 既然read和write都要被内核缓冲 xff0c 那么 不带缓冲的IO 指的是在用户的进程中对这两个函数不会进行缓冲 xff0c 每次read
  • git忽略本地的已经push过的提交

    先使用如下命令 xff1a span class hljs comment git span span class hljs comment rm span span class hljs literal span span class h
  • 计算机启动过程

    BIOS BIOS做了底层的一些初始化的工作 BIOS的初始化过程 xff1a 在计算机电源刚打开的时候 xff0c 首先会 xff1a 1 硬件自检 2 检查系统中的内存和显卡等关键部件的存在和工作状态 3 查找并执行显卡等接口卡BIOS
  • 系统调用

    系统调用 xff1a 操作系统对上提供服务的接口 通过软中断触发中断 INT和IRET指令用于系统调用 xff0c 系统调用时 xff0c 堆栈切换和特权级的切换 开销 1 引导机制 2 建立内核堆栈 3 验证参数 4 内核态映射到用户态的
  • ERVER CONSOLE DEBUG: onBackendConnect: gdb-server session closed

    Waiting for gdb server to start 2022 08 24T07 08 56 126Z SERVER CONSOLE DEBUG onBackendConnect gdb server session connec

随机推荐

  • Linux离线安装telnet命令

    参考 xff1a https www hangge com blog cache detail 2935 html 一 离线包下载 xff08 1 xff09 首先下载 telnet client 或 telnet 客户端软件包 xff0c
  • 嵌入式开发--CAN总线与高速光耦6N137

    嵌入式开发 CAN总线与高速光耦6N137 6N137简介 CAN总线应用时 xff0c 有时候需要加光耦隔离电路 xff0c 以免在雷击或遇到高压干扰时 xff0c 保护设备安全 常用的有光耦隔离和专用芯片隔离 本文介绍使用高速光耦6N1
  • 处理机调度

    调度算法 第一类就绪队列怎么排 第二类是每一次执行时间的长短的控制 第三类关于多种算法如何综合到一起 先来先服务算法 按着到就绪队列里的先后顺序来排队的在找就绪进程的时候也是按照这个先后顺序来 按先来后到没有考虑到进程的特征 缺点 xff1
  • 死锁产生和预防

    死锁的产生 1 资源是互斥的 资源在同一时刻只有一个进程才能够使用和访问 2 持有并等待 一个进程持有一份资源阻塞等待其它进程释放资源 3 资源不可抢占 只有一个进程使用完资源之后其它进程才能够占有使用 4 循环等待 在等待资源的进程集合中
  • 第一次实验报告:使用Packet Tracer分析HTTP数据包

    姓名 xff1a 刘钰 学号 xff1a 201821121036 班级 xff1a 计算1812 1 实验目的 熟练使用Packet Tracer工具 分析抓到的HTTP数据包 xff0c 深入理解 xff1a HTTP协议 xff0c
  • 超详细|一篇搞定操作系统——用户接口

    文章目录 6 1 用户接口6 2 其他特殊操作系统6 2 1 嵌入式操作系统6 2 2 分布式操作系统 操作系统全家桶 xff1a 传送门 一 操作系统引述 xff1a https blog csdn net diviner s artic
  • mac搭建嵌入式编程环境--交叉编译工具链crosstool-ng

    1 第一个思路就是和ubuntu一样 xff0c 是否有apt get一样的管理软件包工具 查了一下有类似的macport和homebrew macport下载方法 xff1a https guide macports org instal
  • 用matlab处理px4日志的转换方法

    px4 v1 8 2的版本可以选择用sdlog2模块记录日志 xff0c 通过QGC地面站下载的日志格式为 ulg xff0c 将下载成功的 ulg扩展名改为 bin xff0c 然后用MP地面站 数据闪存日志 创建matlab文件 xff
  • 关于VTOL垂直起降模式的参数很详细的介绍

    转载 xff1a 基于Ardupilot PX4固件 xff0c APM PIXhawk硬件的VTOL垂直起降固定翼软硬件参数调试 xff08 第二篇 xff09 https blog csdn net u011322358 article
  • PX4二次开发中查无资料的踩坑总结

    写在前 xff1a 2021年9月下旬开始摸索px4飞控的二次开发 xff0c 从C 43 43 零基础到第一个修改算法后的版本稳定运行 xff0c 大概用了2个月 xff0c 从12月初改用新版本px4源码到现在又过去了约1个月 xff0
  • 程序员你为什么迷茫?

    你曾经充满热情 xff0c 是一位开源软件倡导者 xff0c 你崇尚全栈工程师才有未来的理念 xff0c 你渴望改变世界 但是现在你每天都处于焦虑之中 xff0c 你每天不断地学习各种技术Kotlin Swift React Native
  • 计算机网络保研面试题

    1 TCP和UDP的异同点 相同点 xff1a 都是运输层协议 不同点 xff1a 1 TCP xff1a 面向连接的 点对点的 面向字节流的 提供可靠交付的 全双工的 2 UDP 无连接的 支持一对一 amp 一对多 amp 多对多的通信
  • ERROR: Error while loading flash algo ELF file. No file specified

    Connecting to J Link J Link is connected ERROR Error while loading flash algo ELF file No file specified Failed to set d
  • ubuntu 火狐浏览器不能下载插件问题

    1 在地址栏输入 about config 2 搜索 security OCSP enabled 61 0 3 把结果改为0即可 转载于 https www cnblogs com JohannaFeng p 4720319 html
  • 基于51单片机的智能恒压水塔水箱供水系统设计(毕设课设)

    通过控制变频器的输出频率从而自动调节水泵电机的转速 xff0c 实现管网水压的闭环调节 PID xff0c 使供水系统自动恒稳于设定的压力值 即用水量增加时 xff0c 频率升高 xff0c 水泵转速加快 xff0c 供水量相应增大 xff
  • 算法优化的一般方法——以ARM平台为例

    目录 一 为什么要进行算法优化 xff1f 二 算法优化方法 一 为什么要进行算法优化 xff1f 算法在部署到硬件平台时 xff0c 对于性能的要求非常高 xff0c 如果不进行一定程度的优化 xff0c 算法耗时一般来讲都难以满足要求
  • 小米开源:站在巨人肩膀上的创新

    2014 07 22 18 08 小米 开源 企业开源 7月22日消息 xff0c 小米4 手机今天发布 xff0c 又一次掀起了业界关于 小米现象 的讨论热潮 借着这股东风 xff0c 我们来了解一下 开源 文化在这个炙手可热的科技公司中
  • arduino怎么导入第三方库和官方库

    一 导入第三方库文件 找到arduino安装程序选的安装位置 例如如果是下面的位置的话 那就在D software Arduino下找到libraries 然后再把下载的第三方库文件移动到里面 比如我下载了一个I2Cdev的三方库 I2Cd
  • 低成本ESP32-CAM,YOLO核心代码识别,录像保存,项目中问题分享以及解决。

    ESPCAM监控的具体细节 Arduino编写 xff0c FreeRTOS系统 以便后面添加其他功能 xff0c 图片以UDP发送 xff0c 数据处理基本在服务端 xff0c TCL连接给ESP32人或物的位置 xff0c 两个舵机控制
  • 监控物联网项目:web、flv视频流 、websocket、ESP32

    在网上接了第一个项目 xff0c 在此记录 目录 项目需求 前端浏览 两个后端 python后端 nginx flv 43 ffmpeg后端 总结 项目需求 手机浏览器 xff0c 远程查看实时监控视频 按钮控制电机 获取环境温度 难点 x