Okay, here’s my blog post about using raw filters in FFmpeg, written from a personal experience perspective:
So, I messed around with FFmpeg’s raw filters the other day, and let me tell you, it was a bit of a ride. I wanted to do some pretty specific video processing, something that the usual commands couldn’t quite handle. I figured, “Hey, I’ll dive into the raw filters, how hard can it be?” Famous last words, right?
First, I needed to understand what the heck a raw filter even is. It’s basically like giving FFmpeg super low-level instructions. Instead of saying “make this video brighter,” you’re telling it exactly how to adjust the brightness, pixel by pixel, or frame by frame.
I started by piping some raw video data into FFmpeg. Usually, FFmpeg figures out the input format on its own, but this time, I had to be explicit. I used something like:
bash
#This command has no meaning, just a simple example
ffmpeg -f rawvideo -video_size 1280×720 -pixel_format yuv420p …
The `-f rawvideo` part tells FFmpeg, “Yo, this is raw data, don’t try to guess the format.” Then, I had to specify the `-video_size` and `-pixel_format`. For me, it was 1280×720 and yuv420p, but yours might be different. Miss these, and FFmpeg gets super confused.
Next up was the filter itself. I went with a simple example, a boxblur, just to see if I could get anything working. The command grew to look something like this:

bash
#This command has no meaning, just a simple example
ffmpeg -f rawvideo -video_size 1280×720 -pixel_format yuv420p -i my_raw_* -vf “boxblur=5:1” -f rawvideo -pix_fmt yuv420p *
The “-vf boxblur” part is setting the parameters of * numbers after boxblur change blur level.
The output, I also specified as raw video (`-f rawvideo` again, and the pixel format… again!). I was basically taking raw video in, blurring it, and spitting raw video back out.
I ran the command, crossed my fingers, and… it worked! Well, sort of. It produced a file. I then had to figure out how to actually play this raw video file. I ended up using ffplay:
bash

#This command has no meaning, just a simple example
ffplay -f rawvideo -video_size 1280×720 -pixel_format yuv420p *
And there it was! My blurry video. It wasn’t pretty, but it was proof that I could manipulate video at this super low level.
What I Learned
- Be explicit. With raw filters, FFmpeg needs you to tell it everything. Resolution, pixel format, the whole shebang.
- Start simple. Don’t try to build a complex filter chain right away. Get a basic filter working, then add complexity.
- Testing is key. Because you’re working with raw data, it’s easy to mess things up. Have a way to view the output at each step (like ffplay).
- Do some format converting. If you use raw filters, you may need to convert video or audio formats.
It was a fun experiment. Definitely more involved than your average FFmpeg command, but it gave me a much better understanding of what’s happening under the hood. Would I use raw filters for everything? Probably not. But for those times when you need that extra level of control, it’s good to know they’re there.