initial commit
This commit is contained in:
commit
869a18fe9f
1
.gitignore
vendored
Normal file
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.ipaddr
|
20
bin/h264-retranslate
Executable file
20
bin/h264-retranslate
Executable file
@ -0,0 +1,20 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
LOCAL_IP="$(cat $(readlink -f $(dirname $(dirname $0)))/.ipaddr)"
|
||||||
|
|
||||||
|
/usr/bin/ffmpeg -v quiet -rtbufsize 100m -listen 1 \
|
||||||
|
-f flv -i "rtmp://${LOCAL_IP}:$1/live/mystream" \
|
||||||
|
-an -c:v copy -preset ultrafast -tune zerolatency \
|
||||||
|
-f rtsp "rtsp://${LOCAL_IP}/$1" &
|
||||||
|
|
||||||
|
while true; do
|
||||||
|
FAIL=0
|
||||||
|
|
||||||
|
/usr/bin/ffprobe -v quiet "rtsp://${LOCAL_IP}/$1" || FAIL=1
|
||||||
|
|
||||||
|
if [[ $FAIL -eq 0 ]]; then
|
||||||
|
/usr/bin/systemd-notify WATCHDOG=1
|
||||||
|
fi
|
||||||
|
|
||||||
|
sleep $(( $WATCHDOG_USEC / 2 / 1000000 ))
|
||||||
|
done
|
36
install.sh
Executable file
36
install.sh
Executable file
@ -0,0 +1,36 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
|
||||||
|
WORK_DIR="$(readlink -f $(dirname $0))"
|
||||||
|
CERT_DIR="/usr/local/share/mediamtx/certs"
|
||||||
|
|
||||||
|
echo Please input the local ip of this machine, where video services would be started && read LOCAL_IP
|
||||||
|
echo "${LOCAL_IP}" > "${WORK_DIR}/.ipaddr"
|
||||||
|
|
||||||
|
mkdir -p /var/lib/mediamtx
|
||||||
|
mkdir -p "${CERT_DIR}"
|
||||||
|
|
||||||
|
ln -s "$WORK_DIR/mediamtx.yml" /etc
|
||||||
|
ln -s "$WORK_DIR/bin/h264-retranslate" /usr/local/bin
|
||||||
|
ln -s "$WORK_DIR/system/h264-node@.service" /etc/systemd/system
|
||||||
|
ln -s "$WORK_DIR/system/mediamtx.service" /etc/systemd/system
|
||||||
|
|
||||||
|
openssl req -x509 -nodes -days 3650 \
|
||||||
|
-newkey rsa:2048 \
|
||||||
|
-keyout "${CERT_DIR}/mediamtx.key" \
|
||||||
|
-out "${CERT_DIR}/mediamtx.crt" \
|
||||||
|
-subj "/C=RU/ST=0/L=0/O=0/OU=0/CN=0"
|
||||||
|
|
||||||
|
systemctl enable mediamtx.service
|
||||||
|
systemctl start mediamtx.service
|
||||||
|
|
||||||
|
#systemctl enable h264-node@1000
|
||||||
|
#systemctl enable h264-node@1001
|
||||||
|
#systemctl enable h264-node@1002
|
||||||
|
#systemctl enable h264-node@1003
|
||||||
|
#systemctl enable h264-node@1004
|
||||||
|
|
||||||
|
#systemctl start h264-node@1000
|
||||||
|
#systemctl start h264-node@1001
|
||||||
|
#systemctl start h264-node@1002
|
||||||
|
#systemctl start h264-node@1003
|
||||||
|
#systemctl start h264-node@1004
|
108
mediamtx.yml
Normal file
108
mediamtx.yml
Normal file
@ -0,0 +1,108 @@
|
|||||||
|
logLevel: warn
|
||||||
|
logDestinations: [stdout]
|
||||||
|
|
||||||
|
readTimeout: 10s
|
||||||
|
writeTimeout: 10s
|
||||||
|
writeQueueSize: 512
|
||||||
|
udpMaxPayloadSize: 1472
|
||||||
|
externalAuthenticationURL:
|
||||||
|
|
||||||
|
authMethods: [basic]
|
||||||
|
authHTTPExclude:
|
||||||
|
- action: api
|
||||||
|
- action: metrics
|
||||||
|
- action: pprof
|
||||||
|
|
||||||
|
playback: no
|
||||||
|
api: yes
|
||||||
|
metrics: yes
|
||||||
|
pprof: no
|
||||||
|
|
||||||
|
playbackAddress: 0.0.0.0:9996
|
||||||
|
apiAddress: 0.0.0.0:9997
|
||||||
|
metricsAddress: 0.0.0.0:9998
|
||||||
|
pprofAddress: 0.0.0.0:9999
|
||||||
|
|
||||||
|
runOnConnect:
|
||||||
|
runOnConnectRestart: no
|
||||||
|
runOnDisconnect:
|
||||||
|
|
||||||
|
rtsp: yes
|
||||||
|
protocols: [udp, multicast, tcp]
|
||||||
|
encryption: "no"
|
||||||
|
|
||||||
|
rtspAddress: 0.0.0.0:554
|
||||||
|
rtspsAddress: 0.0.0.0:322
|
||||||
|
|
||||||
|
rtpAddress: 0.0.0.0:8000
|
||||||
|
rtcpAddress: 0.0.0.0:8001
|
||||||
|
|
||||||
|
multicastIPRange: 224.0.0.0/16
|
||||||
|
multicastRTPPort: 8002
|
||||||
|
multicastRTCPPort: 8003
|
||||||
|
|
||||||
|
serverKey: /usr/local/share/mediamtx/certs/mediamtx.key
|
||||||
|
serverCert: /usr/local/share/mediamtx/certs/mediamtx.crt
|
||||||
|
|
||||||
|
rtmp: yes
|
||||||
|
rtmpAddress: 0.0.0.0:1935
|
||||||
|
rtmpEncryption: "no"
|
||||||
|
rtmpsAddress: :1936
|
||||||
|
rtmpServerKey: /usr/local/share/mediamtx/certs/mediamtx.key
|
||||||
|
rtmpServerCert: /usr/local/share/mediamtx/certs/mediamtx.crt
|
||||||
|
|
||||||
|
hls: no
|
||||||
|
webrtc: no
|
||||||
|
srt: no
|
||||||
|
|
||||||
|
pathDefaults:
|
||||||
|
source: publisher
|
||||||
|
sourceFingerprint:
|
||||||
|
sourceOnDemand: no
|
||||||
|
maxReaders: 0
|
||||||
|
srtReadPassphrase:
|
||||||
|
fallback:
|
||||||
|
|
||||||
|
record: yes
|
||||||
|
playback: yes
|
||||||
|
recordPath: /var/lib/mediamtx/records/%path/%Y-%m-%d_%H-%M-%S-%f
|
||||||
|
recordFormat: fmp4
|
||||||
|
recordPartDuration: 100ms
|
||||||
|
recordSegmentDuration: 24h
|
||||||
|
recordDeleteAfter: 0s
|
||||||
|
|
||||||
|
publishUser:
|
||||||
|
publishPass:
|
||||||
|
publishIPs: []
|
||||||
|
|
||||||
|
readUser:
|
||||||
|
readPass:
|
||||||
|
readIPs: []
|
||||||
|
|
||||||
|
overridePublisher: yes
|
||||||
|
srtPublishPassphrase:
|
||||||
|
|
||||||
|
runOnInit:
|
||||||
|
runOnInitRestart: no
|
||||||
|
|
||||||
|
runOnDemand:
|
||||||
|
runOnDemandRestart: no
|
||||||
|
runOnDemandStartTimeout: 10s
|
||||||
|
runOnDemandCloseAfter: 10s
|
||||||
|
runOnUnDemand:
|
||||||
|
|
||||||
|
runOnReady:
|
||||||
|
runOnReadyRestart: no
|
||||||
|
runOnNotReady:
|
||||||
|
|
||||||
|
runOnRead:
|
||||||
|
runOnReadRestart: no
|
||||||
|
runOnUnread:
|
||||||
|
|
||||||
|
runOnRecordSegmentCreate:
|
||||||
|
runOnRecordSegmentComplete:
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
paths:
|
||||||
|
all_others:
|
14
system/h264-node@.service
Normal file
14
system/h264-node@.service
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=Retranslation of the RTMP stream '%I'
|
||||||
|
After=mediamtx.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
Type=simple
|
||||||
|
NotifyAccess=all
|
||||||
|
WatchdogSec=30
|
||||||
|
Restart=always
|
||||||
|
ExecStart=/usr/local/bin/h264-retranslate %i
|
||||||
|
SuccessExitStatus=255
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
19
system/mediamtx.service
Normal file
19
system/mediamtx.service
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
[Unit]
|
||||||
|
Description=MediaMTX
|
||||||
|
Requires=docker.service
|
||||||
|
After=docker.service
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
TimeoutStartSec=0
|
||||||
|
Restart=on-failure
|
||||||
|
ExecStartPre=-/usr/bin/docker exec %n stop
|
||||||
|
ExecStartPre=-/usr/bin/docker rm %n
|
||||||
|
ExecStartPre=/usr/bin/docker pull bluenviron/mediamtx:latest
|
||||||
|
ExecStart=/usr/bin/docker run --rm --name %n --network=host \
|
||||||
|
-e TZ=Europe/Moscow \
|
||||||
|
-v /etc/mediamtx.yml:/mediamtx.yml \
|
||||||
|
-v /var/lib/mediamtx:/var/lib/mediamtx \
|
||||||
|
bluenviron/mediamtx:latest
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in New Issue
Block a user