Table of Contents

CRS Concepts

The C3 Ticket Tracker enables the (semi-)automated recording, editing & release of multilingual videos. In order to complete a release successfully, certain project settings must be configured and a few of the state transitions must be operated manually:

User Roles

User accounts can have different roles depending on what the user should be able to do:

more details on https://github.com/crs-tools/tracker/blob/master/src/Config/AccessControl.php

Ticket types and hierarchy

One of the really good features of the C3 tracker is that propertyies are inherited through the hierarchy:

Ticket states and pipeline

For each ticket type, the tracker has a predefined set of states, which can be enabled and disabled on an per project basis. Here is an example workflow with only one manual checking step:

c3tracker:states.png

This allows quite flexible pipelines, which are described in more detail in Project setup – for now lets focus on a typical one:

c3tracker:setup-central-storage.png

Let's look into the steps done by worker scripts

Recording

Worker A: Recording Scheduler

script-A-recording-scheduler.pl

Schedules and transitions tickets from scheduled via recording to recorded, optionally filters by room. Skips opt-out events, but does not perform any real task besides transitioning the recording ticket.

The actual recording is done by a bundlewrap configured systemd unit on the encoder which writes TS-Schnipsel to /video/capture/<conference-acronym>/<room>/, which are rsynced to storage. The “Schipsel” file names include the room name and recording timestamp as follows:

  <room>-YYYY-MM-DD_HH-MM-SS.<extension>

Worker B: Create virtual project files

script-B-mount4cut.pl

Mounts raw video segments via FUSE. Checks and sets cut marks, stores metadata like duration and framerate.

Manual task by VOC crew: Cut

see cutting

The cutting process requires the operator to set start and end marks, using MLT-Video-Editor like Shotcut/Kdenlive but tooling accepts frame numbers via CLI. If your player does not show frame numbers you can approximate with the formula seconds * 25 assumed you have 25 frames per second. Note that this means you cut per second not per frame!

Worker C: Finalise recording ticket

script-C-cut-postprocessor.pl

Validates cut marks, adds intro/outro clips if defined, and calculates cut durations. Fails tickets with incomplete data.

Naming for intro and outro, all in /video/intros/<conference-acronym>/:

Encoding

Worker D: Encoding

script-D-encoding.pl

Runs encoding tasks from job XML. Skips if Voctomix is detected. Supports VAAPI acceleration and logs execution times.

Worker E: Postencoding

script-E-postencoding-auphonic.pl

Runs audio processing and remuxing. Can optionally delegate to Auphonic for audio leveling and rendering.

Manual task by VOC crew: Check

see checking

Worker F: Upload from Encoder (local) to Releasing host

script-F-postprocessing-upload.pl

Uploads processed files to the target via ssh from encoder/storage to releasing.c3voc.de. Can skip uploads based on host config.

Publishing

https://github.com/voc/voctopublish

c3tracker:publishing.png