Как отображать в браузере и изменять локально сохраненное видео без функций библиотеки OpenCV? - PullRequest
2 голосов
/ 07 мая 2020

У меня 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?

...