2010-12-29 3 views
2

Я захватываю аудиофайлы в формате волны в приложении Microsoft Surface. Теперь по причинам размера файла я хотел бы преобразовать волновой файл в mp3-файл. Я читал в Интернете, что хорошая возможность сделать это, используя lame.Как использовать lame.exe в моем приложении?

Но как я могу назвать этот exe-файл из своего приложения? и как я могу включить его в свое приложение?

ответ

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; 
+0

Спасибо, теперь мне просто интересно, как получить exe-файл? Должен ли я скомпилировать исходный код из хромого проекта? – RoflcoptrException

+0

Я знаю только немецкие сайты, на которых вы можете скачать двоичные файлы Windows.попробуйте найти «хромые окна» в google, чтобы найти готовый к использованию двоичный файл. –

+0

Хорошо спасибо. Я попробую. (Кстати, мой немецкий намного лучше, чем мой английский) – RoflcoptrException

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, а также перенаправлять любые результаты из приложения в (скажем) файл журнала или компонент пользовательского интерфейса.

Чтобы связать 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.

+1

Большое спасибо, это помогает! Теперь проблема в том, как я могу получить lame.exe и как добавить его в свой проект, чтобы я мог также использовать его, когда приложение было обработано'' – RoflcoptrException

+0

Мне нужно было бы проверить на 100% уверенность, но я «Конечно, вы могли бы просто добавить exe в какую-то папку проекта и ссылаться на него относительно (т. е. ... \ ... \ Tools \ Lame.exe) в свойстве filename. – Dave

2

Вы можете назвать исполняемый файл с .NET, используя класс System.Diagnostics.Process и связанные с ним классы - см here для документации.

Lame имеет довольно надежные аргументы командной строки, которые можно найти here. Вы можете передать аргументы командной строки процессу, используя свойство ProcessStartInfo.Arguments.

+0

Спасибо, теперь мне просто интересно, как получить exe-файл? Должен ли я скомпилировать исходный код из хромого проекта? – RoflcoptrException

+1

Я бы взял последний исполняемый файл и включил его в проект лично. – Dave

 Смежные вопросы

  • Нет связанных вопросов^_^