我正在尝试镀铬金丝雀19的新功能和令人兴奋的功能.
我基本上可以从网络摄像头抓取视频并将其设置为视频标签的源元素.
<!DOCTYPE html>
<html>
<head>
<title>Camera capture</title>
<script>
var localStream;
var localStreamObjUrl;
window.onload = function() {
navigator.webkitGetUserMedia("audio, video", gotStream);
}
function gotStream(stream) {
localStream = stream;
localStreamObjUrl = webkitURL.createObjectURL(localStream);
var video = document.getElementById("selfView");
video.src = localStreamObjUrl;
}
</script>
</head>
<body>
<video id="selfView" autoplay audio=muted></video>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
从https://apprtc.appspot.com上的示例中,我们可以获取视频并将其流式传输给对等...
我的问题是,我可以避免进行所有遍历以获得p2p连接并直接将视频上传到服务器?我希望能够转发视频流而不是发送它p2p.
我试图从opencv(Python)中的URL读取视频,然后逐帧处理它,然后将其发送到HTML页面.
这是我的主文件(main.py)
from flask import Flask, render_template, Response
from camera import VideoCamera
import pdb
app = Flask(__name__)
@app.route('/')
def index():
return render_template('index.html')
def gen(camera):
while True:
frame = camera.get_frame()
yield (b'--frame\r\n'
b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n\r\n')
@app.route('/video_feed')
def video_feed():
return Response(gen(VideoCamera()),
mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(host='127.0.0.1', debug=True)
Run Code Online (Sandbox Code Playgroud)
这是camera.py文件:
import cv2
import urllib
import pdb
import numpy as np
face_cascade = cv2.CascadeClassifier('haarcascade_frontalface_default.xml')
#https://github.com/Itseez/opencv/blob/master/data/haarcascades/haarcascade_eye.xml
eye_cascade = cv2.CascadeClassifier('haarcascade_eye.xml')
class VideoCamera(object):
def __init__(self):
# Using OpenCV …Run Code Online (Sandbox Code Playgroud)