FFMPEG Video Editor for Web
Video Options
Edit Options
Trancoding Options
About
How to Use: Choose a video, then pick a type of Edit from the Transcoding Options. Hit Apply Edit and the edited video will show in the video player. If you like it, hit Save Edited Video, or hit Restore Original Video to start over.
Feedback: Please leave any comments / issues on the github discussion page.
This video editor runs completely inside your browser on any file that you choose. It does not upload anything. It runs FFMPEG compiled to WebAssembly. Unfortunately it's a little slow on larger files, so you can also just copy the FFMPEG command or use the reference below to run FFMPEG locally.
I could never find a simple video editor that just worked and did what I needed it to so I often resorted to using FFMPEG, even for professional usage. The drawback is it can be difficult to learn how to use, and it's also a command-line only tool. This adds a graphical interface, and teaches the corresponding commands (though it's not exhaustive by any means).
FFMPEG Reference
Crop
Crop out a smaller part of the video. X and Y refer to the top left corner of the video, and WIDTH and HEIGHT refer to the width and height of the cropped region.
Scale
Scales video to size. Does not work with odd numbers. More information.
Trim
Change start and end time of video and re-encode video. Timestamps are in format of HH:MM:SS.MILLISECONDS. If re-encoding is not done, certain portions may be frozen or paused, because FFMPEG will only use nearest keyframe.
Ping-pong (boomerang)
Plays the video twice, but the second time is in reverse, making a perfect loop.
Loop
Loops the video without re-encoding, very fast. More information.
Converting to mp4
Helpful for when you take a high quality screencapture or video and need to upload it to somewhere that has a filesize restriction since the filesize after converting to mp4 is a lot smaller.
If you get this error "ffmpeg (libx264) "height not divisible by 2*", then try using the following command:
Speed up or slowing down video
"0.5" in the below example is multiplied by the presentation timestamps in order to change the playback speed of the video. Multiplying all the timestamps by 0.5 actually speeds up the video by 2x. If the playback rate is y, then the multiplier should be 1/y
Add padding (letterboxing) to video
This command is used to pad the video with a solid color. In the below example, let's say that the original video is 400x500, but we want to add some padding to the top and bottom, such that the output video is 400x760 without scaling the original video. More information.
Layout videos side-by-side
hstacks lays out videos horizontally, and vstack vertically.
Extracting frames
Various versions of extracting still images from video. %03d means filenames labeled like: frame_001.jpg, frame_002.jpg... and %d means frames labeled like: frame_1.jpg, frame_2.jpg.
Extract all frames
Extract every nth frame
Extract first frames
Extract list of frames
Video metadata
Finding out video metadata uses ffprobe that comes packaged with ffmpeg.
Count number of frames
Precise frame rate
Viewing keyframe info
Rotate video (transpose)
Concatenate videos
Adding/re-generating keyframes to a video
Keyint refers to how many frames should there be before a keyframe is generated.
Generating a test video
Creating a video from frames
Frames can be referenced using %03d (frame_001.jpg, frame_002.jpg, ...) or %d (frame_1.jpg, frame_2.jpg, ...).
On unix based systems, frames can also be enumerated using pattern glob (doesn't work on Windows).
The frames can also be scaled to a certain size, for instance if the dimensions are odd, they can be resized to be even (since FFMPEG doesn't like odd dimensions).
Creating a slideshow video from frames
Creating a gif from frames (with imagemagick)
Not an FFMPEG command, but this uses imagemagick, a similar program for images. Delay is the time delay between frames specified in milliseconds. loop is the number of times to loop the gif, 0 meaning loop forever.