2010-12-29 2 views
2

Microsoft Surface 응용 프로그램에서 웨이브 형식의 오디오 파일을 캡처합니다. 이제 파일 크기 때문에 mp3 파일로 웨이브 파일을 변환하고 싶습니다. 인터넷에서 좋은 가능성은 lame입니다.내 응용 프로그램에서 lame.exe를 사용하는 방법?

하지만이 응용 프로그램에서이 exe 파일을 어떻게 호출 할 수 있습니까? 응용 프로그램에 어떻게 포함시킬 수 있습니까?

답변

5

사용 Process 클래스는 외부 응용 프로그램 호출 : 당신이 그것을 사용하여 VB 또는 C# 예를 찾을 수없는 경우

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

감사합니다. 시도해 볼게. (Btw ... 나의 독일어는 나의 영어보다 훨씬 좋다) – 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.

사용에 따라, 당신은 ShellExecute 같은 Process.StartInfo 개체, 컨트롤 속성을 통합하고도 (말) 로그 파일이나 UI 구성 요소에 대한 응용 프로그램에서 출력을 리디렉션 할 수 있습니다.

프로젝트와 함께 exe를 번들로 제공하려면 check this question from stackoverflow out. 개인적으로 나는 첫 번째 제안과 함께 갈 것입니다 :

수있는 몇 가지 방법이 있습니다. 먼저 program.exe를 프로젝트에 추가해야합니다. Visual Studio에서 프로젝트 을 마우스 오른쪽 단추로 클릭하고 추가> 기존 항목 ...을 선택하여 program.exe, 을 선택하면 프로젝트에 나타납니다. 해당 속성을보고 "출력 디렉토리로 복사"를 " 항상 복사"로 설정하면 응용 프로그램 옆의 출력 디렉토리에 나타납니다.

위의 방법을 고수하면 lame.exe를 상대적으로 참조하십시오 (예 : '.... \ Tools \ Lame.exe').

마지막으로, 공식 절름발이 사이트에 따르면 : 당신은 System.Diagnostics.Process가 클래스 및 관련 클래스를 사용하여 .NET에서 실행 파일을 호출 할 수 있습니다 RareWares offers several compiled LAME versions, including modified versions featuring special functionality.

+1

고맙습니다. 이제 문제는 어떻게 lame.exe를 얻을 수 있고 프로젝트에 추가하여 응용 프로그램이 relaesed 될 때 사용할 수 있습니까? – RoflcoptrException

+0

100 % 확실성을 검사해야하지만 '프로젝트의 일부 폴더에 exe 파일을 추가하고 filename 속성에서 상대적으로 (예 : ... \ ... \ Tools \ Lame.exe) 참조 할 수 있는지 확인하십시오. – Dave

2

- 문서에 대한 here를 참조하십시오.

절름발이는 매우 강력한 명령 줄 인수를 가지고 있으며, 이는 here입니다. ProcessStartInfo.Arguments 특성을 사용하여 프로세스에 명령 행 인수를 전달할 수 있습니다.

+0

감사합니다. 이제는 exe 파일을 가져 오는 방법을 궁금해합니다. 절름발이 프로젝트에서 소스 코드를 컴파일해야합니까? – RoflcoptrException

+1

나는 최신 실행 파일을 가져 와서 프로젝트에 개인적으로 포함시킬 것입니다. – Dave

관련 문제