在 Windows 服务器上转换 MP3、WAV、FLAC、OGG、AAC 及 25+ 种格式 — 无需安装任何编解码器包。
Windows
2000/2003/Vista
7/8/10/11
and
2012/2016/2019/2022 Server
and
Docker/Citrix/Wine
Total Audio Converter X 是服务器端 SDK,可转换 MP3、WAV、FLAC、OGG、OPUS、AAC、WMA 以及 25+ 种其他音频格式 — 无需在服务器上安装外部编解码器包或媒体框架。它以无头模式运行:没有图形界面、对话框或弹窗。Total Audio Converter X 同时提供 命令行二进制文件和 ActiveX/COM 接口,因此可直接嵌入 ASP、PHP、.NET、Python、Ruby、Java 以及任何其他兼容 COM 的后端。完整支持的音频格式列表:
程序支持 ID3 标签和 CUE 文件。它即时转换音频轨道,无需中间 WAV 文件。
转换速度高、批量转换让流程简单且不再枯燥。除此之外,Total Audio Converter X 在所有任务完成后会播放您选定媒体类型的全部文件。免费试用(30 天试用期,无任何限制),亲身体验它的物超所值。
当前支持的部分文件格式转换:
|
|
|
string src = @"C:\test\Source.wav";
string dest = @"C:\test\Dest.mp3";
var cnv = new AudioConverterX();
cnv.Convert(src, dest, "-cMP3 -br 192 -log c:\\test\\Audio.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\AudioConverterX.exe";
sbLogs.AppendLine(executablePath + "...");
var srcPath = $@"{assemblyDirectoryPath}\src\sample.wav";
var outPath = Path.GetTempFileName() + ".mp3";
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("AudioConverter.AudioConverterX")
C.Convert "c:\source.wav", "c:\dest.mp3", "-cMP3 -log c:\Audio.log"
Response.Write C.ErrorMessage
set C = nothing
$src="C:\\test\\test.wav";
$dest="C:\\test\\test.mp3";
if (file_exists($dest)) unlink($dest);
$c= new COM("AudioConverter.AudioConverterX");
$c->convert($src,$dest, "-c mp3 -br 192 -log c:\\test\\Audio.log");
if (file_exists($dest)) echo "OK"; else echo "fail:".$c->ErrorMessage;
require 'win32ole'
c = WIN32OLE.new('AudioConverter.AudioConverterX')
src = "C:\\test\\test.wav"
dest = "C:\\test\\test.mp3"
c.convert(src, dest, "-c MP3 -log c:\\test\\Audio.log")
if not File.exist?(dest)
puts c.ErrorMessage
end
import win32com.client
import os.path
c = win32com.client.Dispatch("AudioConverter.AudioConverterX")
src = "C:\\test\\test.wav"
dest = "C:\\test\\test.mp3"
c.convert(src, dest, "-c MP3 -log c:\\test\\Audio.log")
if not os.path.exists(dest):
print(c.ErrorMessage)
uses Dialogs, Vcl.OleAuto;
var
c: OleVariant;
begin
c := CreateOleObject('AudioConverter.AudioConverterX');
c.Convert('c:\test\source.wav', 'c:\test\dest.mp3', '-cMP3 -log c:\test\Audio.log');
if c.ErrorMessage <> '' then
ShowMessage(c.ErrorMessage);
end;
var c = new ActiveXObject("AudioConverter.AudioConverterX");
c.Convert("C:\\test\\source.wav", "C:\\test\\dest.mp3", "-c MP3");
if (c.ErrorMessage != "")
alert(c.ErrorMessage)
use Win32::OLE; my $src = "C:\\test\\test.wav"; my $dest = "C:\\test\\test.mp3"; my $c = CreateObject Win32::OLE 'AudioConverter.AudioConverterX'; $c->convert($src, $dest, "-c mp3 -log c:\\test\\Audio.log"); print $c->ErrorMessage if -e $dest;
"我们每周处理大约 50,000 个播客上传文件。Total Audio Converter X 在我们的流水线中处理标准化步骤:来自创作者的 WAV 和 FLAC 输入会被转码为 128 kbps MP3 用于分发,以及 64 kbps 单声道版本用于低带宽播放。参数集小到可以记住,二进制运行很快(在我们的硬件上约为 8 倍实时速度),三年来我们都没有更新过任何编解码器依赖项。"
Akira N.
Senior Backend Developer at a podcast platform
"我们的有声书摄取流水线接收旁白原始 WAV 文件,并同时生成用于流媒体的 AAC 和用于下载的 MP3。Total Audio Converter X 作为 Windows 服务运行在编码服务器上;我们通过 -list 队列文件批量送入。-ca 标志可将章节文件拼接成一条连续轨道,省去我们自己写连接步骤的麻烦。在四年的生产使用中保持稳定且可预测。"
Sara T.
DevOps Engineer at an audiobook publisher
"电台上传的源素材种类繁多,从 CD 品质 WAV 到古老的 RealAudio 档案都有。Total Audio Converter X 处理整个输入矩阵,并为流媒体基础设施提供一致的 MP3 输出。它能直接抓取音频 CD 是我们没预料到的额外收获,我们将其用于产品的旧媒体库数字化部分,无需另外的工具。"
Yusuf E.
CTO at a media SaaS for radio stations
"我们将 Total Audio Converter X 以免版税许可方式打包到我们的音乐管理产品中。每个项目的一次性费用只是基于 FFmpeg 的商业封装价格的一小部分。我们的安装程序部署并注册 ActiveX,应用程序直接调用它,最终用户只看到我们自己的 UI。32 位 ActiveX 限制让我们多花了几天进行流水线改造,但当我们询问解决方案时支持团队响应迅速。"
Linnea J.
Independent Software Vendor
"对我们的语音内容标准化步骤来说非常可靠。我们将电话品质的录音降混为 22 kHz 单声道 MP3,再发送至 ASR。Total Audio Converter X 处理客户提交的所有边缘情况,包括一些真正奇特的格式,如 APE 和 MPC。CLI 稳定,每次运行的输出都是按位相同的,这正是我们对确定性流水线的需求。"
Marcus W.
Lead .NET Developer at a transcription service
Total Audio Converter X 附带 AudioConverterX.exe,这是一个为 Web 服务器、调度器和后端音频管道构建的控制台二进制程序 —— 没有 GUI,没有对话框,无需用户交互。标志集镜像桌面 AudioConverter.exe;完整参考请参阅命令行文档。下面的配方涵盖了 SDK 客户最常询问的场景。
最简单的调用方式 —— 一个源文件、一个目标文件、一个目标编解码器。
AudioConverterX.exe "C:\music\track.flac" "C:\out\track.mp3" -cMP3
处理文件夹中的每个 FLAC,并将 MP3 放入同级输出目录。当路径或掩码包含空格时,引号很重要。
AudioConverterX.exe "C:\music\*.flac" "C:\out\" -cMP3
将掩码替换为 *.wav、*.ogg、*.ape 等,将目标替换为 -cAAC、-cOGG、-cFLAC、-cWMA、-cMP4、-cMPC,可混合任何源/目标对。
音乐库很少是平面的。-Recurse 遍历子目录;-kfs 在输出端重新创建相同的艺术家/专辑树,而不是将每个曲目转储到一个桶中。
AudioConverterX.exe "C:\music\*.flac" "C:\out\" -cMP3 -Recurse -kfs
有损目标需要明确的比特率;当目标设备或流期望固定速率时(CD 用 44.1 kHz,视频用 48 kHz,语音用 22.05 kHz),重新采样很有用。
AudioConverterX.exe "C:\music\*.wav" "C:\out\" -cMP3 -br 320 -sr 44100
将 -br 降到 128 以获得播客级音频,或推到 320 以获得归档质量的 MP3。
有声书、讲座、口述和 IVR 提示不需要立体声。强制单声道可将文件减半,并避免在电话级播放时出现相位问题。
AudioConverterX.exe "C:\lectures\*.wav" "C:\out\" -cMP3 -ch Mono -br 96 -sr 22050
对音乐目标使用 -ch Stereo、-ch JointStereo 或 -ch DualChannels。
WMA 支持两种编码模式:恒定比特率(可预测的文件大小)和可变比特率(可预测的质量)。对于 VBR,-wq 质量旋钮范围从 1 到 100。
AudioConverterX.exe "C:\music\*.flac" "C:\out\" -cWMA -wm VBR -wq 90
对于 CBR 模式,请改用 -wm CBR -br 192。
对于有声书章节、DJ 集或单文件专辑发行,-ca 按源顺序将源文件拼接成一个输出曲目。
AudioConverterX.exe "C:\music\AcmeAlbum\*.wav" "C:\out\AcmeAlbum.mp3" -cMP3 -ca -br 256
从脚本驱动 CD 翻录器:选择驱动器盘符,选择目标格式,让 FreeDB 填充艺术家/专辑/曲目名称,并应用曲目名称模板。
AudioConverterX.exe "C:\rips\" -c ripcd -cd F -df flac -freedb -ctt "<track:2>. <title>"
将 -df flac 替换为 mp3、wav、ogg、aac、mpc、ape 或 wma 以直接翻录到任何受支持的格式。
当工作进程写入队列文件而转换器消耗它时,您不希望将文件路径烘焙到命令行中。-list 每行读取一个文件掩码;-log 将错误和进度重定向到磁盘,因此无人值守的运行会留下痕迹。
AudioConverterX.exe -list "C:\queues\encode.txt" "C:\out\" -cMP3 -br 192 -log "C:\logs\audioconv.log"
对于存储迁移 —— 例如,用一半大小的 FLAC 替换 WAV 归档 —— -do 在成功写入目标后删除每个源文件。
AudioConverterX.exe "C:\archive\*.wav" "C:\archive\" -cFLAC -Recurse -kfs -do
先运行一个小型测试批次:-do 是不可逆的,您要确保输出目录和目标格式正是您所期望的,然后再将其指向完整的库。
new COM("AudioConverter.AudioConverterX");.NET 中使用 new AudioConverterX();Python 中使用 win32com.client.Dispatch;Ruby 中使用 WIN32OLE.new。或者,AudioConverterX.exe 命令行二进制文件可从任何进程、调度程序或 shell 脚本中调用。-br <kbps> 设置比特率,-sr <Hz> 设置采样率,-ch <Mono|Stereo|JointStereo|DualChannels> 设置声道映射。WMA 通过 -wm CBR|VBR 与 -wq(质量)同时支持 CBR 和 VBR。MP3 LAME 预设可通过 -lame 使用。这套控制选项涵盖播客、有声书、语音内容和音乐转码工作流程。-ctt 标志控制曲目名称模板。适用于需要处理实体 CD 的旧媒体数字化工作流程。