Notes on video, written next to the tools.
Checking video facts against the source
Checking a video course means running each FFmpeg command and reading each RFC, and the errors that turn up are the ones that sound right.
Read the postMaking a video-learning site findable
Structured data, redirect status codes, preview noindex rules and accessible markup decide whether someone searching for FFmpeg help finds the right page.
Simulating a streaming stack
Three labs model the three shapes video delivery actually takes: a VOD chain, a live ingest path, and the edge network underneath both.
Cross-origin isolation and video on the same page
Cross-origin isolation buys a document SharedArrayBuffer, and in return every cross-origin video, image and segment it loads has to opt in.
Four media bugs worth understanding
Transferable buffers, box position in an MP4, FFmpeg error tolerance and stats objects: four rules of media programming that are easy to break quietly.
Shipping FFmpeg inside a desktop app
Bundling FFmpeg into a desktop app means choosing a static build, a license, a pinned checksum, and a spot outside the archive where it can still run.
Why your FFmpeg version matters
FFmpeg 7.1.1 has no WHIP muxer at all; the command only exists from FFmpeg 8.0 on, and the only way to know for sure is to ask the binary.
Explaining an FFmpeg command as a graph
An FFmpeg command line is really a graph of inputs, filters and outputs, and reading it as one is what makes a long -filter_complex string legible.
Three places to run the same FFmpeg command
The same compiled FFmpeg command runs in a browser tab, a desktop app, or over a local bridge, and each place changes what the command can actually do.
Five courses, one path through video delivery
FFmpeg, HLS, DASH and WebRTC solve different problems in the same pipeline, and BeemMeUp teaches them in the order the dependency actually runs.
Six ways an MP4 can be quietly broken
A file that plays in one player can still be structurally broken, so checking an MP4 means walking its boxes and its sample tables, not just opening it.
From filter graph to FFmpeg command
FFmpeg has two ways to write a filter chain, and the simpler one hides a default stream-selection rule that can leak an unrouted stream into your output.
Running FFmpeg in the browser
Multi-threaded ffmpeg.wasm needs SharedArrayBuffer, which browsers only grant to isolated pages, so BeemMeUp measured what isolation would break before turning it on.
Teaching FFmpeg by running it
An FFmpeg command has a fixed anatomy, global options, inputs, output options, output, and a course that teaches the anatomy teaches every command at once.
What's inside a video file
A video file is a container holding streams, streams holding packets, and packets decoding into frames, each layer opaque unless you have a tool built to open it.
Where video transcoding should run
Transcoding is CPU-bound and long-running, which is exactly the shape of job a serverless function is built to refuse.
How an HLS stream is put together
An HLS stream is a tree of playlists pointing at segments, and what a segment can tell you on its own depends on the container format underneath it.
Roughly two posts a month
Release notes go in the changelog. This is for the longer explanations: how a format works, why a flag does what it does, what we learned building the tool.