我在 Microsoft Surface 应用程序中以波形格式捕获音频文件。现在出于文件大小的原因,我想将波形文件转换为 mp3 文件。我在互联网上读到,这样做的一个很好的可能性是使用lame。
但是我怎样才能从我的应用程序中调用这个 exe 文件呢?以及如何将其包含在我的应用程序中?
使用Process类调用外部应用程序:
string lameEXE = @"C:\path_of_lame\lame.exe";
string lameArgs = "-V2";
string wavFile = @"C:\my_wavs\input.wav";
string mp3File = @"C:\my_mp3s\output.mp3";
Process process = new Process();
process.StartInfo = new ProcessStartInfo();
process.StartInfo.FileName = lameEXE;
process.StartInfo.Arguments = string.Format(
"{0} {1} {2}",
lameArgs,
wavFile,
mp3File);
process.Start();
process.WaitForExit();
int exitCode = process.ExitCode;
public void mciConvertWavMP3(string fileName, bool waitFlag)
{
//maxLen is in ms (1000 = 1 second)
string outfile= "-b 32 --resample 22.05 -m m \"" + pworkingDir+fileName + "\" \"" + pworkingDir + fileName.Replace(".wav",".mp3") + "\"";
System.Diagnostics.ProcessStartInfo psi = new System.Diagnostics.ProcessStartInfo();
psi.FileName = "\"" + pworkingDir + "lame.exe" + "\"";
psi.Arguments = outfile;
//psi.WorkingDirectory = pworkingDir;
psi.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;
System.Diagnostics.Process p = System.Diagnostics.Process.Start(psi);
if (waitFlag)
{
p.WaitForExit();
// wait for exit of called application
}
}
以上代码取自这里。
根据使用情况,您可以合并Process.StartInfo
对象、控件属性,例如ShellExecute
并将应用程序的任何输出重定向到(例如)日志文件或 UI 组件。
要将 exe 与您的项目捆绑在一起,请从 stackoverflow out 中检查此问题。就个人而言,我会接受第一个建议:
有几种方法可以实现这一点。首先,您应该将 program.exe 添加到项目中。您可以通过右键单击 Visual Studio 中的项目并选择添加 > 现有项... 选择 program.exe 来执行此操作,它会出现在项目中。查看其属性,您可以将“复制到输出目录”设置为“始终复制”,它将出现在应用程序旁边的输出目录中。
如果你坚持上面的方法,那就相对引用lame.exe(比如'....\Tools\Lame.exe')。
最后,根据官方蹩脚网站:RareWares 提供了几个编译的 LAME 版本,包括具有特殊功能的修改版本。
您可以使用 System.Diagnostics.Process 类和相关类从 .NET 调用可执行文件 - 有关文档,请参见此处。
Lame 有非常强大的命令行参数,可以在这里找到。您可以使用ProcessStartInfo.Arguments属性将命令行参数传递给 Process 。
有一个 LAME 的 DLL 版本,如果您找不到使用它的 VB 或 C# 示例,我会感到惊讶。检查这个讨论线程:http ://www.eggheadcafe.com/software/aspnet/31294459/-lameencdll-and-vbnet.aspx