-
Notifications
You must be signed in to change notification settings - Fork 0
Audience Cameras
Michael Farrell edited this page Jan 19, 2019
·
1 revision
These cameras are used for keynotes, so that the presenter can see the audience in the other rooms. It consists of two parts:
- Raspberry Pi camera device (
lcacam1,lcacam2) - Mini-desktop PCs display device, one driving each TV (
disp1,disp2)
Inventory:
- Raspberry Pi Model 3
- Logitech Webcam
- MicroUSB power pack
The Pis connect to a private network.
They run with VLC as a streaming platform on Alpine Linux. Using VLC instead of ffmpeg is lower dependency, but its HTTP server is "experimental" and doesn't handle multiple clients.
The high level of the configuration is we capture MJPEG frames from the webcams at 1280x720@25fps, mux that into a Ogg container and serve it over HTTP. Ogg gives us timecodes and the ability to mux in other stuff later.
Configuration:
# cat /etc/conf.d/vlc
# Sample vlc params suitable for running as a daemon
## --file-logging enable file logging
## --logfile logfile name/path
## -vvv verbose logging
## -I dummy disable X11 interface
## --sout PARAMS encoding parameters
## Do NOT quote 'PARAMS' otherwise shell expansions will broke vlc
##
## The --daemon option will automatically be added so no need to add it
## here.
# (default from alpine)
# VLC_OPTS="--quiet -I dummy alsa://hw:0,0 --file-logging --logfile /var/log/vlc/vlc.log --sout #transcode{acodec=mp3,ab=48,channels=1,samplerate=22050}:std{access=http,mux=ogg,dst=:8080}"
# LCA
#VLC_OPTS="--quiet -I dummy v4l2:///dev/video0:width=1280:height=720:chroma=MJPG:fps=25 --sub-source marq{marquee=%H:%M:%S,position=6,size=16} --file-logging --logfile /var/log/vlc/vlc.log --sout #standard{access=http,mux=ogg,dst=:8000}"
VLC_OPTS="--quiet --loop -I dummy v4l2:///dev/video0:width=1280:height=720:chroma=MJPG:fps=25 v4l2:///dev/video1:width=1280:height=720:chroma=MJPG:fps=25 --input-slave timecode:// --timecode-fps 25 --sub-source marq{marquee=%H:%M:%S,position=6,size=16} --file-logging --logfile /var/log/vlc/vlc.log --sout #standard{access=http,mux=ogg,dst=:8000}"
Did some experimenting with sending a (local) time signal from the RPi:
- Tried to add in a timecode from the RPi in as a subtitle track -- this doesn't seem to behave properly, unsure why at the moment.
- Rendering text into the image costs a LOT of CPU time -- we get < 1 fps when doing this and the stream is unusable.