AVC Task Management
In addition, to content storage and distribution, the content service also offers an AVC task scheduling system for content processing.
AVC Task, short for Audio/Video Coding Task, offers a streamlined interface for configuring and executing transcoding workflows. It supports both dedicated encoder hardware and cloud-based environments.
The AVC task system is a distributed task scheduling system managed by the NativeWaves content service. It efficiently schedules encoding/decoding tasks onto AVC task executor applications. These executor applications can operate as individual instances or be combined into a cluster of instances. When an AVC Task is run in a cluster, automatic task failover and load distribution can be utilized.
An AVC executor application, mainly referenced as AVC instance, comprises two main components: a task management and monitoring layer, and the actual encoder/decoder pipeline logic. The encoder/decoder pipeline leverages the comprehensive functionality and hardware support of FFmpeg and functions as controller for it.
Additionally, NativeWaves provides a hardware encoder, called AVCoder, that runs an AVC instance and serves as a reference build but can also be leased for live events. This hardware encoder is based on conventional server components leveraging encoder cards (e.g. from Nvidia, Intel) and audio/video IO cards (e.g. for SDI inputs) and has been extensively tested in numerous live events.
An AVC Task is defined by its configuration. This configuration enables the description of an encoding/decoding flow, mapping various inputs to various outputs.
Upon starting the task, the cloud scheduler examines the configuration to determine the appropriate executor for task execution. If a single instance is chosen, the scheduler allocates the task to that specific instance. In a cluster configuration, it evaluates all executors within the cluster and selects the optimal executor for the task. This selection may be based on factors such as the executor with the lowest task load or specific input constraints, such as the choice of a physical SDI input on a particular instance in the cluster. While executing the task its status, active alerts and a log history to pinpoint issues is shown.
When creating and editing tasks, the executor doesn't need to be online, as they operate independently. Therefore, an operator is free to configure everything in the NativeWaves Console, initiate the tasks, and once the executor is online, all tasks will be automatically scheduled for execution.
The AVC task configuration consists of the following key components:
- Sources: Content sources, such as SRT Streams or hardware SDI inputs, are specified within the configuration. These sources provide the input content for the transcoding process.
- Inputs: Inputs are abstractions that describe the video and audio inputs separately and link to a specific source. They can be used to mix different sources.
- Variants: Variants define multiple encoding options for video and audio. These variants are commonly used to realize an Adaptive Bitrate (ABR) ladder, offering different quality levels such as 1080p, 720p, 540p, 360p, and so on.
- Outputs: Output targets, such as HLS streams, are specified as the desired output of the transcoding task. These targets define where the transcoded content will be delivered.
The exact format and protocol support depends on the executor instance performing the task. However, here is a collection of the most common formats as reference. We are flexible to extend this list. Please let us know if you need additional format support in any of your projects.
Input & Output Interfaces and Protocols:
- Apple HTTP Adaptive Streaming (HLS and Low-Latency HLS)
- Common Media Application Format (CMAF)
- Real-Time Messaging Protocol (RTMP)
- Real-Time Streaming Protocol (RTSP)
- Secure Reliable Transport Protocol (SRT)
- Serial Digital Interface (SDI)
- Network Device Interface (NDI; Experimental)
Video Formats:
- AVC / H.264
- HEVC / H.265
- Bit depths: 8bit, 10bit
- Resolution: Up to 4K/60
- Deinterlacing support (up to 1080i60) for interlaced content
Audio Formats:
- AAC
Various video and audio inputs can be specified and mapped from multiple sources. This enables you to, for instance, combine video from source 1 with two audio streams from indexes 1 and 3 in source 2. Additionally, input can undergo channel manipulations, such as selecting or merging specific audio channels.
An AVC executor can take the form of a single instance, such as a NativeWaves AVCoder, or a virtualized version, which can be hosted as a Docker container in the cloud, supporting diverse hardware interfaces like Nvidia GPU encoding cards.
Additionally, an AVC executor can function within a larger cluster, comprising both hardware devices and a fleet of virtual executors running as Docker containers in the cloud.
Within the cluster, each instance can be configured with specific settings, allowing for various options. For instance, the cloud scheduler may have the flexibility to freely schedule tasks on an executor or only when its requirements are tied to a particular instance. For example, in a cluster with multiple executors, one might be designated for specific SDI-related tasks to ensure that other digital flows do not impact the performance of this hardware-bound machine.