当前位置: 首页 > news >正文

超赞,用python实现流媒体服务器功能,寥寥几句搞定。

步骤:

要使用Python将实时摄像机传送流写入H5页面,可以使用以下步骤。

1、安装必要的软件包。您需要安装OpenCV和Flask以及gunicorn 与 gevent 。您可以通过在终端中运行以下命令来执行此操作。

pip install opencv-python
pip install Flask
pip install gunicorn 
pip install gevent 

2、创建Python文件。在工作目录中创建一个名为“app.py”的新Python文件。

3、导入必要的包。将以下行添加到“app.py”文件的顶部。

4、初始化Flask。将以下代码行添加到“app.py”文件中以初始化Flask

6、创建相机捕获对象。将以下代码行添加到“app.py”文件中,以创建相机捕捉对象。

7、创建HTML文件。在工作目录中创建一个名为“index.HTML”的新HTML文件。

8、添加HTML代码。将以下代码行添加到“index.HTML”文件中。

9、创建视频源路由。将以下代码行添加到“app.py”文件以创建视频源路径。

10、运行应用程序。在“app.py”文件底部添加以下代码行以运行应用程序。

服务端代码:

import cv2
from flask import Flask, render_template, Response
from gevent import pywsgiapp = Flask(__name__)@app.route('/')
def index():return render_template('index1.html')cap = cv2.VideoCapture(0)def gen_frames():while True:success, frame = cap.read()if not success:breakelse:ret, buffer = cv2.imencode('.jpg', frame)frame = buffer.tobytes()yield (b'--frame\r\n'b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')@app.route('/video_feed')
def video_feed():return Response(gen_frames(), mimetype='multipart/x-mixed-replace; boundary=frame')if __name__ == '__main__':server = pywsgi.WSGIServer(('192.168.1.10', 5000), app)server.serve_forever() # server = make_server('192.168.1.10', 5000, app)# server.serve_forever()app.run()

网页端代码:py同级文件夹下创建templates文件夹,按如下内容创建网页,命名为index1.html

<!doctype html>
<html><head><title>Live Camera Stream</title></head><body><h1>Live Camera Stream</h1><img src="{{ url_for('video_feed') }}"></body>
</html>

效果如下所示:

1

相关文章:

超赞,用python实现流媒体服务器功能,寥寥几句搞定。

步骤&#xff1a; 要使用Python将实时摄像机传送流写入H5页面&#xff0c;可以使用以下步骤。 1、安装必要的软件包。您需要安装OpenCV和Flask以及gunicorn 与 gevent 。您可以通过在终端中运行以下命令来执行此操作。 pip install opencv-python pip install Flask pip ins…...

冥想第七百二十一天

1.3.3周五&#xff0c;又是周五了。今天又运动了5公里&#xff0c;很舒服轻松。 2.还是往常的生活&#xff0c;休息的也很好&#xff0c;开春后跑的一直很好。 3.早上30分钟健康操。中午转了圈&#xff0c; 给大哥说下周去上海。 4.感谢父母&#xff0c;感谢朋友&#xff0c;感…...

06-Oracle表空间与用户管理

本讲主要内容&#xff1a; 1.表空间管理&#xff1a;表空间的作用&#xff0c;创建&#xff0c;修改&#xff0c;删除及管理&#xff1b; 2.用户管理&#xff1a;创建用户&#xff0c;修改用户&#xff0c;删除用户&#xff0c;修改密码&#xff0c;解锁&#xff1b; 3.用户…...

Mysql 索引特点

承接上文Mysql Server原理简介聚簇索引、二级索引、联合索引分别具备什么样的特点&#xff1f;聚簇索引数据跟索引放在一起的叫聚簇索引&#xff1b;数据和索引分开存储的叫非聚簇索引&#xff1b;innodb存储引擎&#xff0c;数据和文件都放在ibd文件中&#xff0c;实际的数据是…...

读书笔记-终身学习

前言人需要终身成长&#xff0c;也需要终身学习&#xff0c;以下是记录个人读书学习的笔记总结&#xff0c;希望能给大家一点借鉴&#xff0c;仅供参考。笔记1、《匠人精神》秋山利辉是日本神奈川县横滨市都筑区“秋山木工”的经营者&#xff0c;从事订制家具制作业务。是一家小…...

了解栈Stack一篇文章就够了

什么是栈栈是一种特殊的线性表&#xff0c;只允许一端进行数据的插入和删除&#xff0c;即先进后出原则。类似于弹夹先装进去的子弹后面出&#xff0c;后放入的子弹先出。栈的底层原理栈是一种线性结构&#xff0c;所以既能使用数组实现&#xff0c;也能使用链表实现&#xff0…...

CNStack 助推龙源电力扛起“双碳”大旗

作者&#xff1a;CNStack 容器平台、龙源电力&#xff1a;张悦超 、党旗 龙源电力容器云项目背景 龙源电力集团是世界第一大风电运营商&#xff0c; 随着国家西部大开发战略推进&#xff0c;龙源电力已经把风力发电场铺设到全国各地&#xff0c;甚至是交通极不便利的偏远地区&…...

ruoyi-vue-plus1(控制台相关的输出日志)(p6spy插件)(jackson全局配置)(StopWatch)

Jackson配置在启动项目时&#xff0c;我们发现日志打印出这样几行字&#xff0c;初始化了jacdson配置&#xff0c;我们去查看一下来源找。我们找到了一个全局序列化配置类&#xff0c;其中重写了BigNumberSerializer.INSTANCE进去查看发现了这里对于部分范围的数字进行了转为为…...

【Mybatis】| 如何创建MyBatis的工具类

目录&#x1f31f;更多专栏请点击&#x1f447;一、前言二、实现过程1. 创建一个ThreadLocal对象2. 初始化SqlSessionFactory3. 获取并存储sqlSession对象4. 关闭sqlSession对象三、 总代码&#x1f31f;更多专栏请点击&#x1f447; 专栏名字&#x1f525;Elasticsearch专栏e…...

【Java】DT怎么写?

几个重要的注解 怎么用mockito写单元测试&#xff1f; package Biz;import Client.FileIOClient; import Req.FileRequest; import Res.FileResponse; import org.junit.Assert; import org.junit.Test; import org.junit.runner.RunWith; import org.mockito.InjectMocks;…...

xcode14安装swift package设置github账户token

这里写目录标题登录github账户,复制token打开xcode添加github账户选择swift package登录github账户,复制token 登录github点击上面菜单自己的头像,settings->Developer settings->Personal access tokens->Tokens (classic)->Generate new token (classic) Note名…...

css面试题1

一、css 1. 说一下css的盒模型 在HTML中所有元素都可以看成是一个盒子 盒子的组成&#xff1a; 内容content、内边距padding、边框border、外边距margin 盒模型的类型&#xff1a; 标准盒模型 margin border padding content IE盒模型 margin content(border padding) 控制…...

Hive基础

hive基本语法&#xff1a;查看数据库&#xff1a;hive (default)> show databases; -----查看所有数据库hive (default)> desc database test; ----查看数据库结构hive (default)> select current_database(); ---查看当前数据库创建数据库&#xff1a;hive (default)…...

信息收集-

url&#xff1a; https://en.wikipedia.org:443/wiki/hypertext_Transfer_Protocol?id123#HTTP/1.1_response_messages https&#xff1a;协议 en.wikipedia.org&#xff1a;域名 443&#xff1a;端口 wiki/hypertext_Transfer_Protocol&#xff1a;文件路径 id123&…...

【sdx12】sdx12获取Serial Number操作方法及源码分享Serial Number的寄存器地址

通过串口获取 系统启动时,在boot阶段会打印如下信息 Format: Log Type - Time(microsec) - Message - Optional Info Log Type: B - Since Boot(Power On Reset), D - Delta, S - Statistic S - QC_IMAGE_VERSION_STRING=BOOT.XXXX S - IMAGE_VARIANT_STRING=MAATANAZA S - …...

23种设计模式-工厂模式(安卓应用场景介绍)

工厂模式是一种创建型设计模式&#xff0c;它提供了一种创建对象的方式&#xff0c;而无需将具体的对象创建逻辑暴露给客户端。在Java中&#xff0c;工厂模式常常用于创建复杂对象或对象的构造过程涉及到多个步骤的情况。 在Android开发中&#xff0c;工厂模式也经常被使用&am…...

sheng的学习笔记-服务熔断与降级组件Hystrix

在微服务架构中&#xff0c;一个应用往往由多个服务组成&#xff0c;这些服务之间相互依赖&#xff0c;依赖关系错综复杂。例如一个微服务系统中存在 A、B、C、D、E、F 等多个服务&#xff0c;它们的依赖关系如下图。图1&#xff1a;服务依赖关系通常情况下&#xff0c;一个用户…...

简单给WordPress怎么添加自定义字段面板

今天一淘模板(56admin.com)WordPress怎么添加自定义字段面板&#xff1f;下面本篇文章给大家介绍一下WordPress添加自定义字段面板的方法&#xff0c;希望对大家有所帮助&#xff01; 我们在WordPress中编写文章的时候&#xff0c;经常会用到一些自定义字段&#xff0c;如网页描…...

大数据框架之Hive:第6章 查询

第6章 查询 6.1 基础语法 1&#xff09;官网地址 https://cwiki.apache.org/confluence/display/Hive/LanguageManualSelect 2&#xff09;查询语句语法&#xff1a; SELECT [ALL | DISTINCT] select_expr, select_expr, ...FROM table_reference -- 从什么表查[WHE…...

CentOS 8搭建EMQX集群

概览 EMQX (opens new window)是一款大规模可弹性伸缩的云原生分布式物联网 MQTT (opens new window)消息服务器。 EMQ X 设计目标是实现高可靠&#xff0c;并支持承载海量物联网终端的MQTT连接&#xff0c;支持在海量物联网设备间低延时消息路由: 1. 稳定承载大规模的 MQTT 客…...

基于神经网络的自监督学习方法音频分离器(Matlab代码实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f468;‍&#x1f4bb;4 Matlab代码 &#x1f4a5;1 概述 神经网络的输入是混合&#xff08;男性女性&#xff09;音频的振幅谱。神经网络的输出目标是男性说话者理想的软掩模。损失函数…...

yocto 如何添加python module

yocto 如何添加python module 最近在使用阿里云的图像识别SDK&#xff0c;在ubuntu主机上使用pip install alibabacloud_imagerecog20190930 安装modules以后就可以运行demo程序了&#xff0c;于是打算将SDK移植到嵌入式板子上面&#xff0c;然后在板子上跑一下demo。但是发现…...

[深入理解SSD系列综述 2.1.2] SLC、MLC、TLC、QLC、PLC NAND_固态硬盘闪存颗粒类型

闪存最小物理单位是 Cell, 一个Cell 是一个晶体管。 闪存是通过晶体管储存电子来表示信息的。在晶体管上加入了浮动栅贮存电子。数据是0或1取决于在硅底板上形成的浮动栅中是否有电子。有电子为0,无电子为1. SSD 根据闪存颗粒区分,固态硬盘有SLC、MLC、TLC、QLC、PLC 五种类型…...

Matlab实现FFT变换

Matlab实现FFT变换 文章目录Matlab实现FFT变换原理实现手算验证简单fft变换和频谱求取功率谱结论在信号处理中&#xff0c;快速傅里叶变换&#xff08;FFT&#xff09;是一种非常常见的频域分析方法。本文将介绍如何使用Matlab实现FFT变换&#xff0c;并通过Matlab代码演示实际…...

JVM调优面试题——垃圾回收专题

文章目录1、如何确定一个对象是垃圾&#xff1f;1.1、引用计数法1.2、可达性分析2、对象被判定为不可达对象之后就“死”了吗&#xff1f;3、都有哪些垃圾收集算法&#xff1f;3.1、 标记-清除(Mark-Sweep)3.2、标记-复制(Mark-Copying)3.3、标记-整理(Mark-Compact)3.4、分代收…...

java启动命令中-D和--的区别

目录一、java -D 添加参数二、java -- 添加参数在 SpringBoot 项目中&#xff0c;启动时&#xff0c;通过 -D 或 -- 添加参数&#xff0c;都可以直接覆盖 yml 或 properties 配置文件中的同名配置&#xff0c;如果不存在则相当于添加了一个配置。 一、java -D 添加参数 java -D…...

QML Popup详解

1.简介 弹出式用户界面控件&#xff0c;它可以与Window或ApplicationWindow一起使用&#xff0c;默认不可见。 常用属性介绍&#xff0c;一些公用的基础属性就不作介绍&#xff0c;可以查看我前面写的文章。 closePolicy : enumeration &#xff1a;此属性决定弹出窗口关闭的…...

[2.1.6]进程管理——线程的实现方式和多线程模型

文章目录第二章 进程管理线程的实现方式和多线程模型一、线程的实现方式&#xff08;一&#xff09;用户级线程&#xff08;二&#xff09;内核级线程二、多线程模型&#xff08;一&#xff09;一对一模型&#xff08;二&#xff09;多对一模型&#xff08;三&#xff09;多对多…...

小白做什么兼职项目赚钱?宝妈拍短视频赚钱的方法

很多宝妈在家带孩子之余想做兼职赚点小钱&#xff0c;依靠互联网无疑是比较方便的途径&#xff0c;在刷单、微商等网上兼职成为过去式以后&#xff0c;很多宝妈选择了短视频创业。 宝妈怎么拍短视频&#xff1f; 宝妈因为要照顾宝宝还要兼顾家务&#xff0c;空闲的时间比较琐碎…...

第十四届蓝桥杯第三期模拟赛 C/C++ B组 原题与详解

文章目录 一、填空题 1、1 找最小全字母十六进制数 1、1、1 题目描述 1、1、2 题解关键思路与解答 1、2 给列命名 1、2、1 题目描述 1、2、2 题解关键思路与解答 1、3 日期相等 1、3、1 题目描述 1、3、2 题解关键思路与解答 1、4 乘积方案数 1、4、1 题目描述 1、4、2 题解关…...