|
import cv2 |
|
import subprocess |
|
import threading |
|
import time |
|
|
|
def stream_mp4_as_rtsp(mp4_file, rtsp_port=8554): |
|
"""Stream MP4 file as RTSP in a loop""" |
|
rtsp_url = f"rtsp://localhost:{rtsp_port}/stream" |
|
|
|
|
|
cmd = [ |
|
'ffmpeg', |
|
'-re', |
|
'-stream_loop', '-1', |
|
'-i', mp4_file, |
|
'-c', 'copy', |
|
'-f', 'rtsp', |
|
rtsp_url |
|
] |
|
|
|
print(f"Starting RTSP server...") |
|
print(f"RTSP URL: {rtsp_url}") |
|
|
|
try: |
|
process = subprocess.Popen(cmd, stdout=subprocess.PIPE, stderr=subprocess.PIPE) |
|
return process, rtsp_url |
|
except Exception as e: |
|
print(f"Error starting RTSP server: {e}") |
|
return None, None |
|
|
|
if __name__ == "__main__": |
|
mp4_file = input("Enter MP4 file path: ") |
|
process, url = stream_mp4_as_rtsp(mp4_file) |
|
|
|
if process: |
|
print(f"RTSP stream running at: {url}") |
|
print("Press Ctrl+C to stop") |
|
try: |
|
process.wait() |
|
except KeyboardInterrupt: |
|
process.terminate() |
|
print("RTSP server stopped") |