Avidemux

Avidemux is a free and open-source software application for non-linear video editing and transcoding multimedia files. The developers intend it as "a simple tool for simple video processing tasks" and to allow users "to do elementary things in a very straightforward way". It is written in C++ and uses Qt for its graphical user interface, and FFmpeg for its multimedia functions. Starting with version 2.4, Avidemux also offers a command-line interface, and since version 2.6, the original GTK port has not been maintained and is now discontinued.

Avidemux is developed for Linux, macOS, and Windows. Unofficial builds are also available for FreeBSD, NetBSD, and OpenBSD.

Features
Avidemux is capable of non-linear video editing, applying visual effects (called "Filters" by Avidemux) to video, and transcoding video into various formats. Some of the filters were ported from MPlayer and Avisynth. Avidemux can also insert audio streams into a video file (an action known as multiplexing or "muxing") or extract audio streams from video files (an action known as "demuxing").

An integral and important part of the design of the program is its project system, which uses the SpiderMonkey JavaScript engine. Whole projects with all options, configurations, selections, and preferences can be saved into a project file. Like VirtualDub's VCF scripting capabilities, Avidemux has advanced scripting available for it both in its GUI and command line modes. It also supports a non-project system just like VirtualDub, where users can simply create all of their configurations and save the video directly without making a project file. A project queue system is also available.

Avidemux has built-in subtitle processing, both for optical character recognition of DVD subtitles and for rendering hard subtitles. Avidemux supports various subtitle formats, including MicroDVD (.SUB), SubStation Alpha (.SSA), Advanced SubStation Alpha (.ASS) and SubRip (.SRT).

Components
Avidemux was written from scratch, but additional code from FFmpeg, MPlayer, Transcode and Avisynth has been used on occasion as well. Nonetheless, it is a completely standalone program that does not require any other programs to read, decode, or encode other than itself. The built-in libavcodec library from the FFmpeg project is used for decoding and encoding various audio and video formats, such as MPEG-4 ASP.

The primary (though not the only) Avidemux programmer uses the nickname 'Mean' on the Avidemux forum.

Multithreading
Multithreading has been implemented in the following areas of Avidemux (some partially through libavcodec):
 * Encoding
 * MPEG-1 and MPEG-2 (using libavcodec)
 * MPEG-4 Part 2 SP/ASP (using libavcodec or Xvid)
 * Earlier versions of Xvid are not compatible with this feature.
 * H.264/MPEG-4 Part 10 AVC (using x264)
 * H.265/HEVC (using x265)
 * Decoding
 * MPEG-1 and MPEG-2 (using libavcodec)
 * MPEG-4 Part 2 SP/ASP (using libavcodec)

Supported formats
Avidemux supports following file formats: