fake-video
v1.0.1
Published
Generate fake video files and buffers. Useful for generating fixtures for unit tests for video libraries. Supports MP4, WebM, MKV, MOV, AVI, FLV, MPEG, 3GP, OGV, WMV, ASF, and MPEG-TS.
Downloads
313
Maintainers
Readme
fake-video

Generate fake video files and buffers. Useful for generating fixtures for unit tests for video libraries. Supports MP4, WebM, MKV, MOV, AVI, FLV, MPEG, 3GP, OGV, WMV, ASF, and MPEG-TS.
Please consider following this project's author, Jon Schlinkert, and consider starring the project to show your :heart: and support.
Install
Install with npm:
$ npm install --save fake-video[!IMPORTANT] This package requires FFmpeg. See Prerequisites before using it.
Usage
import { fakeVideo, fakeVideoFile } from 'fake-video';
const buffer = await fakeVideo('clip.mp4', {
width: 1280,
height: 720,
durationSeconds: 2,
color: 'black'
});
await fakeVideoFile('fixtures/clip.mp4', {
width: 1280,
height: 720
});The filepath passed to fakeVideo determines the output format. The function returns the generated video as a buffer without writing a file. Use fakeVideoFile to write the video and create any missing parent directories.
API
fakeVideo(filepath, options)
Creates a synthetic video and returns it as a Buffer. The extension of filepath determines the output format; no file is written.
const buffer = await fakeVideo('clip.webm', {
width: 640,
height: 360
});fakeVideoFile(filepath, options)
Creates a synthetic video file at filepath, including any missing parent directories.
await fakeVideoFile('fixtures/clip.webm', {
width: 640,
height: 360
});Options
width: Positive integer pixel width of the generated video.height: Positive integer pixel height of the generated video.durationSeconds: Optional duration in seconds. Defaults to1.color: Optional solid fill color used for the video frame. Defaults toblack.
Output format
The output format is inferred from the filepath extension:
.mkvuses H.264 with Matroska output.webmuses VP9.ogvuses VP8 with Ogg output.aviuses MPEG-4.flvuses FLV video.3gpand.3g2use MPEG-4 with3gpoutput.mpegand.mpguse MPEG-2.ts,.m2t,.m2ts, and.mtsuse MPEG-2 with MPEG-TS output.movuses H.264 with fragmented MOV output.mp4and.m4vuse H.264 with fragmented MP4 output.wmvand.asfuse WMV2 with ASF output
Unsupported extensions throw an error.
Validation
fakeVideo and fakeVideoFile throw a RangeError when:
widthis not a positive integerheightis not a positive integerdurationSecondsis not a finite positive number
Prerequisites
This package requires a Node.js runtime and shells out to the FFmpeg executable. Install FFmpeg and ensure that ffmpeg is available on your PATH.
Typical installation commands are:
- macOS with Homebrew:
brew install ffmpeg - Ubuntu or Debian:
sudo apt install ffmpeg - Fedora:
sudo dnf install ffmpeg - Windows with WinGet:
winget install Gyan.FFmpeg
The FFmpeg build must include the libx264, libvpx-vp9, libvpx, mpeg4, mpeg2video, flv, and wmv2 video encoders. You can check the installation and available encoders with:
ffmpeg -version
ffmpeg -encodersThe process needs write access to the destination directory. Creating .3gp or .3g2 output also requires write access to the operating system's temporary directory.
Use one of the supported output extensions. Use even width and height values because the output formats use the yuv420p pixel format, which commonly requires even dimensions.
About
Pull requests and stars are always welcome. For bugs and feature requests, please create an issue.
Running and reviewing unit tests is a great way to get familiarized with a library and its API. You can install dependencies and run tests with the following command:
$ npm install && npm test(This project's readme.md is generated by verb, please don't edit the readme directly. Any changes to the readme must be made in the .verb.md readme template.)
To generate the readme, run the following command:
$ npm install -g verbose/verb#dev verb-generate-readme && verbRelated projects
You might also be interested in these projects:
- fake-audio: Generate fake audio files and buffers. Useful for generating fixtures for unit tests for audio… more | homepage
- fake-image: Generate fake image files and buffers. Useful for generating fixtures for unit tests for image… more | homepage
- video-size: Get the width and height of a video. | homepage
Author
Jon Schlinkert
License
Copyright © 2026, Jon Schlinkert. Released under the MIT License.
This file was generated by verb-generate-readme, v0.8.0, on August 27, 2026.
