Processing Livestreams: A Standardized Workflow

Adrian Edwards, Justin W. Wheeler, Shounak Dey, Fedora community contributors

This guide outlines a streamlined procedure for processing Fedora livestreams (e.g., Flock, release parties, Fedora Week of Diversity), making it easier to edit and share recordings of these events. This standardized workflow utilizes tools and automation to minimize manual effort and ensure consistency.

Tools You’ll Need

This workflow assumes you have basic familiarity with command-line tools and video editing concepts.

Step 1: Prepare Talk Metadata

This process relies on a CSV file (comma-separated values) containing information about each talk (title, speakers, identifier). This data is used for automation and consistency.

You can automatically generate the CSV file and the description of the Talk using a Python script:

  1. Create and Navigate to a directory: mkdir commops cd commops

  2. Clone the repository: git clone https://forge.fedoraproject.org/commops/tickets.git

  3. Navigate to the script: cd tickets/scripts/conference

  4. Rename the sample description file and update it as per your requirement cp description.template.txt.sample description.template.txt

  5. Run the script: python conference.py <Pretalx Schedule URL>

Ensure the Pretalx schedule accurately reflects the livestream order.

Step 2: Generate Timestamps and prepare CSV for splitting videos using LosslessCut

This ensures only the talk segments are kept and any non-talk portions (e.g., breaks, dead air) are excluded during splitting.

  1. Review each recording and note the timestamps where each talk begins and ends.

  2. Create a CSV file named losslesscut.csv with the following fields:

    • start-time

    • end-time

    • title

Step 3: Split the video using LosslessCut

Use LosslessCut to split the video based on the generated CSV:

  1. Open LosslessCut and drag the downloaded video from YouTube Studio into it.

  2. Import the losslesscut.csv file to load the segments.

  3. Verify the segments align with the talks.

  4. Click the export button and configure the settings:

    • Output folder

    • Output file names: ${SEG_LABEL}${EXT}

    • Enable "Smart cut (experimental)"

  5. Click Export to split the video.

Step 4: Create Thumbnails

Use Inkscape with the Next Generator extension to create thumbnails for each talk:

  1. Design your thumbnail template in Inkscape, using variables like %VAR_TalkName% and %VAR_PresenterNames% to represent data from your CSV.

  2. Go to Extensions > Export > NextGenerator.

  3. Configure the export settings:

    • CSV file path

    • File format

    • File name pattern (e.g., %VAR_Identifier%)

  4. Click Export to generate the thumbnails.

Step 5: (Optional) Add Thumbnail Intros

You can add a short intro with the thumbnail at the beginning of each talk using a Python script:

  1. Navigate to the script: cd commops/scripts/transcode

  2. Prepare a CSV file with talk data (if not already generated).

  3. Configure the config.ini file with settings for intro duration, etc.

  4. Run the script according to the instructions in the README.

Areas for Further Automation

While this workflow incorporates significant automation, some areas can be further improved:

  • Chapter Creation: Streamline the process of creating YouTube chapters.

  • Recombining Clips: Automate the handling of interruptions and inconsistencies in the livestream.

  • Video Reformatting: Automatically convert videos to optimal formats for processing.

  • Captions: Explore automated captioning and translation solutions.

  • Audio Processing: Implement loudness normalization and dynamic range compression.

  • End Cards: Automate the addition of end cards to videos.

These improvements would further enhance the efficiency and robustness of the livestream processing pipeline.