У меня Python код, позволяющий захват и изменение размера видеоконтента, хранящегося в локальном файле (есть источник, основанный на Flask):
import cv2
import time
from flask import render_template, Flask, send_from_directory, abort, json, \
Response
app = Flask(__name__)
@app.route("/")
def index():
"""Video streaming home page."""
return render_template('index.html')
def gen():
"""Video streaming generator function."""
while True:
cap = cv2.VideoCapture('/var/media/something.ts')
# Read until video is completed
while (cap.isOpened()):
# Capture frame-by-frame
ret, img = cap.read()
if ret == True:
img = cv2.resize(img, (0,0), fx=1.5, fy=1.5)
frame = cv2.imencode('.jpg', img)[1].tobytes()
yield (b'--frame\r\n'b'Content-Type: image/jpeg\r\n\r\n' + frame + b'\r\n')
time.sleep(0.1)
else:
break
@app.route('/video_feed')
def video_feed():
"""Video streaming route. Put this in the src attribute of an img tag."""
return Response(gen(),
mimetype='multipart/x-mixed-replace; boundary=frame')
if __name__ == '__main__':
app.run(host = "0.0.0.0", port = '5000')
Во время работы программы , видео проигрывается в браузере на 5000 порту, ну. Интересно, есть ли какой-либо альтернативный вариант для отображения контента таким же образом, но без каких-либо функций с поддержкой OpenCV, таких как VideoCapture
или resize
. Возможно ли это сделать? Какие модули и функции Python могут заменить инструкции, подобные тем, что используются в OpenCV?