# leandromoreira/digital_video_introduction

**Attribution required: if you use, quote, or summarise this content, you must credit and link back to [awesome-repositories.com](https://awesome-repositories.com/repository/leandromoreira-digital-video-introduction).**

16,232 stars · 1,380 forks · Jupyter Notebook · BSD-3-Clause

## Links

- GitHub: https://github.com/leandromoreira/digital_video_introduction
- Homepage: https://github.com/leandromoreira/introduction_video_technology
- awesome-repositories: https://awesome-repositories.com/repository/leandromoreira-digital-video-introduction.md

## Topics

`adaptive-streaming` `arithmetic-coding` `audio` `av1` `bitstream` `codec` `compression` `dash` `ffmpeg` `frame-types` `guide` `h264` `h265` `handson` `hls` `learning` `tutorial` `video` `video-codec` `vp9`

## Description

This project is an educational suite and technical guide designed for mastering video codecs and signal processing. It provides a structured curriculum through an engineering course, interactive labs, and tutorials focused on the fundamental principles of video compression and digital signal processing.

The resource includes a technical guide for analyzing specific codecs like AV1, VP9, and H.265. It distinguishes itself by providing a containerized media lab, which ensures a consistent development environment for experimenting with video technology tools and notebooks.

The project covers a wide range of video engineering capabilities, including image processing for color modeling and chroma subsampling, and deep bitstream analysis for parsing encoding formats. It also encompasses video processing workflows such as transcoding, multiplexing, and the generation of HLS streaming playlists, as well as quality assessment using visual metrics.

The educational content is delivered primarily through Jupyter Notebooks and supported by Docker-based lab environments.

## Tags

### Education & Learning Resources

- [Video Compression Curricula](https://awesome-repositories.com/f/education-learning-resources/educational-lessons/video-compression-curricula.md) — Offers a structured engineering course and theoretical lessons on the fundamental principles of video compression.
- [Video Courses](https://awesome-repositories.com/f/education-learning-resources/educational-resources/reference-and-media/tutorials-media-curated-lists/interactive-learning-media/video-courses.md) — Provides a structured video course and curriculum for mastering video engineering with FFmpeg.
- [Technical Reference Guides](https://awesome-repositories.com/f/education-learning-resources/technical-reference-guides.md) — Includes a detailed technical reference guide for analyzing AV1, VP9, and H.265 codec specifications.

### Part of an Awesome List

- [Digital Signal Processing](https://awesome-repositories.com/f/awesome-lists/devtools/digital-signal-processing.md) — Provides a practical tutorial on digital signal processing, focusing on frequency domains and color models.
- [Streaming and Video Analysis](https://awesome-repositories.com/f/awesome-lists/media/streaming-and-video-analysis.md) — Examines video file properties and metadata to understand codecs, containers, and stream characteristics. ([source](https://github.com/leandromoreira/digital_video_introduction/tree/master/s))
- [Frequency-Domain](https://awesome-repositories.com/f/awesome-lists/devtools/feature-extraction/frequency-domain.md) — Uses frequency-domain transforms to isolate and manipulate periodic patterns and noise in images. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/image_transform_frequency_domain.ipynb))
- [Raster Image Analysis](https://awesome-repositories.com/f/awesome-lists/security/image-and-metadata-analysis/raster-image-analysis.md) — Calculates technical raster properties including resolution and bit depth to determine data requirements. ([source](https://github.com/leandromoreira/digital_video_introduction))

### Graphics & Multimedia

- [Bitstream Analysis](https://awesome-repositories.com/f/graphics-multimedia/bitstream-analysis.md) — Provides tools and guides for examining video bitstreams to understand how data is packed and quantized.
- [Sampling Implementations](https://awesome-repositories.com/f/graphics-multimedia/chroma-subsampling-optimizations/sampling-implementations.md) — Provides a practical implementation of chroma subsampling to reduce data requirements based on human vision. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/README.md))
- [Color Space Definitions](https://awesome-repositories.com/f/graphics-multimedia/color-space-definitions.md) — Explains YCbCr color space definitions and their use in separating luminance from chrominance for efficient encoding.
- [Discrete Cosine Transforms](https://awesome-repositories.com/f/graphics-multimedia/discrete-cosine-transforms.md) — Implements Discrete Cosine Transforms to convert spatial pixels into frequency components for lossy video compression.
- [Inter-Frame Prediction](https://awesome-repositories.com/f/graphics-multimedia/inter-frame-prediction.md) — Implements temporal redundancy reduction using motion estimation and vectors to reference differences between frames. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/README.md))
- [Intra-Frame Prediction](https://awesome-repositories.com/f/graphics-multimedia/intra-frame-prediction.md) — Reduces spatial redundancy by predicting pixel values from neighboring blocks within a single video frame. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/README.md))
- [Image Processing](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/image-processing.md) — Provides practical exercises in manipulating pixel arrays and implementing chroma subsampling.
- [Color Space Converters](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/image-processing/color-space-converters/color-space-converters.md) — Implements conversions between RGB and YCbCr color spaces to separate luminance and chrominance for video processing. ([source](https://github.com/leandromoreira/digital_video_introduction))
- [Motion Estimation](https://awesome-repositories.com/f/graphics-multimedia/motion-vector-calculation/motion-estimation.md) — Identifies and encodes changes between sequential video frames using block motion compensation and motion vectors. ([source](https://github.com/leandromoreira/digital_video_introduction))
- [Quantization Processes](https://awesome-repositories.com/f/graphics-multimedia/quantization-processes.md) — Provides exercises on dividing frequency coefficients by a quantization matrix to simulate precision loss and compression.
- [Quantization Processing](https://awesome-repositories.com/f/graphics-multimedia/quantization-processing.md) — Reduces the precision of frequency coefficients by dividing values by a quantization matrix for lossy compression. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/README.md))
- [Spatio-Temporal Prediction](https://awesome-repositories.com/f/graphics-multimedia/spatio-temporal-prediction.md) — Teaches how to reduce video redundancy using intra-frame spatial prediction and inter-frame temporal motion estimation.
- [Video Stream Extraction](https://awesome-repositories.com/f/graphics-multimedia/streaming-distribution/streaming-broadcasting/media-streaming/video-streaming/video-stream-extraction.md) — Extracts detailed metadata and stream information from video files to analyze technical properties. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md))
- [Video Converters](https://awesome-repositories.com/f/graphics-multimedia/video-converters.md) — Converts video from one codec to another and adjusts group of pictures structures and keyframe intervals. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md))
- [FFmpeg Transcoders](https://awesome-repositories.com/f/graphics-multimedia/video-production/transcoding-engines/ffmpeg-transcoders.md) — Uses FFmpeg for transcoding, multiplexing, and segmenting video files as part of a technical curriculum.
- [Bitrate Control Strategies](https://awesome-repositories.com/f/graphics-multimedia/bitrate-control-strategies.md) — Allows modifying the data rate of video using constant or variable bitrate constraints to control file size. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md))
- [Frame Type Configurations](https://awesome-repositories.com/f/graphics-multimedia/frame-type-configurations.md) — Provides capabilities to configure frame types to balance playback seeking speed and compression efficiency. ([source](https://github.com/leandromoreira/digital_video_introduction))
- [Internal Image Representations](https://awesome-repositories.com/f/graphics-multimedia/internal-image-representations.md) — Models digital images as multi-dimensional arrays to demonstrate pixel intensity and color channel storage. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/image_as_3d_array.ipynb))
- [Color Space Converters](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/image-processing/color-space-converters.md) — Supports converting image representations between RGB and YCbCr color spaces to analyze color mapping. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/README.md))
- [Chunked Video Processing](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/media-processing-workflows/video-transformation-enhancement/chunked-video-processing.md) — Splits a video into multiple smaller chunks based on a specified time duration. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md))
- [Segment Joining](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/media-processing-workflows/video-transformation-enhancement/chunked-video-processing/segment-joining.md) — Merges multiple video chunks into a single contiguous file to restore a full sequence. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md))
- [Video Processing Tools](https://awesome-repositories.com/f/graphics-multimedia/media-processing-analysis/media-manipulation/video-processing-tools.md) — Provides command-line tools to cut, download, and encode video clips to modify media properties. ([source](https://github.com/leandromoreira/digital_video_introduction/tree/master/s))
- [Perceptual Quality Metrics](https://awesome-repositories.com/f/graphics-multimedia/perceptual-quality-metrics.md) — Compares visual quality between original and transcoded files using VMAF analysis. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md))
- [Stream Demuxing](https://awesome-repositories.com/f/graphics-multimedia/stream-demuxing.md) — Extracts the audio stream from a video container and saves it as a separate audio file. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md))
- [Stream Multiplexing](https://awesome-repositories.com/f/graphics-multimedia/stream-multiplexing.md) — Combines separate audio and video streams into a single container file. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md))
- [HLS Streaming](https://awesome-repositories.com/f/graphics-multimedia/streaming-distribution/streaming-broadcasting/media-streaming/video-streaming/hls-streaming.md) — Implements HLS segmented delivery by splitting video files into chunks and generating m3u8 playlists.
- [Playlist Generators](https://awesome-repositories.com/f/graphics-multimedia/streaming-distribution/streaming-broadcasting/media-streaming/video-streaming/hls-streaming/playlist-generators.md) — Generates video-on-demand streams and playlists using specific chunk sizes and resolution variants. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md))
- [Video Quality Metrics](https://awesome-repositories.com/f/graphics-multimedia/video-quality-metrics.md) — Implements visual quality assessment by comparing original and transcoded files using VMAF metrics.
- [Redundancy Analysis](https://awesome-repositories.com/f/graphics-multimedia/video-stream-compression/redundancy-analysis.md) — Analyzes frame differencing versus motion estimation to demonstrate how redundant data is removed from video streams. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/frame_difference_vs_motion_estimation_plus_residual.ipynb))
- [Video Transmuxing](https://awesome-repositories.com/f/graphics-multimedia/video-transmuxing.md) — Changes the container format of a video stream without re-encoding the underlying audio and video codecs. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md))

### Hardware & IoT

- [Media Bitstream Analyzers](https://awesome-repositories.com/f/hardware-iot/rf-signal-demodulation/bitstream-decoders/media-bitstream-analyzers.md) — Deconstructs network abstraction layer units and parameter sets to analyze video encoding data packing. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/README.md))
- [Video Parameter Parsers](https://awesome-repositories.com/f/hardware-iot/rf-signal-demodulation/bitstream-decoders/video-parameter-parsers.md) — Enables parsing of video bitstreams to extract sequence parameters and profile levels from network abstraction layer units. ([source](https://github.com/leandromoreira/digital_video_introduction))

### Scientific & Mathematical Computing

- [Entropy Coding Algorithms](https://awesome-repositories.com/f/scientific-mathematical-computing/entropy-coding-algorithms.md) — Demonstrates lossless data encoding using entropy coding algorithms to remove statistical redundancy from quantized video data.
- [Raw YUV Exporters](https://awesome-repositories.com/f/scientific-mathematical-computing/prefix-calculations/bitstream-framing-converters/video-bitstream-container-rewriters/raw-yuv-exporters.md) — Generates raw YUV color space files to perform low-level analysis of video data. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md))
- [Educational Code Notebooks](https://awesome-repositories.com/f/scientific-mathematical-computing/research-analysis-workflows/educational-code-notebooks.md) — Provides a collection of interactive Jupyter Notebooks for exploring DCT, quantization, and entropy coding.

### Artificial Intelligence & ML

- [Quantization Artifact Analysis](https://awesome-repositories.com/f/artificial-intelligence-ml/machine-learning/infrastructure/model-training-and-tuning/fine-tuning-and-customization/model-fine-tuning/quantized-fine-tuning/quantization-error-mitigation/precision-loss-simulation/quantization-artifact-analysis.md) — Simulates the mapping of continuous signal values to discrete levels to demonstrate precision loss and visual artifacts. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/uniform_quantization_experience.ipynb))

### Networking & Communication

- [ISOBMFF Multiplexers](https://awesome-repositories.com/f/networking-communication/stream-multiplexers/isobmff-multiplexers.md) — Provides practical implementations of multiplexing media tracks into ISO Base Media File Format containers.

### System Administration & Monitoring

- [Visual Debugging Overlays](https://awesome-repositories.com/f/system-administration-monitoring/diagnostic-tools/visual-debugging-overlays.md) — Produces videos with visual overlays that display histograms, macroblock types, or motion vectors for debugging. ([source](https://github.com/leandromoreira/digital_video_introduction/blob/master/encoding_pratical_examples.md))
- [Lab Environments](https://awesome-repositories.com/f/system-administration-monitoring/lab-environments.md) — Ships a containerized media lab environment for hands-on experimentation with video technology.
- [Containerized Learning Labs](https://awesome-repositories.com/f/system-administration-monitoring/lab-environments/containerized-learning-labs.md) — Ships a Docker-based media lab providing a consistent development environment with pre-installed notebooks and video tools.
