Skip to content

FOSDEM 2020 VOC Manual

Vasil Kolev edited this page Jan 14, 2020 · 2 revisions

FOSDEM 2020 VOC manual

PRE-FOSDEM

Check artwork

  • Check backround.raw in ansible has been updated for the current edition.

Preparation for VOC admins

Network preparations

  • Ask the video team to allow access to the video network from streamdump-external0.video.fosdem.org and streambackend0.video.fosdem.org. For 2020, the ip's are: 78.47.61.216, 95.216.72.141, 2a01:4f8:c0c:24b7::1, 2a01:4f9:2b:8ef::1.

Install packages on your machine:

  • ansible 2.7 (debian stable backports or debian buster)
  • avahi-daemon avahi-discover
  • mpv
  • parallel-ssh

Ansible configuration

Firefox configuration for handling tcp links

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.

Study

Friday buildup

Physical buildup: server room

  • set up metal racks
    • in K1105, move to server room when ready
    • video team and/or general volunteers
  • unpack laptops, switch is already at ULB
    • Cisco 3560E (48 ports)
    • attention: uplink is on Te0/2
  • 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

Physical buildup: VOC

  • 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)
  • Monitoring people
    • Two large screens on one table
    • ports in video VLAN

VOC software setup

  • Recheck control server (already at ULB)
  • 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

  • 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}'

During the conference

Enable stream dumps

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*

Ansible

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*

Control.video.fosdem.org

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:

Raw streams

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

Status monitoring

Some Grafana dashboards for video system status:

Audio monitoring

An visual overview of audio in all rooms will be available at:

Alerts

VideoRecorderFailed The video-recorder.service is marked as failed on a cam/slide box.

  • systemctl status video-recorder.service
  • journalctl -u video-recorder.service

Troubleshooting physical boxes

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.

Deploy a new room to a spare cam, slides or voctop box

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

check the resolution of a camera

ssh [email protected] 'grep display /mnt/ssd/bmd-streamer.log|tail -n1' 

or

ffprobe tcp://k3201-cam.video.fosdem.org:8899/
Clone this wiki locally