Skip to content
Carl Karsten edited this page Jul 6, 2024 · 34 revisions

I am part of the TimVideos.us organization. "We wish to develop a system where everyone has the ability to record presentations and host live remote participants across the globe."

What is listed here is everything we use for a full multi day multi track conference. Not all of it is needed to produce a video, but ROI on learning pays off the moment you don't have to mix slides in post. And it is more fun to engage our community, we like helping.

The Components

What to do First

Today the place to start is here: https://debconf-video-team.pages.debian.net/ansible/usb_install/usb_quick_start.html It should take about 20-30 minutes to do what that one page describes: make the usb stick, make the machine, see the test patterns.

After you have test patterns, the next steps depends on your goals.

The state of things and how you should engage them:

Stable released packages deployed by Ansible is what you should try to use first. That will get you functional sooner than using trunk and be easier to get help with. Once you have a working setup, then it will be great if you try out trunk. I personally use trunk in production for small events that can tolerate a bit of disruption, although we keep trunk pretty stable too.

You can install all the things on your personal box, which is fine but beyond the scope of this page.

What to do Next

Replace the first test pattern source with a camera: https://debconf-video-team.pages.debian.net/ansible/simple_setup/voctomix.html

Expect to spend 2 hours the first time. Once you have done it once, you will find it is pretty easy.

This is where hardware details become important. A camera with a usb connector may not be a UVC video over usb device. If it is, it may not use the default compression/colorspace/fps/etc and the process that consumes that data may not auto detect it correctly. (Avoid relying on auto detect, it may someday detect the wrong thing.)

Try making a video of a talk at a local user group. The smaller the better as you will likely be a bit disruptive as you figure things out, like where to put the tripod. Which is fine, we were all rookies first.

Chat with us: #TimVideos on libre.chat or #debconf-video on oftc which is bridged to Matrix: https://app.element.io/#/room/#_oftc_#debconf-video:matrix.org

How to do Next

The usb_quick_start is great for getting something working, but it isn't great for hacking on. Here are some steps to get you the 'same thing' hacker version:

Fork https://salsa.debian.org/debconf-video-team/ansible, using my fork as an example:

git clone https://salsa.debian.org/carlfk-guest/ansible
cd ansible
vim roles/pxe/tftp-server/files/scripts/late_command.cfg 
# set playbook_repo="https://salsa.debian.org/carlfk-guest/ansible"
cd usbinst/
./mk_usb_installer.sh /dev/sdx configs/development.cfg
./http_server.sh

The last line turns your laptop into a web server that the installer will try to pull files from. 'Try' because it uses your box's hostname, and if your local DNS doesn't resolve the hostname, it won't work. Read about Hosting Files.

Things to edit:

  • syslinux.cfg on the usb stick (like url=foo:8007)
  • roles/pxe/tftp-server/files/d-i/preseed_local_debian.cfg - answers to installer prompts: password, disk, timezone
  • roles/pxe/tftp-server/files/scripts/late_command.cfg - what git repo/branch that hold your playbooks and inventory.

Alternatively, use the debconf-video-team installer/preseed, then hook the late_command.sh to use your ansible. This is very flexible, which means it is very fiddly. Here is my fiddle: https://github.com/CarlFK/video-stack-bin-chicken/tree/master/scripts/setup/lc2

Test if a device works with Voctomix

For production you should edit the above Ansible inventory and setup the parameters needed for the equipment you will be using. aka your inventory :p But that is tricky if it is new and unfamiliar stuff, so here is how to swap out a test source for the real deal.

  • Setup a working voctomix with test patterns, like What to do first (If the test pattern system isn't working you will have no idea if your device is working or not.)

  • Stop one of the test pattern systemd services: systemctl --user stop videoteam-ingest-0.service

  • Once that is stopped. do a quick test to make sure you can manually run ingest.py: /usr/bin/voctomix-ingest No parameters defaults to a test pattern and beeping audio. Once you have confirmed that works, ^c to exit,

  • Now try with ingesting the video signal from the hardware. Example, the hdmi2usb (aka Opsis or frame grabber): /usr/bin/voctomix-ingest --video-source hdmi2usb

That should read from /dev/video0 with the needed parameters and send to voctocore, and voctogui should display it.

More install docs: