Repolode
leandromoreira

leandromoreira/digital_video_introduction

A hands-on, beginner-friendly introduction to digital video concepts, covering color, frame types, codecs such as H.264, H.265, VP9 and AV1, and streaming, with FFmpeg examples.

Stars
16,380
Forks
1,381
Open issues
19
Last commit
2 days ago

What is it?

This is a gentle, hands-on guide to how digital video works, aimed at software developers but written so that anyone can follow it. It walks through basic terminology such as pixels, resolution, aspect ratio and bit rate, then explains how video is compressed by removing redundancy in color, time and space.

The guide covers chroma subsampling, I, P and B frames, motion estimation, intra prediction, transforms, quantization and entropy coding, showing how a generic codec works and how H.264, H.265, VP9 and AV1 differ. A later section covers online streaming, including progressive download, adaptive streaming and content protection.

Many sections include runnable examples. They use containerized FFmpeg and mediainfo commands, along with Jupyter notebooks that visualize image arrays, DCT coefficients and motion vectors. The project is translated into several languages.

Key features

  • 01Explains core concepts such as color models, YCbCr, chroma subsampling and bit rate.
  • 02Describes I, P and B frame types and how inter and intra prediction remove redundancy.
  • 03Walks through the main stages of a generic codec, from partitioning to bitstream format.
  • 04Compares H.264, H.265, VP9 and AV1 and the history behind them.
  • 05Includes hands-on FFmpeg and Jupyter examples for inspecting video files.

Use cases

  • Onboarding engineers who work on video players, streaming or media pipelines.
  • Learning how codec settings such as keyframe interval and B-frames affect file size.
  • Teaching a workshop or course on video compression fundamentals.

Quick start

  1. 1

    Clone the repository

    git clone https://github.com/leandromoreira/digital_video_introduction.git
  2. 2

    Enter the project folder

    cd digital_video_introduction
  3. 3

    Run the setup script (requires Docker)

    ./setup.sh

Things to know

  • Hands-on sections require Docker to be installed.
  • It is a learning guide rather than a software library or tool.

In collections

Topics

FAQ

What is digital_video_introduction?
A hands-on, beginner-friendly introduction to digital video concepts, covering color, frame types, codecs such as H.264, H.265, VP9 and AV1, and streaming, with FFmpeg examples. This is a gentle, hands-on guide to how digital video works, aimed at software developers but written so that anyone can follow it. It walks through basic terminology such as pixels, resolution, aspect ratio and bit rate, then explains how video is compressed by removing redundancy in color, time and space.
Is digital_video_introduction free to use? What license does it have?
digital_video_introduction is open source under the BSD-3-Clause license. Check the license terms before using it in commercial products.
Is digital_video_introduction still maintained?
Actively maintained. The last commit to digital_video_introduction was on Nov 5, 2026.
What can I use digital_video_introduction for?
Onboarding engineers who work on video players, streaming or media pipelines. Learning how codec settings such as keyframe interval and B-frames affect file size. Teaching a workshop or course on video compression fundamentals.
How do I install digital_video_introduction?
Clone the repository: git clone https://github.com/leandromoreira/digital_video_introduction.git Enter the project folder: cd digital_video_introduction Run the setup script (requires Docker): ./setup.sh
Where can I get digital_video_introduction?
The source code and installation instructions are on GitHub: https://github.com/leandromoreira/digital_video_introduction

Summary generated by AI from the project's README. GitHub stats refresh daily.

Related projects

Open-source CCTV and video surveillance software for Linux that captures, analyzes, records, and monitors IP, USB, and analog cameras.

Security#cctv#video-surveillance#security-camera
6K+10 this week1.3KPHPGPL-2.0Updated 2 days ago

Brotli is a generic-purpose lossless compression format and reference library, specified in RFC 7932, with compression ratios comparable to top general-purpose methods.

Other#compression#lossless-compression#codec
15.1K+22 this week1.4KTypeScriptMITWell maintainedUpdated 17 hours ago