【发布时间】:2010-12-29 12:59:24
【问题描述】:
我在 Microsoft Surface 应用程序中以波形格式捕获音频文件。现在出于文件大小的原因,我想将波形文件转换为 mp3 文件。我在互联网上读到,使用lame 很有可能做到这一点。
但是我怎样才能从我的应用程序中调用这个 exe 文件呢?以及如何将其包含到我的应用程序中?
【问题讨论】:
标签: c# .net mp3 pixelsense lame
我在 Microsoft Surface 应用程序中以波形格式捕获音频文件。现在出于文件大小的原因,我想将波形文件转换为 mp3 文件。我在互联网上读到,使用lame 很有可能做到这一点。
但是我怎样才能从我的应用程序中调用这个 exe 文件呢?以及如何将其包含到我的应用程序中?
【问题讨论】:
标签: c# .net mp3 pixelsense lame
使用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;
【讨论】:
您可以使用 System.Diagnostics.Process 类和相关类从 .NET 调用可执行文件 - 有关文档,请参阅 here。
Lame 有相当强大的命令行参数,可以在 here 找到。您可以使用ProcessStartInfo.Arguments 属性将命令行参数传递给进程。
【讨论】:
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
}
}
以上代码taken from here 。
根据使用情况,您可以合并 Process.StartInfo 对象、控制属性(例如 ShellExecute),并将应用程序的任何输出重定向到(例如)日志文件或 UI 组件。
要将 exe 与您的项目捆绑在一起,check this question from stackoverflow out。就个人而言,我会接受第一个建议:
有几种方法可以 做到这一点。首先,您应该添加 program.exe 到项目中。你会 通过右键单击项目来执行此操作 在 Visual Studio 中,然后选择添加 > 现有项目... 选择 program.exe, 它会出现在项目中。 查看其属性,您可以设置 “复制到输出目录”到“复制 始终”,它将出现在您的 你旁边的输出目录 应用。
如果你坚持上面的方法,那么相对引用lame.exe(例如'....\Tools\Lame.exe')。
最后,根据官方蹩脚的网站:RareWares offers several compiled LAME versions, including modified versions featuring special functionality.
【讨论】:
有一个 DLL 版本的 LAME,如果您找不到使用它的 VB 或 C# 示例,我会感到惊讶。检查此讨论主题:http://www.eggheadcafe.com/software/aspnet/31294459/-lameencdll-and-vbnet.aspx
【讨论】: