-
Notifications
You must be signed in to change notification settings - Fork 21
FOSDEM 2019 VOC manual draft
- (done) Check backround.raw in ansible has been updated for the current edition.
- Ask the video team to allow access to the video network from streamdump-external0.video.fosdem.org. For 2019, the ip's are: 176.9.123.213 / 2a01:4f8:151:82d0::2.
- ansible 2.7 (debian stable backports or debian buster)
- avahi-daemon avahi-discover
- mpv
- parallel-ssh
- sproxy (git clone from https://github.com/FOSDEM/video-sproxy , make static binary, drop in $PATH)
- Make sure you have run
update-privatefiles.sh
before running ansible. See https://github.com/FOSDEM/infrastructure/blob/master/ansible/docs/video.md#video-boxes-video-box-role
- Install mpvwrap from https://raw.githubusercontent.com/FOSDEM/video/master/software/mpvwrap/mpvwrap into $PATH (/usr/bin ?). Don't forget to chmod a+x it.
- Start Firefox and open about:config
- Right-click -> New -> Boolean -> Name: network.protocol-handler.expose.tcp -> Value -> false
- Create a mpegts tcp video stream. This will create one locally on port 8899 (hardcoded):
while true; do ffmpeg -re -i foo.mp4 -c copy -f mpegts - | sproxy; done
- Create a html file with a link to tcp://localhost:8899.
- Click the tcp://localhost:8899 link from Firefox. This asks for an application to handle this with.
- Registers mpvwrap as the application to deal with tcp:// links and starts the video.
- read general video manual: https://github.com/FOSDEM/video/blob/master/instructions/FOSDEM_AV_manual.pdf
- read up on ansible (see below)
- set up metal racks
- in K1105, move to server room when ready
- video team and/or general volunteers
- unpack laptops, switch
- Juniper ex2200 (48 ports)
- attention: ports 44-47 are bond/trunk with 4x1g config!!, cable accordingly
- power & network cabling
- switch, voctops, streamdumper-local, control
- take pictures of the physical setup for future documentation
- TODO who? only trusted people in the server room
- boxes with video related gear:
- specific corner?
- stack on tables?
- remove lids
- tables, chairs
- power strip
- big screen:
- straps
- x240 laptop
- mini dp to hdmi adapter
- video vlan:
- 24 port switch (dumb, supplied by network team)
- Start up the control laptop.
- Set up the big screen with the streams from control. Don't forget to set up irssi at the bottom right of the screen!
- Erase stale data from videoboxes, streamdumps, stream backends. See https://github.com/FOSDEM/infrastructure/blob/master/ansible/docs/video.md#erasing-all-data .
- video-box:
ansible-playbook playbooks/site.yml --user root --limit video-box --extra-vars '{"destroy_all_videobox_data": True}'
- video-streamer-backend:
ansible-playbook playbooks/site.yml --user root --limit video-streamer-backend --extra-vars '{"destroy_all_streambackend_data": True}'
- video-stream-dump:
ansible-playbook playbooks/site.yml --user root --limit video-stream-dump --extra-vars '{"destroy_all_streamdump_data": True}'
- video-box:
Enable dumps on streamdump0.video.fosdem.org, streamdump-external0.video.fosdem.org:
- TODO check if right
ansible --user=root -a "service video-streamdump-* start" video-stream-dump*
Some ad-hoc commands:
-
ansible --user=root -a ""
- Start the video recording on all video boxes:
ansible --user=root -a "service video-recorder start" video-box
- Check uptime on all video related boxes:
ansible --user=root -a "uptime" video-*
- You can spawn a shell before executing the command. This allows you to use pipes, chain multiple commands etc:
ansible --user=root -m shell -a "ip link | grep eth0" video-streamer-*
- Check if all boxes respond:
ansible --user=root -m ping video-box
- Restart the ingestion service on a specific video box:
TODO CHECK IF VALID
ansible --user=root -a "service bmd-receiver restart" video-box --limit aw1120-slides*
As a VOC admin, you can use this web based control center to manage the raw video streams. You can control the scenes in the stream the general public will see, and you get one-click access to all underlying raw tcp video streams.
Devroom video managers use one page each on this platform to switch scenes.
Important urls:
- https://control.video.fosdem.org/all.html : all cams, slides, composites
- https://control.video.fosdem.org/cams.html : cams only
- https://control.video.fosdem.org/aw.html : aw only
- https://control.video.fosdem.org/h.html : h only
- https://control.video.fosdem.org/j.html : j only
- https://control.video.fosdem.org/k.html : k only
- https://control.video.fosdem.org/ua.html : ua only
- https://control.video.fosdem.org/ud.html : ud only
A few important things to know when trying to directly watch the internal mpegts streams:
- All video vlan boxes are mdns addressable: $ROOM_NAME-slides.local, $ROOM_NAME-cam.local, $ROOM_NAME-voctop.local .
- All of them expose their mpegts video stream on port 8899. There is also a stream on port 8898 for slides and cams, but that is slower to respond because of buffering.
To watch a specific box with the least delay possible:
mpv tcp://{{ config.room }}-cam.local:8899/?timeout=2000000 mpv tcp://{{ config.room }}-slides.local:8899/?timeout=2000000 mpv tcp://ud2120-voctop.video.fosdem.org:8899
Some Grafana dashboards for video system status:
An visual overview of audio in all rooms will be available at:
VideoRecorderFailed The video-recorder.service
is marked as failed on a cam/slide box.
systemctl status video-recorder.service
journalctl -u video-recorder.service
We have only 1 spare per type, so we'll have to be creative here.
There is a box with video repair tools and spare parts. Currently box 69. See https://etherpad.fosdem.org/p/inventory . Ask Mark, Luc "libv" Verhaegen, Vasil or Gerry for more info if needed.
To quickly deploy a different room config to a spare box running the latest box config for another room:
- Update the
hosts
file entry for the cam, slides or voctop box you want to replace in the root of your local ansible checkout:
sed -i 's/\(ROOMNAME-BOXTYPE.video.fosdem.org\)/\1 ansible_host=CURRENT_IP_OF_REPLACEMENT_BOX/g' hosts
- Deploy to the box from ansible:
ansible-playbook playbooks/site.yml -i hosts --limit ROOMNAME-BOXTYPE.video.fosdem.org
- Update dhcp config with replacement box mac address & reload dhcp server. TODO
- Don't forget to revert ansible to the canonical hosts file:
git checkout -- hosts
ssh [email protected] 'grep display /mnt/ssd/bmd-streamer.log|tail -n1'
or
ffprobe tcp://k3201-cam.video.fosdem.org:8899/