APStreamline started as a GSoC 2018 project for ArduPilot which aimed to make video streaming better in APSync. With multiple camera support and adaptive video quality control, it aims to cover a number of use cases for live streaming video from robots to smartphones and laptops. A key feature in APStreamline’s “batteries included” design is its support of a wide variety of cameras (V4L2, UVC, CSI) and network interfaces (Wi-Fi, LTE, Ethernet) with zero configuration required from the user. It can also be accessed through the APWeb web-interface.
I recently got my hands on a Jetson TX2, and I am delighted to announce that the latest version of APStreamline now supports the Jetson TX1/TX2 board with compatible CSI cameras! These cameras use the powerful Jetson’s ISP for H.264 encoding and are much more efficient than using the
x264enc software encoder with USB cameras (which are also supported by APStreamline ).
The latest release also includes options for changing the resolution and frame-rate of UVC cameras (such as the Logitech C920) and a comprehensive rewrite of some parts of the code-base. Unfortunately, I had to remove the ‘File Recording’ feature as it was causing too many stability issues.
As a run-down of APStreamline’s key features:
NEW: Support for using the hardware encoder for Jetson TX1/TX2 CSI cameras
NEW: More flexiblity for UVC/CSI cameras with more options to change the camera’s resolution and frame-rate
Automatic quality selection based on bandwidth and packet loss estimates
Selection of network interfaces to stream the video
Manual control over resolution and framerates
Multiple camera support using RTSP
Hardware-accelerated encoding for the Raspberry Pi camera on the Raspberry Pi
Camera settings configurable through the APWeb GUI
DROPPED: Options to record the live-streamed video feed to the companion computer. This had to be removed because of stability issues.
APStreamline and APWeb support most SBCs running a flavour of Linux. A Raspberry Pi Zero/2/3/3B+ with the latest version of Raspian or a Jetson board running L4T is a good choice. However, Intel NUCs are better options in case you want to encode multiple video streams from USB cameras.
The code and instructions for setting up and building APStreamline from source can be found at: https://github.com/shortstheory/adaptive-streaming.
It is highly recommended to install the patched version of APWeb with support APStreamline for adjusting its settings and viewing the RTSP URLs for each camera. Instructions for installing this version of APWeb can be found here.
Happy video streaming!