我在Microsoft Surface应用程序中以波形格式捕获音频文件。现在出于文件大小的原因,我想将wave文件转换为mp3文件。我在互联网上读到,很有可能使用lame。
但是如何从我的应用程序中调用此exe文件?以及如何将其包含在我的应用程序中?
答案 0 :(得分:5)
使用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;
答案 1 :(得分:2)
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中,选择Add> 现有项目...选择program.exe, 它将出现在项目中。 查看其属性,您可以设置 “复制到输出目录”到“复制” 总是“,它会出现在你的身上 您旁边的输出目录 应用
如果您坚持使用上述方法,则相对引用lame.exe(例如'.... \ Tools \ Lame.exe')。
答案 2 :(得分:2)
您可以使用System.Diagnostics.Process类和相关类从.NET调用可执行文件 - 有关文档,请参阅here。
Lame拥有非常强大的命令行参数,可以找到here。您可以使用ProcessStartInfo.Arguments属性将命令行参数传递给Process。
答案 3 :(得分:1)
有一个LAME的DLL版本,如果您找不到使用它的VB或C#示例,我会感到惊讶。查看此讨论主题:http://www.eggheadcafe.com/software/aspnet/31294459/-lameencdll-and-vbnet.aspx