Как заставить окно отдельного приложения python screen sharing отображаться на веб-сервере django?

Я довольно новичок в python и django, и я пытаюсь поделиться видео рабочего стола виртуальной машины windows для показа на веб-сервере linux django. Когда я запускаю скрипты python, совместное использование экрана будет отображаться как отдельное окно приложения.

Как сделать так, чтобы отдельное окно python отображалось на веб-сервере django?

receiver.py (работает на машине linux)

from vidstream import StreamingServer
import threading

receiver = StreamingServer('ipaddr', 8080)

t = threading.Thread(target=receiver.start_server)
t.start()

while input("") != 'STOP':
    continue

receiver.stop_server()

sender.py (работает на виртуальной машине windows)

from vidstream import ScreenShareClient
import threading

sender = ScreenShareClient('ipaddr', 8080)

t = threading.Thread(target=sender.start_stream)
t.start()

while input("") != 'STOP':
    continue

sender.stop_stream()

urls.py

from django.urls import path
from . import views 

# URL configuration
urlpatterns = [
    path('index/', views.getIndex), 
    path('', views.button),
    path('receiver/', views.receiver),
]

views.py

from django.shortcuts import render

import requests
import sys
from subprocess import run,PIPE

from django.http import HttpResponse, StreamingHttpResponse

def button(request):
    return render(request, 'receiver.html')

def receiver(request):
    inp=request.POST.get()
    out=run([sys.executable, "//home//cts//ctdjango//receiver.py"],shell=False,stdout=PIPE)
    print(out)
    return render(request, 'receiver.html', {'data':out.stdout})

receiver.html

<html>
<head>
    <title>Cybertest Receiver</title>
</head>
<body>
    <form action="/djangosite/templates/receiver.html" method="POST">
        {% csrf_token %}
        {% if data %}
        <p>Output data: {{ data }}</p> 
        {% else %}
        <p>No data output</p>
        {% endif %}
        <br><br>
        <button type=“submit“>Run script</button>
    </form>
</body>
</html>

Я думаю, что подход не верен: чтобы иметь возможность воспроизводить видео в браузере, необходимо предоставить соответствующий формат потоковой передачи, поддерживаемый браузером.

Я предлагаю формат m3u8, с этим форматом вы также сможете посмотреть его с помощью таких программ, как программное обеспечение, такое как VLC Media Player.

Предлагаемый подход:

Вашему веб-серверу просто необходимо обслуживать файлы двух типов:

  • индексный файл (.m3u8)
  • куски видео (называемые сегментными файлами), записанные с захвата экрана

Пример с использованием python и gstreamer можно найти здесь: Потоковое видео в браузере с помощью GStreamer

Это отправная точка, то, чего вы хотите достичь, достижимо, но вам нужно правильно соединить некоторые части, а это не тривиально.

Вернуться на верх