LogoLogo
  • Welcome!
  • Mission Statement
  • Contributing Guidelines
    • Embed CADs in Wiki Articles
  • VEX Worlds Livestream Archive
    • VEX U
    • V5RC High School
    • V5RC Middle School
    • VIQRC Middle School
    • VIQRC Elementary School
    • JROTC
  • ⚙️Hardware
    • Design Fundamentals
      • Gear Ratios
      • Internal Forces (Stress)
      • Torque
      • RPM
      • Center of Mass
    • Introduction to VEX Parts
      • Structure
        • C-Channels and Angles
        • Fasteners
        • Retainers
        • Gussets and Brackets
        • Bearings
        • Plate Metal and Flat Bars
      • Motion
        • High Strength Components
        • Gears and Sprockets
        • Traction Wheels
        • Mecanum Wheels
        • Omnidirectional Wheels
        • Flex Wheels
    • Robot Decorations
      • Part Dyeing
      • Metal Coloring
      • License Plate Holders
    • Lifts
      • Double Reverse Four Bar (DR4B or RD4B)
      • Four Bar
      • Scissor Lift
      • Six Bar
      • Other Lifts
      • Best Practices
    • Shooting Mechanisms
      • Catapult
      • Flywheel
      • Linear Puncher
    • Drivetrains
      • Tank Drive
      • Mecanum Drive
      • Holonomic Drive
      • Designing a Drivetrain
      • Best Practices
    • Pivots & Joints
    • Pneumatics
      • Best Practices - Pneumatics
    • Intakes
    • Flip Out Mechanisms
    • Defensive Mechanisms
    • Misc. Building Techniques
    • VexU
      • Common Manufacturing Techniques
        • 3D Printing
        • Laser Cutting
      • Custom Manufactured Parts Library
      • Commercial Off The Shelf Parts Library
  • 👑Team Administration
    • New Team Resources
      • Creating The Team
      • Gaining Interest for Robotics Teams
      • Attending Competitions
        • Elimination Bracket
    • Team Dynamics
      • Organization Structure and Longevity
      • Member Allocation and Management
      • How *Not* To Run a Team
    • Team Finances
      • One-Year Team Financial Breakdown
      • Funding Your Teams
    • Hosting Competitions
      • Live Streaming
      • Tournament Manager
        • Competition Electronics
        • Creating a Tournament
        • Tools
          • Field Set Control
          • Connecting Mobile Devices
          • Connecting Raspberry Pis
        • Match Control
          • Inputting Match Scores
          • Inputting Skills Scores
          • Inputting Scores on TM Mobile
        • Displays
        • Alliance Selection
      • Additional Event Partner Resources
    • VexU Organization Management
      • Getting Started in VexU
      • Team / Personnel Management
      • Volunteering At Local Events
  • 📚The Judging Process
    • The Engineering Design Process
      • Test and Refine
    • The Engineering Notebook
      • Segments of the Notebook
      • BLRS2 '23-'24 Engineering Notebook
      • Integrating Inventor Models into Documentation
      • Engineering Notebook Rubric Breakdown
    • The Interview
      • Interview Rubric Breakdown
    • Using Notion for an Engineering Notebook
      • How to Setup a Notebook
      • How to Create Entries
      • How to Export a Notebook
      • Purdue SIGBots Notion Template
        • Game Analysis
        • Identify The Problem
        • Brainstorm Solution
        • Select Best Approach & Plan
        • Build Log
        • Programming Log
        • Testing Solution
        • Tournament Recap
        • Innovative Feature
  • 🖥️VEX CAD
    • CAD Programs
      • Inventor
      • Fusion 360
      • Solidworks
      • OnShape
      • Protobot
    • Making a Chassis
      • Inventor Chassis: The Basics
        • Installation
        • User Interface Overview
        • Dark Mode
        • Assemblies
        • Placing Parts
        • Navigating CAD
        • Changing Visual Style
        • Grounding
        • Connecting Two C-Channels
        • Modifying Existing Constraints
        • Toggling Visibility on Existing Parts
        • Completing Half of the Chassis
          • Inner Drive Channel
          • Bearing Flats
          • Motors
          • Wheels
          • Sprockets
          • Spacers, Washers and Standoffs
          • Spacers Cont.
        • Creating Mid-Plane
        • Mirroring
      • Inventor Chassis: Best Practices
        • File Structure
        • Subassemblies
        • Wheel Subassembly
        • Origin Planes
        • Cross Brace
        • Drive Channels
        • Simple Motor iMates
        • Replacing Simple Electronics
        • Completing Half of the Drive
          • Bearing Flats (Best Practice)
          • Wheels
          • Powered Gear
          • Spacer Boxing
          • Spacers, Washers and Standoffs (Best Practice)
        • Model Browser Folders
        • Mirroring (Best Practice)
        • Model Browser Folder (Right)
        • Main Assembly
      • Fusion 360 Chassis
      • Solidworks Chassis, Chain, and Custom Plastic
    • Remembering The Best
      • 62A Skyrise
      • 400X Nothing But Net
      • 2587Z Nothing But Net
      • 365X Starstruck
      • 62A In The Zone
      • 202Z In The Zone
      • 5225A In The Zone
      • 169A Turning Point
      • 929U Turning Point
      • 7K Tower Takeover
      • 5225A Tower Takeover
      • 62A Change Up
    • Scuff Controller
  • 💻Software
    • Odometry
    • Path Planning
    • Robotics Basics
      • Arcade Drive
      • Tank Drive
      • Joystick Deadzones
      • Curvature (Cheesy) Drive
      • Subsystem Toggling
    • Organizing Code
      • Code Style
      • Code Styling Guide
      • Writing Good Comments
      • Version Control
    • Control Algorithms
      • Bang Bang
      • PID Controller
      • Basic Pure Pursuit
      • Flywheel Velocity Control
      • Kalman Filter
      • Take Back Half (TBH) Controller
      • RAMSETE Controller
    • Competition Specific
      • Operator Control
      • Autonomous Control
    • C++ Basics for VEX Robotics
      • Basic Control Flow
      • Enumerations
      • Namespaces (::)
      • Multiple Files (C/C++)
    • VEX Programming Software
      • PROS
        • OkapiLib
      • vexide
      • Robot Mesh Studio (RMS)
      • EasyC
      • RobotC
      • VEXcode
      • Midnight C
    • General
      • Stall Detection
      • Register Programming
      • Sensors and Odometry in Autonomous
      • Embedded Programming Tips
      • Debugging
      • Bit Shift
      • Bit Mask
      • Autoformatting
      • Finite State Machine
      • Data Logging
    • Object Recognition
      • Red Green Buoy
      • AMS
      • OpenCV
      • OpenNI
    • 🤖AI in VRC: Pac-Man Pete
  • ⚡VEX Electronics
    • V5 ESD Protection Board
    • VEX Electronics
      • VEX V5 Brain
        • V5 Electronics Observations and Issues
      • VEX Controller
      • VEXnet and V5 Robot Radio
      • VEX Battery
      • VEX Motors
    • VEX Sensors
      • 3-Pin / ADI Sensors
        • Encoder
        • Potentiometer
        • Limit Switch
        • Bumper Switch
        • Accelerometer
        • Gyroscope
        • Ultrasonic
        • Line Tracker
        • LED Indicator
      • Smart Port Sensors
        • GPS Sensor
        • Rotation Sensor
        • Vision Sensor
        • Optical Sensor
        • Distance Sensor
        • Inertial Sensor (IMU)
        • 3-Wire Expander
    • V5 Brain Wiring Guide
    • Legacy
      • VEX Cortex
      • Power Expander
      • VEX Motor Controller
      • VEX Cortex Wiring Guide
  • General Electronics
    • General Topics
      • External Boards
        • ASUS Tinker Board S
        • Arduino
        • Beagleboard
        • Leaflabs Maple
        • LattePanda
        • Meadow F7 Micro
        • Netduino
        • ODROID-XU4
        • Pandaboard
        • Raspberry Pi
      • Analog-Digital Converter (ADC)
      • Bit-Bang
      • GPIO
      • I2C
      • Jitter
      • Line Noise
      • List of Tools
      • Output Drive
      • Power Consumption
      • Radius Array
      • Resettable Fuse (PTC)
      • SPI
      • Slew Rate
      • Stalling
      • USART
      • UART
      • 5 Volt Tolerant
      • DC Motor Basics
Powered by GitBook
On this page
  • Cameras
  • HDMI Cameras
  • Networked Cameras
  • USB Webcams
  • Audio
  • TM Source
  • TM Switcher
  • Contributing Teams to this Article:

Was this helpful?

Edit on GitHub
Export as PDF
  1. 👑Team Administration
  2. Hosting Competitions

Live Streaming

PreviousHosting CompetitionsNextTournament Manager

Last updated 12 months ago

Was this helpful?

LogoLogo

This work is licensed under a Attribution-ShareAlike 2.0 Generic License

For this article, we will be discussing live streaming through OBS. OBS will allow streaming to most major platforms with all of the same setups. It is assumed that a general understanding of OBS is had, and the basics can be found here:

Ensure that the venue's network will both allow the ability to stream and has sufficient bandwidth to ensure a low latency stream. Most school networks are acceptable, but check the stream host's documentation for precise network bandwidth requirements.

Cameras

Unlike traditional web live streams, robotics event live streams have multiple cameras, each of which are dozens of feet from each other. Typically, an event partner will place at least one camera at each field, and a wider event/awards camera. There are several approaches to connecting these cameras to the live stream computer.

HDMI Cameras

Many cameras will offer an HDMI out signal, which can be an efficient way to achieve a low-latency stream. Before purchasing, ensure that the cameras that will be used have a clean HDMI out signal. Additionally, several 50ft HDMI cords may be needed, which is the maximum length that can be reasonably gotten without signal degradation or the need for an active extension.

Recommended Setup: GoPro (Used by Brendan McGuire)

GoPros provide a great option for live streaming robotics events, due to their cost and wide field of view. If GoPros are purchased, try to purchase a Hero 8 or newer. In this version, the USB C port can be directly connected to a computer and be used as a web camera, which can provide flexibility for additional cameras. In most cases, older models are acceptable.

Connect the micro-HDMI port to an external switcher or capture card. For most competition purposes, the Blackmagic ATEM Mini is an acceptable option. The ATEM Mini Pro is a slightly more expensive alternative but would allow streaming directly from the switcher without a dedicated streaming computer.

The GoPros may need to be modified to ensure they don't overheat during a long competition day. Overheating cameras can be identified by intermittent black outs of video output.

  • Remove the battery and leave the battery compartment open

  • Disable H.264. In Video Compression, Select HVEC. The older encoding is not needed for our purposes and only increases temperatures

  • Disable Wifi Configuration

  • Set video mode to 1080p60

  • Set field of view to the widest setting

  • Disable video stabilization

  • Utilize compressed air to cool camera

If the venue is particularly warm, invest in heat sinks to ensure that the cameras are properly cooled. Some Event Partners have found success in repurposing Raspberry Pi heatsinks. Target the area of the GoPro directly below the sensor, but experimentation with each particular model is warranted.

Networked Cameras

Another approach is to use a PoE network camera, which are commonly produced as security cameras. This approach is significantly more flexible than HDMI cameras, but careful considerations must be made to ensure access to a low-latency stream from the cameras.

Recommended Setup: Amcrest PoE Camera (Used by Nathan Nolte)

Camera: https://amcrest.com/amcrest-1080p-poe-video-security-ip-camera-pt.html

To obtain a low-latency stream from the cameras, we will use a tool known as OBS-gstreamer: https://obsproject.com/forum/resources/obs-gstreamer.696/

https://gstreamer.freedesktop.org/download/

Here are some troubleshooting tips:

Once everything is installed, it may still not get the GStreamer Source to show up in OBS if Windows isn't finding the GStreamer framework. This may be caused by the framework not being in the Windows PATH environment variable. The fix I found was launching OBS with a batch file that mounts GStreamer to PATH when run. The steps for this fix are as follows:

Create a new file called start_obs.bat. Make sure that the file extension is .bat. Add the following code to the file:

cd /D "%~dp0"
cd gstreamer
SET GSTREAMER_1_0_ROOT_MINGW_X86_64=%cd%
cd bin
SET PATH=%cd%
SET GST_PLUGIN_PATH=%cd%
cd..
cd..
cd bin
cd 64bit
start obs64.exe

Save the file. and play around with the format of the RTSP stream for a while before it works. Try this syntax uridecodebin uri=rtsp://admin:password@192.168.1.200 ! queue ! video.

All the checkboxes are cleared in the GStreamer source properties except for the very last one (Clear image data after end-of-stream error)

Note: thanks so much to Nathan Nolte for his advice with this setup!

USB Webcams

USB webcams are often times cheap, and readily available. There are some limits to a USB webcam though. First, most PC/Mac USB ports can only use one webcam, or two with a hub. Because of this, streams with multiple fields, or multiple angles, may need to add additional hardware. Second, USB cables can usually only span about 20'-30' without additional hardware.

Recommended Setup: Anker C200 (used by Purdue SIGBots)

Camera: https://www.amazon.com/dp/B09MFMTMPD?psc=1&ref=ppx_yo2ov_dt_b_product_details

USB Extension Cable: https://www.amazon.com/dp/B07GCHXPDW?psc=1&ref=ppx_yo2ov_dt_b_product_details

USB-Ethernet Hub: https://www.amazon.com/dp/B09QPMBHDG?psc=1&ref=ppx_yo2ov_dt_b_product_details

With this setup, 2 cameras connect via the extension cables to the ethernet hub that will allow both cameras into 1 usb port with an extension via cat5/cat6 ethernet up to 100'.

This has been tested a few times in competition by SIGBots and has been the least problematic.

Audio

Audio is one of the most important aspects of the stream, and distinguishes a functional stream from an excellent one. Event Partners will likely need to purchase a USB Audio Interface to connect the venue's microphones to the live stream. To minimize copyright strikes on the streams, be sure to only capture the Emcee's microphones and Tournament Manager's Audio, and exclude any music that may be playing in the venue. It is best practice to mix in stream-friendly music through OBS. It is also possible to pipe Tournament Manager Audio into OBS instead of capturing it from the venue's audio mixer.

TM Source

Below is a recommended plugin for OBS (Win 64) in order to automate much of the work for linking TM and OBS. This is a third-party plugin and is not officially supported by RECF or Vex however it was designed by an employee of the company that designed TM and is one of the best community products to link the two platforms.

It is recommended to follow the installation and setup instructions given by Mr. Flowerday.

TM Switcher

Below is a recommended tool that can be used to automate many of the aspects of a robotics live stream, including field switching, showing saved match scores, and automatically recording matches.

Some notes from SIGBots after use of the switcher:

  • Make sure TM is running on port 80. Port 8080 will not work. Often, there is a service called World Wide Web Publishing that takes port 80 and should be ended before starting TM.

  • The plugin in requires using at least OBS v28, which integrates a new WebSocket control system.

  • If you are using the switcher with an ATEM device, you will need to connect your switcher to the network, as switchers connected via USB cannot be remotely controlled. See this guide on connecting your switcher to the network. Input the same address you would use to connect to the switcher via the ATEM Control Software.

  • Make sure the latest LTS version of NodeJS is installed if you are running the program from source.

  • Using the program via source is ideal and more consistent if you have NodeJS installed.

Contributing Teams to this Article:

  • Brendan McGuire

https://gitlab.com/dwabtech/vextm-obs-source/uploads/2158a7bcbdcebc7256f89d70f6853aeb/vextm-source.zip
OBS plugin by Dave Flowerday
https://github.com/MayorMonty/tm-obs-switcher