从摄像头获取图像,然后通过mjpeg stream方式显示。

# -*- coding: utf-8 -*-

#MJPEG Server for the webcam

import string,cgi,time

from os import curdir, sep

from BaseHTTPServer import BaseHTTPRequestHandler, HTTPServer

from SocketServer import ThreadingMixIn

import cv2.cv as cv

import re

import sys

import imutils

import socket

capture = cv.CaptureFromCAM(0)

img1 = cv.QueryFrame(capture)

if img1 == None :

print "No WebCam Found!"

sys.exit()

if len(sys.argv) < 2 :

print "Usage : webcamserver "

cameraQuality = 100

port = 8080

else:

cameraQuality = sys.argv[1]

port = int(sys.argv[2])

class MyHandler(BaseHTTPRequestHandler):

def do_GET(self):

global cameraQuality

try:

self.path=re.sub('[^.a-zA-Z0-9]', "",str(self.path))

if self.path=="" or self.path==None or self.path[:1]==".":

return

if self.path.endswith(".html"):

f = open(curdir + sep + self.path)

self.send_response(200)

self.send_header('Content-type', 'text/html')

self.end_headers()

self.wfile.write(f.read())

f.close()

return

if self.path.endswith(".mjpeg"):

self.send_response(200)

self.wfile.write("Content-Type: multipart/x-mixed-replace; boundary=--aaboundary")

self.wfile.write("\r\n\r\n")

while 1:

img1 = cv.QueryFrame(capture)

cv2mat1 = cv.EncodeImage(".jpeg", img1, (cv.CV_IMWRITE_JPEG_QUALITY, cameraQuality))

JpegData1 = cv2mat1.tostring()

self.wfile.write("--aaboundary\r\n")

self.wfile.write("Content-Type: image/jpeg\r\n")

self.wfile.write("Content-length: "+str(len(JpegData1))+"\r\n\r\n" )

self.wfile.write(JpegData1)

self.wfile.write("\r\n\r\n\r\n")

time.sleep(0.02)

return

if self.path.endswith(".jpeg"):

f = open(curdir + sep + self.path)

self.send_response(200)

self.send_header('Content-type','image/jpeg')

self.end_headers()

self.wfile.write(f.read())

f.close()

return

return

except IOError:

self.send_error(404,'File Not Found: %s' % self.path)

def do_POST(self):

global rootnode, cameraQuality

try:

ctype, pdict = cgi.parse_header(self.headers.getheader('content-type'))

if ctype == 'multipart/form-data':

query=cgi.parse_multipart(self.rfile, pdict)

self.send_response(301)

self.end_headers()

upfilecontent = query.get('upfile')

print "filecontent", upfilecontent[0]

value=int(upfilecontent[0])

cameraQuality=max(2, min(99, value))

self.wfile.write("POST OK. Camera Set to
");

self.wfile.write(str(cameraQuality));

except :

pass

class ThreadedHTTPServer(ThreadingMixIn, HTTPServer):

#class ThreadedHTTPServer(HTTPServer):

"""Handle requests in a separate thread."""

myname = socket.getfqdn(socket.gethostname())

myaddr = socket.gethostbyname(myname)

def main():

while 1:

try:

server = ThreadedHTTPServer(('0.0.0.0', port), MyHandler)

print 'Starting httpServer...'

print 'See :'+ str(port) + '/1.mjpeg'

server.serve_forever()

except KeyboardInterrupt:

print '^C received, shutting down server'

server.socket.close()

if __name__ == '__main__':

main()

在浏览器中输入127.0.0.1:8080/1.mjpeg 访问

或用VLC播放器,输入http://:8080/1.mjpeg访问

说明:1.mjpeg可以换成任意字符.mjpeg,如aaa.mjpeg,都可以访问

python 视频流_Python实现mjpeg视频流相关推荐

  1. python画代码-Python教程_Python画Mandelbrot集 代码

    Python教程_Python画Mandelbrot集 代码 作者:Comet 来源: 课课家 www.kokojia.com点击数:278发布时间:2015-06-19 11:17:19 曼德勃罗集 ...

  2. 【Android FFMPEG 开发】FFMPEG 获取 AVStream 音视频流 ( AVFormatContext 结构体 | 获取音视频流信息 | 获取音视频流个数 | 获取音视频流 )

    文章目录 博客简介 . FFMPEG 音视频流 获取流程 I . FFMPEG 获取音视频流信息 ( AVFormatContext 结构体 ) II . FFMPEG 获取 音视频流 数量 III ...

  3. c语言实现爬虫功能,用C/C 扩展Python语言_python 调用c语言 python实现简单爬虫功能_python实现简单爬虫...

    用C/C 扩展Python语言 Python是一门功能强大的脚本语言,它的强大不仅表现在功能上,还表现在其扩展性上.她提供大量的API以方便程序员利用C/C++对Python进行扩展.因为执行速度慢几 ...

  4. python编程语言_python编程语言的简要历史

    python编程语言 The Python programming language is a general-purpose programming language that has carved ...

  5. 2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?

    2019最新Python学习教程(Python视频教程_Python学习教程_Python学习路线):你心目中编程界的MVP是谁?编程界的王者是渐落寞的Java还是大火的Python? 是不是你们也喜 ...

  6. python播放视频代码_python实现实时视频流播放代码实例

    这篇文章主要介绍了python实现实时视频流播放代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 @action(methods=['GET' ...

  7. python rtsp推流_python处理RSTP视频流过程解析

    python处理RSTP视频流过程解析 这篇文章主要介绍了python处理RSTP视频流过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 py ...

  8. python视频拼接两个视频流合成一个视频流

    import cv2 import numpy as np video = "http://admin:admin@192.168.137.124:8081"##选择摄像头 vid ...

  9. python读取海康摄像头视频流rtsp

    需要安装相应的opencv库:anaconda中执行:pip install opencv-python 代码: import cv2 url = 'rtsp://admin:我的密码@我的摄像头IP ...

最新文章

  1. Ubuntu14.04上安装TensorRT 2.1操作步骤
  2. 验证曲线( validation curve)是什么?如何绘制验证曲线( validation curve)?验证曲线( validation curve)详解及实践
  3. 数据库除关系运算符执行过程详解
  4. PHP无刷新上传面向过程写法iframe
  5. HH SaaS电商系统的商城模块设计
  6. noi题库(noi.openjudge.cn) 1.8编程基础之多维数组T21——T25
  7. 39 MM配置-采购-采购订单-STO配置-定义工厂的装运数据
  8. oracle复杂密码,如何配置 Oracle 11g 复杂密码校验设置
  9. openlayers3 根据经纬度 自动画框_自动驾驶定位为什么少不了惯性导航?
  10. 人工智能芯片的前世与今生
  11. Aho-Corasick暂存第二篇
  12. 安装office相关组件出现错误1310
  13. 计算机再带word打不开怎么办,Word文档打不开怎么办 Word打开出错的解决办法
  14. 《代码大全》读书笔记之一
  15. 1、Canopen 轻松入门
  16. 【IPC通信】key_t键和ftok函数
  17. ubuntu 安装方法 wubi
  18. 批处理、分时、实时各个操作系统特点
  19. 计算机辅助遥感制图的基本过程,项目八-遥感专题图的制作
  20. 用 AXIOM 促进 XML 处理

热门文章

  1. 电磁波传播相位是否会变化_民众纷纷转向网上购物,却又担心包裹信件是否会传播病毒?!...
  2. Java Annotation(注解)使用教程
  3. 基于JAVA+SpringMVC+Mybatis+MYSQL的课堂考勤系统
  4. 基于JAVA+SpringMVC+MYSQL的自动排课系统
  5. 基于Asp.net MVC的系统架构
  6. BZOJ3230 相似子串 【后缀数组】
  7. synchronized 详解,偏向锁,轻量锁,重量锁
  8. 个人技术博客--团队Git规范(参考西瓜学长)
  9. 1.4.2 solr字段类型--(1.4.2.4)使用Dates(日期)
  10. JavaScript面向对象:类、方法、属性