from flask import render_template, Flask, send_from_directory, Response import cv2 app = Flask(__name__) @app.after_request def add_header(response): response.headers['X-UA-Compatible'] = 'IE=Edge,chrome=1' response.headers['Cache-Control'] = 'no-cache, no-store, must-revalidate' response.headers['Pragma'] = 'no-cache' response.headers['Expires'] = '0' return response def find_camera(id): ''' cameras = ['rtsp://username:password@ip_address:554/user=username_password='password'_channel=channel_number_stream=0.sdp', 'rtsp://username:password@ip_address:554/user=username_password='password'_channel=channel_number_stream=0.sdp'] ''' cameras = ['rtsp://admin:@Unv123456@192.168.10.252:554/unicast/c1/s1/live'] return cameras[int(id)] # for cctv camera use rtsp://username:password@ip_address:554/user=username_password='password'_channel=channel_number_stream=0.sdp' instead of camera # for webcam use zero(0) def gen_frames(camera_id): cam = find_camera(camera_id) cap= cv2.VideoCapture(cam) while True: # for cap in caps: # # Capture frame-by-frame success, frame = cap.read() # read the camera frame if not success: break else: 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') # concat frame one by one and show result @app.route('/video_feed//', methods=["GET"]) def video_feed(id): """Video streaming route. Put this in the src attribute of an img tag.""" return Response(gen_frames(id), mimetype='multipart/x-mixed-replace; boundary=frame') @app.route('/') def index(): return render_template('index.html') @app.route('/video/') def stream(file_name): video_dir = './video' return send_from_directory(video_dir, file_name) if __name__ == '__main__': app.run(debug=True)