2012-04-12 5 views
-2

작은 음악 프로그램을 만들고 mp3를 재생하려고합니다. 지금은 꽤 못생긴 무언가가 있지만 작동합니다 :오디오 파일 재생 및 시스템 볼륨 조절

std::string command("cd \"C:\\Program Files (x86)\\Windows Media Player\" && wmplayer /play \"D:\\music\\A Perfect Circle\\eMOTIVe\\a.mp3"); 

system(command.c_str()); 

더 좋은 방법이 있습니까? 또한 마스터 시스템 볼륨을 조정하는 방법은 무엇입니까?

+0

downvoter의 정보는 무엇입니까? 음악이나 mp3 플레이어를 만들려하지 않습니다. 나는 system()을 포함하지 않는 mp3를 간단하고 솔직하게 재생하고 싶다. PlaySound()처럼 간단하게 만드는 API가 있습니까? – user987280

답변

1

Windows에 MP3 코덱이 설치된 경우 Win32 API PlaySound() 함수 또는 VCL TMediaPlayer 구성 요소를 사용하여 파일을 재생할 수 있습니다.

마스터 볼륨을 설정하려면 Win32 API waveOutSetVolume() 함수를 사용하십시오.

0

"Crosstalk"라는 C++ 오디오 라이브러리를 만들었습니다.

크로스 토크는 오디오 시스템을 만들고 라우팅 할 수있는 실시간 C++ 오디오 엔진입니다.

여기에 당신이 당신의 MP3 파일을 재생할 수있는 방법의 예 : 크로스 토크에 포함

XtSystem system; 
XtMp3Decoder mp3Decoder; 
XtAudioDevice audioDevice; 

long md = system.addComponent(&mp3Decoder); 
long ad = system.addComponent(&audioDevice); 

system.connOutToIn(md,0,ad,0); 
system.connOutToIn(md,1,ad,1); 

mp3Decoder.loadFile("../05 Tchaikovski-Swan Lake-Scene.mp3"); 
mp3Decoder.play(); 

는 예를 들어 엑스 코드 및 Visual Studio 프로젝트입니다.

크로스 토크를 다운로드하고 API 설명서 및 라이센스 세부 정보 here을 확인할 수 있습니다.

EDIT : 볼륨 조절의 관점에서

: 당신은 MP3 디코더에 출력하고, 오디오 기기의 입력 사이에 직렬로 연결할 수 "XtGain"라는 누화에 포함 된 구성 요소가있다. 이렇게하면 스피커에 도달하기 전에 오디오 스트림의 볼륨을 설정할 수 있습니다.

EDIT (2012년 1월 12일는) :

누화는 "DSPatch"라는 오픈 소스 프로젝트로 대체되었습니다. DSPatch는 근본적으로 오디오 처리에만 더 이상 국한되지 않는 Crosstalk 뒤에 라우팅 엔진의 업그레이드 된 버전입니다. DSPatch를 사용하면 상상할 수있는 거의 모든 유형의 프로세스 체인을 생성하고 라우팅 할 수 있습니다. 개인 및 독점적 사용을 위해 무료로 사용할 수 있습니다.