MediaMTX
MediaMTX 是一個開箱即用且零依賴的即時媒體伺服器和媒體代理,可讀取、發布、代理、記錄和播放視訊和音訊串流。它被設計為一個「媒體路由器」,可將媒體串流從一端路由到另一端。目前支援:
RTSP(Port 請參見服務的「網路」分頁)
RTMP(Port 請參見服務的「網路」分頁)
LL-HLS(綁定域名)
RTMP(Port 請參見服務的「網路」分頁)
LL-HLS(綁定域名)
將 MediaMTX 變成系統服務:
建立服務檔案:
sudo nano /etc/systemd/system/mediamtx.service
[Unit]
Description=MediaMTX Realtime Stream Server
After=network.target
[Service]
ExecStart=/home/pi/mediamtx/mediamtx
WorkingDirectory=/home/pi/mediamtx
Restart=always
User=pi
[Install]
WantedBy=multi-user.target
啟用並執行
執行以下指令讓設定生效:
sudo systemctl daemon-reload
sudo systemctl enable mediamtx
sudo systemctl start mediamtx
再利用由 FFmpeg 同時處理 stdin (影像) 和 alsa (聲音)
def start_stream():
global stream_process
if stream_process is not None:
return "already running"
# sudo fuser -k /dev/gpiochip0
# pkill -f search_bot.py
command = [
'ffmpeg',
'-f', 'v4l2',
'-i', '/dev/video0',
'-f', 'alsa',
'-i', 'default',
'-c:v', 'libx264',
'-af', 'volume=1.5',
'-preset', 'ultrafast',
'-tune', 'zerolatency',
'-c:a', 'libopus',
'-b:a', '128k',
'-ar', '48000',
'-f', 'rtsp',
'-rtsp_transport', 'tcp',
'rtsp://127.0.0.1:8554/cam'
]
#stream_process = subprocess.Popen(command)
stream_process = subprocess.Popen(
command,
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL
)
return "started"
利用VLC RTSP function
