codec-from-scratch

command module
v0.0.0-...-84c05c8 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 7, 2023 License: Apache-2.0 Imports: 6 Imported by: 0

README

Video Encoding from Scratch

Big fan of video? Have questions or want to learn more? Join us on Discord!

Ever wondered how a video encoder works? This is a simple video encoder that walks through building a video encoder from scratch to achieve a 90% compression ratio!

https://user-images.githubusercontent.com/511342/203627486-611066cd-f8e5-48c1-863b-eab9529ff90d.mp4

Start by opening up main.go. You can run the code by running cat video.rgb24 | go run main.go and you should see this as output

$ cat video.rgb24 | go run main.go
2022/11/23 13:54:03 Raw size: 53996544 bytes
2022/11/23 13:54:03 YUV420P size: 26998272 bytes (50.00% original size)
2022/11/23 13:54:03 RLE size: 13592946 bytes (25.17% original size)
2022/11/23 13:54:15 DEFLATE size: 5457415 bytes (10.11% original size)

The actual encoding is done in about 120 lines of code. This is meant to be a didactic exercise rather than a comprehensive guide, but maybe if there's interest we could add more features that appear in modern video codecs.

Sample video from Ketut Subiyanto.

Other languages

Documentation

The Go Gopher

There is no documentation for this package.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL