gitmyhub

digital_video_introduction

Jupyter Notebook ★ 16k updated 2y ago

A hands-on introduction to video technology: image, video, codec (av1, vp9, h265) and more (ffmpeg encoding). Translations: 🇺🇸 🇨🇳 🇯🇵 🇮🇹 🇰🇷 🇷🇺 🇧🇷 🇪🇸

A self-paced tutorial that teaches how digital video works, from pixels and color encoding to compression codecs and streaming, with hands-on Docker exercises using real ffmpeg tools.

PythonJupyter NotebookDockerffmpegmediainfosetup: moderatecomplexity 2/5

digital_video_introduction is a self-paced tutorial that teaches the fundamentals of digital video — how images and video work, how codecs compress them, and how streaming services deliver them over the internet. It is aimed at software developers and engineers new to the area, but the author tries to make it readable for anyone, using simple vocabulary, diagrams, and hands-on exercises.

The material walks through the topic in the order you would need to understand it. It starts with basic terminology — what an image is (a 2D matrix of pixels), how colour is encoded with red/green/blue planes, what bit depth, resolution and aspect ratio mean — then moves into how video squeezes out redundant data: chroma subsampling, the different frame types (I, P and B), and the temporal and spatial prediction tricks codecs use. From there it builds up a generic video codec step by step (partitioning, prediction, transform, quantization, entropy coding such as VLC and arithmetic coding, and bitstream formatting), with examples from H.264, H.265, VP9 and AV1. The final sections cover online streaming, progressive download versus adaptive streaming, and content protection.

You would use this repository if you are getting started in video engineering, working on a product that touches encoding or streaming, or curious about how video compression works. Many sections have hands-on exercises that run inside Docker containers, using bundled ffmpeg and mediainfo tools and a Jupyter server to explore images and frames interactively.

The project is BSD-3-Clause licensed and ships translations in Chinese, Japanese, Italian, Korean, Russian, Brazilian Portuguese and Spanish.

Where it fits