3

Cでは、PlaySoundエラーはスローされません...しかし、必要なファイルを再生する代わりに、ビープ音が鳴るだけです。

助言がありますか?

私は試した :

PlaySound("song1.wav", NULL, SND_ALIAS | SND_APPLICATION); 

と:

PlaySound("song1.wav", NULL, SND_FILENAME); 

しかし、私は同じ結果を得ました。

4

3 に答える 3

4

あなたが行ったように相対パスを使用する代わりに:

PlaySound("song1.wav", NULL, SND_FILENAME); 

次のような絶対パスを使用します。

PlaySound("F:\\path\\to\\your\\song\\song1.wav", NULL, SND_FILENAME); 
于 2012-10-19T19:16:52.983 に答える
3

msdn.microsoft.com の PlaySound API の説明からの引用:

PlaySound次のディレクトリでサウンド ファイルを検索します。現在のディレクトリ。Windows ディレクトリ。Windows システム ディレクトリ。PATH環境変数にリストされているディレクトリ。ネットワークにマッピングされたディレクトリのリスト。

関数が指定されたサウンドを見つけることができず、 SND_NODEFAULTフラグが指定されていないPlaySound場合は、代わりにデフォルトのシステム イベント サウンド (この場合は BEEP) を使用します。

システムのデフォルト エントリもデフォルト サウンドも見つからない場合、関数はサウンドを生成せずに を返しますFALSE

そのため、ファイル ディレクトリ パスをPATHWindows の環境変数に追加します。これで問題が解決するはずです。

于 2012-10-19T19:17:49.657 に答える
0

OPと同じ状況で困っていて、解決策を見つけました。私の解決策は、wav ファイルのメタデータを削除することです。

ポスト(日本語)

投稿を参照すると、PlaySound() API は、有名なオーディオ ツールでエクスポートされた一部の wav ファイルを再生できません。(ProTools、CUBASE、StudioOne など)

そして、メタデータを排除することで機能します。ブログの投稿で、彼はいくつかの「問題のある」wave ファイルをSoundEngine(日本語)で開き、wav RIFF メタ情報を削除するために新しいファイルに「名前を付けて保存」するだけでした。

于 2015-09-14T07:54:22.907 に答える