A Blazor WebAssembly library that enables video and audio processing directly in the browser using FFmpeg compiled to WebAssembly.
FFmpegBlazor is a .NET library that integrates ffmpeg.wasm into Blazor WebAssembly applications, enabling client-side video and audio processing. It allows developers to run FFmpeg commands directly in the browser for tasks like media conversion, recording, and streaming without requiring server-side processing. The library handles WebAssembly binary loading and provides a C# API to interact with FFmpeg's capabilities.
Blazor developers building web applications that require client-side media processing, such as video editors, audio converters, or streaming tools that need to operate entirely in the browser.
Developers choose FFmpegBlazor because it brings the full power of FFmpeg to Blazor WebAssembly with minimal configuration, eliminating server dependencies for media processing. Its lazy loading and in-memory file handling optimize performance, making it ideal for offline-capable or privacy-focused applications.
FFmpeg on Web Assembly
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Executes FFmpeg commands entirely in the browser, eliminating server dependencies and reducing backend load for tasks like video conversion or audio recording.
Downloads the large FFmpeg WebAssembly binary (≈25MB) only when needed, optimizing initial page load times as highlighted in the README.
Uses emscripten's virtual filesystem to read and write media files in browser memory, enabling efficient manipulation without disk I/O overhead.
Provides event handlers for progress and logging, allowing developers to give users feedback during conversions, as demonstrated in the sample code.
Requires adding specific HTTP headers (Cross-Origin-Embedder-Policy and Cross-Origin-Opener-Policy) both locally and in production, a workaround admitted in the README that complicates setup.
The core FFmpeg WebAssembly library is approximately 25MB, which can significantly impact load times and data usage, even with lazy loading optimizations.
Blazor WebAssembly currently lacks multi-threading support, restricting performance for parallel media processing until .NET 11, as noted in the README.