30 lines
1.6 KiB
Bash
30 lines
1.6 KiB
Bash
# Enable kernel modules on the host
|
|
modprobe snd-aloop
|
|
|
|
# Install gstreamer
|
|
apt-get install -y libgstreamer1.0-0 gstreamer1.0-plugins-base gstreamer1.0-plugins-good gstreamer1.0-plugins-bad gstreamer1.0-plugins-ugly gstreamer1.0-libav gstreamer1.0-doc gstreamer1.0-tools gstreamer1.0-x gstreamer1.0-alsa gstreamer1.0-gl gstreamer1.0-gtk3 gstreamer1.0-qt5 gstreamer1.0-pulseaudio
|
|
|
|
# Inside container: ALSA to view sound devices with aplay -l
|
|
apt-get install -y libasound2 alsa-utils alsa-oss
|
|
apt-get install -y pulseaudio
|
|
|
|
# Rebuild our container
|
|
docker build . -t browseparty/chrome
|
|
|
|
# Run our services
|
|
# Start chrome + VNC, sharing audio device
|
|
docker run -d -p 5900:5900 --rm --name chrome --device /dev/snd -e VNC_PASSWORD="password" -e VNC_SCREEN_SIZE="1280x720" -e CHROME_OPTS_OVERRIDE=" --user-data-dir --no-sandbox --no-first-run --window-position=0,0 --force-device-scale-factor=1 --disable-dev-shm-usage" browseparty/chrome
|
|
|
|
# Proxy the VNC from TCP to WebSocket
|
|
docker run -d -it --rm --net=host --name websockify efrecon/websockify 5000 localhost:5900
|
|
|
|
# Audio test
|
|
speaker-test -D hw:0,0,0 --channels 2 --rate 48000
|
|
|
|
# Stream the audio to a TCP sink
|
|
gst-launch-1.0 -v alsasrc device=hw:0,1,0 ! audio/x-raw, channels=2, rate=48000 ! opusenc complexity=0 ! oggmux ! tcpserversink port=5901 host=0.0.0.0
|
|
gst-launch-1.0 -v alsasrc device=hw:0,1,0 ! audio/x-raw, channels=2, rate=48000 ! audioconvert ! lamemp3enc ! tcpserversink port=5901 host=0.0.0.0
|
|
|
|
# Proxy the audio from TCP to WebSocket
|
|
docker run -d -it --rm --net=host --name websockify-audio efrecon/websockify 5001 localhost:5901
|