screenstreamer/screenstreamer/reciever.py

32 lines
866 B
Python
Raw Permalink Normal View History

2022-10-07 21:21:00 +02:00
import subprocess
2022-10-08 17:01:38 +02:00
from procmanager import ProcManager
2022-10-07 21:21:00 +02:00
class Reciever:
2022-10-07 22:54:27 +02:00
def __init__(self, protocol: str, target: str, disable_audio: bool) -> None:
2022-10-07 21:21:00 +02:00
self.protocol = protocol # should be 'tcp' or 'udp'
self.target = target
2022-10-07 22:54:27 +02:00
self.disable_audio = disable_audio
2022-10-08 17:01:38 +02:00
self.process_manager = ProcManager()
2022-10-07 21:34:14 +02:00
def __del__(self) -> None:
self.stop()
2022-10-07 21:21:00 +02:00
def start(self):
# currently there is no direct ffplay support in the ffmpeg package
2022-10-08 17:01:38 +02:00
args = ['ffplay', '-hide_banner', '-loglevel', 'error', '-fflags', 'nobuffer', '-flags', 'low_delay', '-f', 'mpegts']
2022-10-07 22:54:27 +02:00
if self.disable_audio:
args.append('-an')
# the address
args.append(self.protocol+ '://' + self.target + '?listen')
2022-10-08 17:01:38 +02:00
proc = subprocess.Popen(args, encoding='utf-8', shell=False, text=True, stderr=subprocess.PIPE)
self.process_manager.start(proc)
2022-10-07 21:21:00 +02:00
2022-10-07 21:34:14 +02:00
def stop(self):
2022-10-08 17:01:38 +02:00
self.process_manager.stop()
2022-10-07 21:34:14 +02:00