Reading up on ffmpeg
8 deep · digging since dec 19, 25
- Hugo ARNAL
Students turned a pharmacy cross into a programmable display using a custom C++ library, FFmpeg, ImageMagick, and Pillow to show images and video.
- FFmpeg API - Process Your Videos Online
Rendi provides a REST API to run FFmpeg commands on its cloud infrastructure without installation, auto-scaling and supporting long run times.
- GitHub - heygen-com/hyperframes: Write HTML. Render video. Built for agents.
HyperFrames is an open-source framework that turns HTML into deterministic MP4 videos, with AI agent skills and CLI tooling.
- FFmpeg 8.1 | Hacker News
The FFmpeg 8.1 release introduces Vulkan compute-based codecs, D3D12 H.264 and AV1 encoders, Rockchip hardware encoding, and EXIF metadata parsing, as detailed in a companion Khronos blog post.
- Fizzy Design Evolution: A Flipbook from Git
The article describes a technical process extracting Fizzy's daily git screenshots and scoring a flipbook video with Claude-composed music from the app's own audio samples.
Takes
OPUS 5.5 IS THE ONLY MOTION DESIGNER YOU NEED this launch video cost $0 and is pure code everyone else on X claims the same shit, then sends you to their website or mcp this is completely free with 0 external tools steal the prompt and try it in your claude ↓ <inputs> Ask me for: a one-word brand name for the wordmark (a verb works best), 9 to 12 high-res photos, a royalty-free song around 120 BPM with a drop and a quiet breakdown (Mixkit, free for commercial use), and a free stock clip of a plain wall with moving plant shadows (Pexels). </inputs> <direction> An Apple-keynote launch film, 2D only, one continuous take. Every scene is made out of the previous one: nothing fades, blurs or cuts. Objects change shape instead: text rises out of a mask line, icons pop from zero on a spring, bars draw across, pages push, and a black shape floods the whole frame and contracts into the next scene. Warm off-white canvas, black UI, iOS 26 liquid glass over the photos. Archivo (wdth 125, weight 800) for the wordmark, Geist for UI. A cursor drives every change with real clicks, drags and long-presses. The camera zooms screen-studio style so each moment fills the square, and the cursor scales with it. Banned: crossfades, blur-ins, brightness "developing", 3D flips, particles, glows, holds longer than 1s, anything that looks like a template. </direction> <structure> 120 BPM, 54 beats, something happens on every beat. Open: the wordmark squeezes into its own period like an accordion, the dot grows into a black pill, a label rises inside it. Click: six iris blades close over the label and snap open onto a photo. The circle becomes a square, shrinks, the grid unfolds from behind it like a paper map (center, plus, corners), reflows into a bento, and a click zooms into one tile, landing exactly on the drop. Glass: a glass word pops in letter by letter, melts into a droplet that stretches into a glass toolbar. The adjust icon turns it into a slider. Dragging relights the photo from day to golden hour (two aligned shots), and the knob turns into a glass lens while held. It lifts into a glass orb, the next photo opens inside it as a circle, and the orb expands into a lock screen: glass clock digits, date, and a home bar that stretches into a glass music player. Stage: the lock screen pulls back into a phone (the bezel grows out of the screen edge). The Dynamic Island stretches like liquid, pinches off, flies over and grows into a Mac window that rolls up like a blind. Long-press the wallpaper, drag it onto a Safari tab, the page pushes in, drop it and it becomes the hero of a landing page. Scroll: the hero morphs into a framed print on a product card, with the mat and molding growing out of the photo's edge. Pick a frame color (it paints across) and a size, then the nav button flies down into "Order print". Order: one black shape keeps morphing: Ordered ✓ → Printing % → On its way (a van on a route) → Delivered ✓. Wall: the delivered circle floods the frame edge to edge, holds black for a beat, and contracts into the framed print hanging on the real wall footage. The same iris opens onto the print, closes again, the frame floods the screen and contracts into the pill → the dot → the letters spring back out, landing on the beat return. Last frame = first frame. </structure> <build> 1. One HTML file, square 1440x1440. Every style is computed from time inside an async seek(t): no CSS transitions, no timers, no state between frames. 2. Springs are closed-form step responses. A value with many targets is the sum of one spring per change, so it stays a pure function of time. 3. Liquid glass: each glass element holds its own clone of the scene behind it, filtered with an SVG feImage displacement map (a rounded-rect distance field) through three feDisplacementMaps at slightly different scales for chromatic edges, plus a rim light. Glass letters: a canvas distance field per glyph gives the map, mask and highlights. 4. Goo: blur + alpha threshold, then composite the source atop it so the glass stays sharp inside. 5. Iris: 6 blades around a hexagonal aperture. Each blade is its two vertices, both edge extensions and the SHORT arc between them. 6. Wordmark squeeze: every letter moves toward the dot by the same factor and its drawn width follows (narrow the wdth axis, scale the rest), so the letters stay touching. 7. Footage: re-encode all-intra (ffmpeg -g 1), load it as a blob URL, await 'seeked' before drawing each frame. 8. Sound: a downloaded SFX for every event (Mixkit), never synthesized, each placed by its measured peak. The song starts on a downbeat: the zoom lands on the drop, the wall sits in the breakdown, the wordmark returns with the beat. Loudnorm to -14 LUFS. 9. Render with Playwright: 4 subframes per frame blended with ffmpeg tmix, 60fps. Check one frame per beat, then scan for single-frame pops (frame-difference spikes 3x their neighbours). </build> <gotchas> backdrop-filter: url() misreads displacement maps in Chromium, so clone the scene instead. A flood must overscale past the corners and take about 0.3s, or half the screen changes in one frame. A child with visibility: visible shows through a hidden parent, so use inherit. Text that swaps inside a morphing shape needs its own mask. python http.server can't range-seek video, so use the blob URL. </gotchas> <start> Ask me for the inputs, then show me the beat map and 4 stills (open, glass, stage, wall) before you write the full film. </start>
@twoclipping
Lots of people asked how I used Fable to edit its own launch video so I made a video about that! TLDR it wrote a lot of code & tool calls to use transcription services, ffmpeg, do colorgrading, use the figma mcp, make remotion UI and render it. I didn't touch a video editor.
@trq212
Two recent examples of giving Claude Code a laboratory to find the optimal path through some tedious engineering problems: --- 1. Extracting markdown from email newsletters I added an email capture feature to @shioriapp so you can forward newsletters into your library. But turns out emails suck to parse. Crappy junk headers and footers, tracking pixels, nasty redirect links, long forward chains, etc. So I poked around at some libraries to help with this, but they were all pretty mid. I wondered if I could throw an LLM at the problem and pay a small tax to let computers figure it out. Then I remembered: I am not smarter than a computer at figuring this out! So I told Claude to build a lab for itself to find the highest quality combination of tools and processing steps to extract meaningful content from a wide range of real emails pulled from my inbox. Claude spun up its own benchmarking system and ran through dozens of tests with different filtering mechanisms, html parsing libraries, pixel tracking detection, and header/footer removal. For each combination, Claude also tested where in the pipeline an LLM step helped most, including trying different prompts and models. I then had Claude build an evaluation system to determine if it was able to get the right content out of complex email markup. And it worked! After 15 minutes we walked away with a very fast and simple content-extraction pipeline (spoiler: adding a fast/cheap LLM as the final step had more impact than anything else we tried. Throwing money at the problem works, sometimes!) --- 2. Saving money on audio transcription I also added an audio upload → transcription feature on Shiori, which is pretty cool if you're the type of nerd that wants to upload podcasts into your bookmark library. Surely there are other people who do this...*glances around* But the problem is that most speech-to-text models are very expensive and usually charge per minute of audio processed. Charge by the minute you say? Oh...interesting... So what if...I could just make the audio shorter? I could try trimming silence, or try speeding up the playback. But how much to trim? And how much to speed up? Computers to the rescue! I asked Claude to build itself an audio lab where it could play freely with tools like ffmpeg to find the optimal point of reducing audio minutes without sacrificing transcription quality. It tried trimming silence with varying degrees of intensity, it tried compressing the audio files, and it tried adjusting the playback speed. And of course it ran every possible combination of these optimizations while evaluating its accuracy based on a predefined benchmark of the original transcript. It was wild to watch, and we ended up finding that trimming silence almost never worked because the moment it clips the edge of a word, accuracy plummets. From there Claude worked to find the exact playback speed where accuracy wasn't lost. The result: a 47% reduction in costs for all audio uploads in the system (we found that ~1.75x speedup was the sweet spot for LLM comprehension). --- I'm continually impressed with Claude's ability to create its own benchmarking systems and rip through a series of hypotheses about how to achieve some hard-to-define optimal outcome. I recommend trying this when you're deep into a problem looking for an optimal path: give the agent a laboratory.
@brian_lovin