Как использовать lame.exe в моем приложении? - PullRequest
2 голосов
/ 29 декабря 2010

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

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

Ответы [ 4 ]

5 голосов
/ 29 декабря 2010

Используйте Процесс класс для вызова внешнего приложения:

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;
2 голосов
/ 29 декабря 2010

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

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

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

Чтобы связать исполняемый файл с вашим проектом, проверьте этот вопрос из stackoverflow out . Лично я бы пошел с первыми предложениями:

Есть несколько способов, которыми вы могли бы выполнить это. Во-первых, вы должны добавить program.exe к проекту. Ты бы сделать это, щелкнув правой кнопкой мыши по проекту в Visual Studio и выберите Добавить> Существующий элемент ... Выберите program.exe, и он появится в проекте. Просматривая его свойства, вы можете установить «Копировать в выходной каталог» в «Копировать» Всегда ", и он появится в вашем выходной каталог рядом с вашим применение.

Если вы придерживаетесь вышеуказанного метода, то сравните ссылку на lame.exe (например, '.... \ Tools \ Lame.exe').

Наконец, согласно официальному сайту lame: RareWares предлагает несколько скомпилированных версий LAME, включая модифицированные версии со специальными функциями.

1 голос
/ 29 декабря 2010

Существует версия DLL LAME, я был бы удивлен, если вы не можете найти пример VB или C #, использующий ее.Проверьте эту ветку обсуждения: http://www.eggheadcafe.com/software/aspnet/31294459/-lameencdll-and-vbnet.aspx

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...