-
Notifications
You must be signed in to change notification settings - Fork 23
System Stack
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.
- Debian Conference Video Team - Ansible playbooks, documented procedures, over a decade of experience.
- Wafer A wafer-thin web application for running a conference.
- Veyepar - Video Eyeball Processor and Review - Workflow management of the steps from "Consume the conference schedule" to "Toot video URLs".
- HDMI2USB - Open Hardware device used to capture the presentation.
- Voctomix - Live-Video-Mixer
- Voctomix-Outcasts - Custom Voctomix clients (hardware ingest and sinks: streaming, local copy, cutlist log, etc.)
- DeckLink Mini Recorder closed source sdi/hdmi capture card. (may be replaced with smaller cheaper USB hardware. see https://wiki.debian.org/Sprints/2023/DebConfVideoteam#Hardware_list )
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.
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
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
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.