LiveCam/cam1/start.sh

49 lines
1.4 KiB
Bash
Executable File

#! /bin/bash
trap do_exit INT
PIDS=""
do_exit() {
kill $PIDS >/dev/null 2>&1
sleep 10
kill -9 $PIDS >/dev/null 2>&1
pkill -9 gst-launch-1.0
}
v4l2-ctl -d /dev/video0 --set-ctrl=power_line_frequency=1 --set-ctrl=backlight_compensation=1
# provide video stream
(
while true; do
gst-launch-1.0 -e rtpbin name=b rtp-profile=avpf uvch264src device=/dev/video0 name=src auto-start=true \
src.vidsrc ! video/x-raw,framerate=30/1,profile=high ! videoscale ! video/x-raw,width=1920,height=1080 ! videoconvert ! x264enc tune=zerolatency bitrate=5000 speed-preset=superfast psy-tune=film key-int-max=15 ! rtph264pay ! rtpulpfecenc percentage=50 percentage-important=75 ! rtprtxqueue max-size-packets=5000 ! b.send_rtp_sink_0 \
b.send_rtp_src_0 ! udpsink host=terminal1 port=5001 \
udpsrc address=:: port=5002 ! b.recv_rtcp_sink_0 \
b.send_rtcp_src_0 ! udpsink host=terminal1 port=5003 sync=false async=false
sleep 1
done
) &
PIDS="$PIDS $!"
# send audio stream
amixer -c2 sset 'Mic' 100%
(
while true; do
gst-launch-1.0 alsasrc device=plughw:2,0 ! audioconvert ! audioresample ! opusenc ! rtpopuspay ! udpsink host=terminal1 port=5008
sleep 1
done
) &
PIDS="$PIDS $!"
# receive audio stream
amixer -c1 sset 'Speaker' 100%
(
while true; do
gst-launch-1.0 udpsrc address=:: port=5007 caps="application/x-rtp" ! rtpjitterbuffer latency=20 do-lost=True ! rtpopusdepay ! opusdec plc=true ! alsasink device=hw:1
sleep 1
done
) &
PIDS="$PIDS $!"
wait $PIDS