/*错误内容示例*/ $ python -c "import picamera" Traceback (most recent call last):File "", line 1, in ImportError: No module named picamera $ python3 -c "import picamera" Traceback (most recent call last):File "", line 1, in ImportError: No module named 'picamera'
# Web streaming example # Source code from the official PiCamera package # http://picamera.readthedocs.io/en/latest/recipes2.html#web-streamingimport io import picamera import logging import socketserver from threading import Condition from http import server //从这里开始可以自定义设置自己的视频网页了 PAGE="""\
Raspberry Pi - Surveillance Camera
"""classStreamingOutput(object):def__init__(self):self.frame =Noneself.buffer= io.BytesIO()self.condition = Condition()defwrite(self, buf):if buf.startswith(b'\xff\xd8'):# New frame, copy the existing buffer's content and notify all# clients it's availableself.buffer.truncate()with self.condition:self.frame = self.buffer.getvalue()self.condition.notify_all()self.buffer.seek(0)return self.buffer.write(buf)classStreamingHandler(server.BaseHTTPRequestHandler):defdo_GET(self):if self.path =='/':self.send_response(301)self.send_header('Location','/index.html')self.end_headers()elif self.path =='/index.html':content = PAGE.encode('utf-8')self.send_response(200)self.send_header('Content-Type','text/html')self.send_header('Content-Length',len(content))self.end_headers()self.wfile.write(content)elif self.path =='/stream.mjpg':self.send_response(200)self.send_header('Age',0)self.send_header('Cache-Control','no-cache, private')self.send_header('Pragma','no-cache')self.send_header('Content-Type','multipart/x-mixed-replace; boundary=FRAME')self.end_headers()try:whileTrue:with output.condition:output.condition.wait()frame = output.frameself.wfile.write(b'--FRAME\r\n')self.send_header('Content-Type','image/jpeg')self.send_header('Content-Length',len(frame))self.end_headers()self.wfile.write(frame)self.wfile.write(b'\r\n')except Exception as e:logging.warning('Removed streaming client %s: %s',self.client_address,str(e))else:self.send_error(404)self.end_headers()classStreamingServer(socketserver.ThreadingMixIn, server.HTTPServer):allow_reuse_address =Truedaemon_threads =Truewith picamera.PiCamera(resolution='640x480', framerate=24)as camera:output = StreamingOutput()#Uncomment the next line to change your Pi's Camera rotation (in degrees)#camera.rotation = 90camera.start_recording(output,format='mjpeg')try:address =('',8000)//这里8000是端口号server = StreamingServer(address, StreamingHandler)server.serve_forever()finally:camera.stop_recording()