video-loader
v2.1.0
Published
WebPack loader to make some transformations to video files and extract some data
Downloads
2
Readme
WebPack loader to process and load video files
Requires ffmpeg to be installed.
It allows loading video files, gets some basic information from them, and allows some transformations. Currently, it reencodes the video to vp9 lossless.
It cuts the video into scenes, defined in the parameters.
Installation
npm i video-loader
Result type
The loader returns an object with the following properties:
firstImage
: The path to the first frame of the video (emitted file)width
: The video widthheight
: The video heightscenes
: an Array containing the files and data for each scenelastImage
: The path to the last frame of the scene (emitted file)numFrames
: The number of frames in the sceneduration
: The scene duration in secondsvideo
: The path to the result scene video file (emitted)
Usage
The easiest way is to use the inline config options of WebPack. To load the video, use:
import createUserVideo from "!!video-loader?{scenes: [{end: 4, speed: 2}, {end: 7}, {}], ultrafast_dev: true}!./[email protected]";
This loads the [email protected]
, then splits it into 3 scenes:
- The first one start from the beginning and ends at the 4-second mark. It is also speed up 2x.
- The second one starts is from 4-7
- The third one start at second 7 and goes to the end of the video
The result is an object, similar to this:
{
firstImage: "/[email protected]",
height: 1080,
scenes: [
{
lastImage: "/[email protected]",
video: "/[email protected]",
numFrames: 60,
duration: 4
},
{
lastImage: "/[email protected]",
video: "/[email protected]",
numFrames: 41,
duration: 2.073
},
{
lastImage: "/[email protected]",
video: "/[email protected]",
numFrames: 105,
duration: 7
},
],
width: 1920
}
Configuration
scenes
: The scene config. Supports theend
(in seconds, the end of the video if omitted), and thespeed
parameters (1, if omitted)ultrafast_dev
: If present and the NODE_ENV is "development", the video is scaled down significantly and the rendering process is a lot faster. Useful for making the render process way faster during development
NB!
This is a work-in-progress loader, and I expect some breaking changes when implementing new features.