При попытке сделать снимок экрана и передать его в потоковую передачу в flask не обнаружено видео поддерживаемого форматPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 При попытке сделать снимок экрана и передать его в потоковую передачу в flask не обнаружено видео поддерживаемого формат

Сообщение Anonymous »

Я пытаюсь записать видео своего крика и передать его на сервер Flask, но он возвращает **"Видео поддерживаемого формата и типа MIME не найдено"

**

У меня есть два файла:
1- App.py -> для захвата потока

2- Index.html -> для потоковой передачи видео
Код: App.py

Код: Выделить всё

import threading
import queue
import time
import mss
import cv2
from flask import Flask, render_template, Response
from flask_socketio import SocketIO, emit
import secrets
import numpy as np
import base64

app = Flask(__name__)
app.config['SECRET_KEY'] = secrets.token_urlsafe(32)  # For SocketIO
socketio = SocketIO(app)

frame_queue = queue.Queue()
capture_interval = 0.1  # Adjust capture interval as needed
terminate_threads = False

def generate_frames():
with mss.mss() as sct:
monitor = {"top": 40, "left": 0, "width": 800, "height": 600}  # Adjust
codec = cv2.VideoWriter_fourcc(*'mp4v')  # QSV codec
out = cv2.VideoWriter('output.mp4', codec, 25, (640, 480))

while not terminate_threads:
start_time = time.time()

frame = sct.grab(monitor)
img = cv2.cvtColor(np.frombuffer(frame.rgb, dtype=np.uint8), cv2.COLOR_BGR2RGB)
img = cv2.resize(img, (640, 480))  # Adjust resolution
out.write(img)  # Write to output using QSV

ret, buffer = cv2.imencode('.jpg', img, [int(cv2.IMWRITE_JPEG_QUALITY), 80])  # Adjust quality
frame_queue.put(buffer.tobytes())

elapsed_time = time.time() - start_time
if elapsed_time < capture_interval:
time.sleep(capture_interval - elapsed_time)

out.release()  # Release video writer

def stream_frames():
while not terminate_threads:
frame = frame_queue.get()
encoded_frame = base64.b64encode(frame).decode('utf-8')
socketio.emit('frame', {'frame': encoded_frame})

@app.route('/')
def index():
return render_template('index.html')

if __name__ == '__main__':
capture_thread = threading.Thread(target=generate_frames)
stream_thread = threading.Thread(target=stream_frames)

capture_thread.start()
stream_thread.start()

try:
socketio.run(app, debug=True)
finally:
terminate_threads = True
capture_thread.join()
stream_thread.join()
index.html:

Код: Выделить всё



Real-Time Screen Stream


Real-Time Screen Stream



var socket = io();
var video = document.getElementById('video');

socket.on('frame', function(data) {
var binaryFrame = atob(data.frame);
var arrayBuffer = new ArrayBuffer(binaryFrame.length);
var uint8Array = new Uint8Array(arrayBuffer);

for (var i = 0; i < binaryFrame.length; i++) {
uint8Array[i] = binaryFrame.charCodeAt(i);
}

var blob = new Blob([uint8Array], { type: 'video/mp4' });
video.src = URL.createObjectURL(blob);
});



Я пытался изменить кодекс, кодировку и декодирование, но все равно застрял

Подробнее здесь: https://stackoverflow.com/questions/778 ... ure-my-scr
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»