I'll try to keep it quick. Using FFMPEG I started a stream on my PC. Here is the code:
import subprocess
def start_stream():
command = [
'ffmpeg',
'-f', 'gdigrab', # Desktop capture (Windows)
'-framerate', '15', # Low framerate for higher performance
'-i', 'desktop', # Capture desktop
'-c:v', 'libx264', # Video codec (H.264)
'-preset', 'ultrafast', # Ultra-fast encoding preset for minimal latency
'-tune', 'zerolatency', # Zero latency for real-time streaming
'-x264opts', 'keyint=15:min-keyint=15:no-scenecut', # Frequent keyframes
'-b:v', '500k', # Low bitrate to minimize data usage and reduce latency
'-s', '800x480', # Resolution fits phone screen and helps performance
'-max_delay', '0', # No buffering, instant frame output
'-flush_packets', '1', # Flush packets immediately after encoding
'-f', 'rtp', # Use mpegts as the container for RTP stream
'rtp://192.168.72.26:1234', # Stream over UDP to localhost on port 1234
'-sdp_file', 'stream.sdp' # Create SDP file
]
try:
print("Starting stream...")
subprocess.run(command, check=True)
except subprocess.CalledProcessError as e:
print(f"Error occurred: {e}")
except KeyboardInterrupt:
print("\nStream interrupted")
if __name__ == "__main__":
print("Starting screen capture...")
start_stream()
Now, when I start the stream I can connect to it in VLC when I open up the stream.sdp file. Using the same method I can open up the stream on my iPhone, but when I try to open it on my old Android phone the stream connects but the screen is black. However, when I turn the screen I can see the first frame that was sent to the phone. Why does the stream not work?
I will be thankful for any and all advice :)