Closed. This question needs to be more focused。它当前不接受答案。
想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。
2年前关闭。
Improve this question
我正在使用一个简单的opencv代码从系统读取视频文件。
现在我想串流播放这部影片进到一个HTTP服务器,以便它可以通过使用给定的URL多个用户访问。
我遇到了Flask,但它一次仅支持一个用户。
通过各种博客去后,我才知道,ffserver的和FFMPEG可能解决problem.Now我停留在如何将帧发送到ffserver的。
我运行以下命令。
但是我没有发送任何东西给FFSERVER。
我正在使用this blog post中的代码
camera.py
想改善这个问题吗?更新问题,使其仅关注editing this post的一个问题。
2年前关闭。
Improve this question
我正在使用一个简单的opencv代码从系统读取视频文件。
import cv2
cap = cv2.VideoCapture("1.mp4")
while True:
res,frame = cap.imread()
cv2.imshow("frame",frame)
cv2.waitKey(1)
现在我想串流播放这部影片进到一个HTTP服务器,以便它可以通过使用给定的URL多个用户访问。
我遇到了Flask,但它一次仅支持一个用户。
通过各种博客去后,我才知道,ffserver的和FFMPEG可能解决problem.Now我停留在如何将帧发送到ffserver的。
我运行以下命令。
ffmpeg -i sintel.mp4 http://localhost:8090/feed1.ffm
但是我没有发送任何东西给FFSERVER。
我正在使用this blog post中的代码
最佳答案
瓶通常在单线程模式下运行,并且只能同时处理这意味着任何并行请求应该等待,直到它们可以处理一个请求。
为了解决此问题,您只需要在脚本中放入threaded=True
,这将导致您的应用程序在不同的线程上处理每个请求。
我在这里附加了以下两个应做的示例Python脚本:
main.py
# main.py
from flask import Flask, render_template, Response
from camera import VideoCamera
app = Flask("AppName")
@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 ="0.0.0.0", port=33, threaded=True)
camera.py
# camera.py
import numpy as np
import cv2
import time
class VideoCamera(object):
def __init__(self):
self.video = cv2.VideoCapture("yourVideo.mp4")
def __del__(self):
self.video.release()
def get_frame(self):
success, image = self.video.read()
# Image readed by OpenCV is RAW
# we encode it to JPEG in order to use Motion JPEG for VideoStream after
ret, jpeg = cv2.imencode('.jpg', image)
return jpeg.tobytes()
10-04 20:17