Как заставить окно отдельного приложения 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
Это отправная точка, то, чего вы хотите достичь, достижимо, но вам нужно правильно соединить некоторые части, а это не тривиально.