2012-04-12 19 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(); 

は、例えば、XcodeとのVisual Studioプロジェクトです。

クロストークをダウンロードして、APIのドキュメントとライセンスの詳細hereをチェックすることができます。

EDIT:ボリュームを設定するという点で

:あなたがMP3デコーダ出力とオーディオデバイスの入力の間に直列に配線することができ、「XtGain」と呼ばれるクロストークに含まれている成分があります。これにより、オーディオストリームがスピーカーに到達する前に音量を設定することができます。

EDIT(2012年1月12日):

クロストークは、 "DSPatch" と呼ばれるオープンソースプロジェクトに置き換えられました。 DSPatchは本来、音声処理だけに限定されないクロストークの背後にあるルーティングエンジンのアップグレードバージョンです。 DSPatchを使用すると、ほぼすべてのタイプのプロセスチェーンを想像できるように作成してルーティングすることができ、個人的および独自の使用のために自由に使用できます。

関連する問題