Convert AVI, MP4, WMV, MPEG, MOV and 15+ video formats on Windows servers — no codec packs required.
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016 / 2019/2022 Server
and
Docker / Citrix / Wine
Total Movie Converter X is a server-side SDK that converts AVI, MP4, WMV, MPEG, MOV, FLV, MKV, and 15+ other video formats — without external codec packs or media frameworks on the server. It runs headless: no GUI, no dialogs, no popups. Total Movie Converter X ships with both a command-line binary and an ActiveX/COM interface, so it drops into ASP, PHP, .NET, Python, Ruby, Java, and any other COM-aware backend. The full list of supported video formats:
The program processes video on the fly. No intermediate AVI or MPEG files are needed.
High converting speed and batch conversions result in a simple and boredom-free process. Try it for free (30 days trial period, no limitations) and find out that it is really worth its money.
Some of the currently supported file format conversions:
|
|
|
(includes 30 day FREE trial)
(only $770.00)
string src = @"C:\test\Source.avi";
string dest = @"C:\test\Dest.mp4";
var cnv = new MovieConverterX();
cnv.Convert(src, dest, "-cMP4 -vb 2000 -log c:\\test\\Movie.log");
if (!string.IsNullOrEmpty(cnv.ErrorMessage))
throw new Exception(cnv.ErrorMessage);
public static class Function1
{
[FunctionName("Function1")]
public static async Task Run(
[HttpTrigger(AuthorizationLevel.Anonymous, "get", "post", Route = null)] HttpRequest req,
ILogger log)
{
StringBuilder sbLogs = new StringBuilder();
sbLogs.AppendLine("started...");
try
{
ProcessStartInfo startInfo = new ProcessStartInfo();
startInfo.CreateNoWindow = true;
startInfo.UseShellExecute = false;
var assemblyDirectoryPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
assemblyDirectoryPath = assemblyDirectoryPath.Substring(0, assemblyDirectoryPath.Length - 4);
var executablePath = $@"{assemblyDirectoryPath}\Converter\MovieConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.avi";
var outPath = Path.GetTempFileName() + ".mp4";
startInfo.FileName = executablePath;
if (File.Exists(outPath))
{
File.Delete(outPath);
}
if (File.Exists(executablePath) && File.Exists(srcPath))
{
sbLogs.AppendLine("files exists...");
}
else
sbLogs.AppendLine("EXE & source files NOT exists...");
startInfo.WindowStyle = ProcessWindowStyle.Hidden;
startInfo.Arguments = $"{srcPath} {outPath}";
using (Process exeProcess = Process.Start(startInfo))
{
sbLogs.AppendLine($"wait...{DateTime.Now.ToString()}");
exeProcess.WaitForExit();
sbLogs.AppendLine($"complete...{DateTime.Now.ToString()}");
}
int sleepCounter = 10;
while(!File.Exists(outPath) && sleepCounter > 0)
{
System.Threading.Thread.Sleep(1000);
sbLogs.AppendLine("sleep...");
sleepCounter--;
}
if (File.Exists(outPath))
sbLogs.AppendLine("Conversion complete successfully.");
}
catch (Exception ex)
{
sbLogs.AppendLine(ex.ToString());
}
return new OkObjectResult(sbLogs);
}
}
dim C
Set C=CreateObject("MovieConverter.MovieConverterX")
C.Convert "c:\source.avi", "c:\dest.mp4", "-cMP4 -log c:\Movie.log"
Response.Write C.ErrorMessage
set C = nothing
$src="C:\\test\\test.avi";
$dest="C:\\test\\test.mp4";
if (file_exists($dest)) unlink($dest);
$c= new COM("MovieConverter.MovieConverterX");
$c->convert($src,$dest, "-c mp4 -vb 2000 -log c:\\test\\Movie.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('MovieConverter.MovieConverterX')
src = "C:\\test\\test.avi"
dest = "C:\\test\\test.mp4"
c.convert(src, dest, "-c MP4 -log c:\\test\\Movie.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("MovieConverter.MovieConverterX")
src = "C:\\test\\test.avi"
dest = "C:\\test\\test.mp4"
c.convert(src, dest, "-c MP4 -log c:\\test\\Movie.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('MovieConverter.MovieConverterX');
c.Convert('c:\test\source.avi', 'c:\test\dest.mp4', '-cMP4 -log c:\test\Movie.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("MovieConverter.MovieConverterX");
c.Convert("C:\\test\\source.avi", "C:\\test\\dest.mp4", "-c MP4");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.avi"; my $dest = "C:\\test\\test.mp4"; my $c = CreateObject Win32::OLE 'MovieConverter.MovieConverterX'; $c->convert($src, $dest, "-c mp4 -log c:\\test\\Movie.log"); print $c->ErrorMessage if -e $dest;
"We ingest user-uploaded video in everything from old AVI to modern MP4 with H.265, and we need a single MP4/H.264 baseline for the player. Total Movie Converter X runs as a Windows service on the encoder boxes; the queue feeds it via -list files. Five years in production, no surprises. Throughput is around 3x realtime on our hardware for 1080p sources, which is fine for our SLA."
Daniel R.
Senior Backend Developer at a video-streaming platform
"Our LMS accepts course recordings from instructors in every format imaginable: MOV from Macs, WMV from old Windows screen recorders, MP4 from phones. Total Movie Converter X normalizes everything to a single MP4 H.264 profile before it ever touches the player. The .NET wrapper plugs into our existing pipeline; the -log output is a clean line per file, easy to ship to Splunk."
Petra M.
DevOps Engineer at a corporate training company
"Camera vendors send us proprietary AVI variants, vendor-specific MP4 boxes, and the occasional FLV from legacy DVRs. Total Movie Converter X handles the lot and gives us H.264 MP4 for the dashboard player. Rotating misaligned camera footage with -rotate is a feature we use every day. Headless operation on Windows Server Core was the deciding factor when we evaluated alternatives."
Hiroshi K.
CTO at a video-surveillance SaaS
"Bundled Total Movie Converter X into our home-video archiving product under the Royalty-Free License. The one-time per-project fee was a fraction of what FFmpeg-based commercial wrappers wanted. Our installer ships and registers the ActiveX, our app calls it directly, end users see only our UI. The 32-bit ActiveX limitation cost us a couple of days of pipeline rework, but support was responsive when we asked about workarounds."
Annika L.
Independent Software Vendor
"We process bodycam and dashcam footage as part of an evidence-handling pipeline. Source files come in vendor-specific AVI and MP4 variants; we transcode to a single archival MP4 H.264 profile. Total Movie Converter X is deterministic across runs, which matters for chain-of-custody. The CLI is stable, the output is bit-identical given the same inputs and flags. Five years of unattended overnight conversions, no failures we can blame on the converter."
Tomasz W.
Lead .NET Developer at a digital-evidence platform
Updated Mon, 04 May 2026
(only $770.00)
new COM("MovieConverter.MovieConverterX") in PHP, new MovieConverterX() in .NET, win32com.client.Dispatch in Python, WIN32OLE.new in Ruby. Alternatively, the MovieConverterX.exe command-line binary can be invoked from any process, scheduler, or shell script.-c <format> for output container/codec (MP4, AVI, WMV, MPEG, MOV, FLV), -vb <kbps> for video bitrate, -fps <rate> for frame rate, and -resize <WxH> for output resolution. Audio bitrate is controlled with -ab. Rotate is -rotate 90|180|270. This control set covers transcoding, re-encoding, and standardization workflows for streaming, archive, and surveillance pipelines.-list queue.txt for batch jobs and reads file paths line by line. Each conversion runs sequentially, freeing memory between files, so a single process can churn through thousands of inputs without leaks. Output paths can use templates with placeholders like %filename%, and the -log flag writes structured per-file lines suitable for ingestion into your log aggregator.Updated Mon, 04 May 2026
(only $770.00)
Download free trial and convert your files in minutes.
No credit card or email required.