What Is ffmpeg and Why Do Downloaders Need It?
In short
ffmpeg is a free, open-source toolkit to record, convert and stream audio and video. YouTube downloaders need it to merge the separate video and audio streams behind 1080p and 4K, to cut sections and to convert formats. B-ROLL downloads ffmpeg on first launch and uses it for merging, clips, audio formats and ProRes or DNxHR conversion.
On this page
What does ffmpeg do in a YouTube download?
ffmpeg is a free, open-source toolkit to record, convert and stream audio and video. In a YouTube download, ffmpeg is the part that turns fetched streams into the file you import: it merges video and audio, cuts sections, converts audio and re-encodes video.
The About FFmpeg page lists what the framework can do: “decode, encode, transcode, mux, demux, stream, filter and play”. The project ships three command-line tools: ffmpeg, ffplay and ffprobe.
The job table lists each step of a B-ROLL download and the tool that performs it.
| Job | Tool that does it | Why |
|---|---|---|
| Read the format list and fetch the chosen streams | yt-dlp | yt-dlp knows how YouTube delivers video and picks the best streams for your quality cap |
| Run YouTube’s JavaScript challenges | Deno, called by yt-dlp | As of September 2026, yt-dlp needs a JavaScript runtime for full YouTube support |
| Merge video and audio into MP4, MKV or WEBM | ffmpeg, called by yt-dlp | 1080p and 4K arrive as a video-only stream plus a separate audio stream |
| Cut a section between in and out points | yt-dlp with ffmpeg | Only the range you marked is written; a fast cut snaps to keyframes, an exact frame cut re-encodes around the cuts |
| Convert audio to MP3, M4A, WAV, FLAC or OPUS | ffmpeg, called by yt-dlp | YouTube’s own audio is usually Opus or AAC, so every other format is a conversion |
| Embed subtitles in the file | ffmpeg, run by B-ROLL | Tracks are muxed as mov_text in MP4 and MOV, as SRT in MKV; not for WEBM or clips, where .srt files stay beside the video |
Convert to a ProRes or DNxHR .mov |
ffmpeg, run by B-ROLL | Intraframe codecs scrub and cut smoothly on a timeline |
| Measure the real bitrate of the saved file | ffmpeg, run by B-ROLL | ffmpeg reads the duration, and B-ROLL divides the file size by it |
The conversion rows are why B-ROLL exists. On Ema Zamboni’s own DaVinci Resolve Studio timeline on Windows 11, 4K60 AV1 footage downloaded from YouTube was heavy to play back, and AV1 or VP9 downloads crashed Resolve at times.
Who makes ffmpeg and how is it licensed?
ffmpeg is made by the FFmpeg project, a community-driven open-source effort that takes patches, pull requests and bug reports from anyone. The About page says the code compiles and passes the project’s tests on Linux, macOS, Windows and the BSDs, among other systems.
ffmpeg’s license depends on how a build is configured. The FFmpeg license and legal page says ffmpeg is licensed under the LGPL version 2.1 or later, and that when optional parts covered by the GPL version 2 or later are used, the GPL applies to all of ffmpeg.
The ffmpeg that B-ROLL uses is the win64 GPL build published in yt-dlp’s FFmpeg-Builds repository on GitHub, and the app credits it as FFmpeg under the GPL v2 or later. B-ROLL itself is a free app built on open-source tools. Every component and its license is listed on the open-source credits and licenses page.
Why do YouTube downloaders need ffmpeg?
YouTube downloaders need ffmpeg because the high-resolution streams do not arrive as one ready file. As of September 2026, YouTube serves 1080p, 1440p and 4K as video-only streams with the audio in a separate stream, and something has to join them.
Joining two streams is a remux: ffmpeg copies the compressed video and audio into one container, so the merge costs no quality. A downloader without ffmpeg falls back to a combined stream, which is why some tools stop at 360p or 720p or save a 1080p file with no sound. The symptoms and fixes are in YouTube download only 360p or 720p? How to get 1080p and 4K.
Remuxing and transcoding are the two kinds of ffmpeg job, and the difference is what happens to the picture.
| ffmpeg job | What ffmpeg does | Picture quality | What the editor gets |
|---|---|---|---|
| Remux | Copies the compressed streams into a new container: MP4, MKV or WEBM | Unchanged, no re-encode | The same codec YouTube used, often AV1 or VP9 |
| Transcode | Decodes the picture and encodes it again in a new codec, such as ProRes or DNxHR | Re-encoded, no detail added | A larger intraframe file that scrubs and cuts smoothly |
Converting a YouTube download to ProRes or DNxHR does not add detail; it makes the file cheap to scrub and cut in an editor.
yt-dlp, the downloader that calls ffmpeg for these jobs, is explained in what is yt-dlp and is it safe to use.
What does ffmpeg do inside B-ROLL?
B-ROLL uses ffmpeg twice: yt-dlp calls it to merge, cut and convert audio during the download, and B-ROLL runs it again afterwards for the ProRes or DNxHR conversion. B-ROLL downloads a single ffmpeg.exe on first launch and keeps it in %LOCALAPPDATA%\Broll. How the app’s own license relates to ffmpeg and the other tools it is built on is answered in the B-ROLL FAQ.
The edit-ready path works in three steps:
- yt-dlp merges the best video and audio streams into an MKV master.
- ffmpeg converts the master into a
.movwith the same name, keeping the source resolution and frame rate, with uncompressed 16-bit PCM audio. - B-ROLL deletes the MKV after a successful conversion, or keeps it if the conversion fails.
For ProRes, B-ROLL tries ffmpeg’s prores_aw encoder first, then prores_ks, then plain prores, and the first two write 10-bit 4:2:2. The ffmpeg codecs documentation describes the ProRes encoders and the private options of prores_ks. For DNxHR, B-ROLL uses ffmpeg’s dnxhd encoder with the DNxHR profiles LB, SQ and HQ at 8-bit 4:2:2, and HQX at 10-bit for 10-bit sources.
B-ROLL picks the lightest tier that still preserves the source and runs one conversion at a time on every CPU core. The tier rule and the file sizes it produces are in download YouTube videos in ProRes or DNxHR.
What is Deno and why does B-ROLL install it too?
Deno is an open-source runtime for JavaScript, TypeScript and WebAssembly, described in the Deno runtime documentation.
B-ROLL installs Deno for yt-dlp, not for ffmpeg. As of September 2026, yt-dlp needs an external JavaScript runtime for full YouTube support, and Deno is the one it uses by default. B-ROLL downloads deno.exe from Deno’s GitHub releases on first launch, and the log confirms it with ✓ JS runtime ready (no more YouTube warnings).
The three tools are updated differently. B-ROLL updates yt-dlp to the latest nightly build at every launch, while ffmpeg and Deno stay as installed until you click Reinstall tools in the sidebar Advanced panel, which downloads both again. The whole tool set compared with the command line is in the ways to download YouTube videos, compared hub.
What does “ffmpeg not found” mean?
“ffmpeg not found” means the downloader looked for ffmpeg.exe in its own folder and on the Windows PATH and found nothing. Without ffmpeg, a command-line download still runs, but it cannot merge separate streams, so it saves a combined low-resolution format or stops with an error.
B-ROLL never asks you to install ffmpeg, but its TOOLS status in the sidebar Advanced panel tells you when ffmpeg is absent. The messages to look for:
ffmpeg: missingin TOOLS, or⚠ ffmpeg download failed: <reason>in the log: the first-launch download did not finish. Click Reinstall tools.JS runtime: missingin TOOLS: an ffmpeg was already on your PATH at first launch, so B-ROLL used it and skipped the Deno download. Reinstall tools fetches B-ROLL’s own ffmpeg and Deno.⚠ No DNx encoder available in ffmpeg; keeping MKV.in the log: the ffmpeg in use could not write DNxHR, so the MKV master stays. Reinstall tools replaces it.
A download that sits near the end without an error is usually ffmpeg at work, merging streams or converting to ProRes or DNxHR. What to check before you stop it is in YouTube download stuck at 0% or 99%? What to check.
Frequently asked questions
Is ffmpeg safe?
Yes. The real risk is a repackaged copy from an unknown download site, not ffmpeg itself, which a community project develops in public. B-ROLL fetches its ffmpeg from yt-dlp's FFmpeg-Builds repository on GitHub and never from a third-party mirror, so you do not have to pick a download site yourself.
Do I need to install ffmpeg for B-ROLL?
No. B-ROLL downloads ffmpeg.exe on first launch, from the win64 GPL build in yt-dlp's FFmpeg-Builds on GitHub, and keeps it in its own data folder under %LOCALAPPDATA%. You never edit your PATH. If an ffmpeg is already on your PATH at first launch, B-ROLL uses that copy instead, and Reinstall tools in the sidebar Advanced panel fetches its own.
Can ffmpeg make ProRes on Windows?
Yes. ffmpeg ships its own ProRes encoders, named prores, prores_aw and prores_ks, and they run on Windows without any Apple software. B-ROLL uses them to write 10-bit 4:2:2 ProRes files in a .mov container, and uses ffmpeg's dnxhd encoder for DNxHR. How B-ROLL picks the tier is explained in download YouTube videos in ProRes or DNxHR.
Sources
- About FFmpeg ffmpeg.org
- ffmpeg codecs documentation ffmpeg.org
- FFmpeg License and Legal Considerations ffmpeg.org
- Deno runtime documentation docs.deno.com