ホームページ  >  記事  >  バックエンド開発  >  SDL2_Mixer を使用して音楽を初期化できず、認識できないオーディオ形式が報告される

SDL2_Mixer を使用して音楽を初期化できず、認識できないオーディオ形式が報告される

WBOY
WBOY転載
2024-02-09 09:24:29746ブラウズ

无法使用 SDL2_Mixer 初始化音乐,报告无法识别的音频格式

php Editor Banana が SDL2_Mixer を使用して音楽を初期化しているときに問題が発生し、レポートに認識できないオーディオ形式が表示されました。この問題は音楽再生機能に影響を及ぼし、ユーザーにご迷惑をおかけする可能性があります。この問題を解決するには、認識されないオーディオ形式の原因を突き止め、適切な修正措置を講じる必要があります。以下では、同様の問題に遭遇した開発者の助けになればと考え、考えられる原因と解決策をいくつか紹介します。

質問内容

私のアプリケーションは sdl2 を利用して天気データをウィンドウにレンダリングしており、結果のキューからバックグラウンドで音楽を無期限に再生したいと考えています。その部分は完了しましたが、音楽をロードするときに問題が発生します。キューに曲をロードしようとするたびに、「認識できないオーディオ形式」と表示されます。私のコードは次のようになります。

行 277 ~ 280、オーディオとビデオの sdl を初期化するとき。正常に動作します。

リーリー

282 行目から 285 行目、ミキサーを初期化するとき。効果もとても良いです。

リーリー

行 292 ~ 305 で音楽キューを設定します。こちらも正常に動作します。

リーリー

そのすぐ後の行 307 ~ 314 で、キュー内のすべてのファイルをロードしようとしました。ここで問題が発生します。

リーリー

プログラムに上記のコードがある場合、go はこのコードを出力します。

リーリー

ffmpegから変換したflacファイルをロードしようとしています。また、mp3 ファイルと wav ファイルを使用してみました (アセット内の初期化フラグとファイルを動作するものに変更することで) が、うまく機能しませんでした。

参考になれば、私が使用しているオペレーティング システムは Windows 11 で、msys2 を使用して go の sdl モジュールが sdl2 ライブラリを利用できるようにしています。また、次のコマンドを使用してコードをコンパイルします。

if err := sdl.init(sdl.init_audio | sdl.init_video); err != nil {
    log.fatalf("failed to initialize sdl: %s", err)
}
defer sdl.quit()

解決策

サウンドをロードする前にオーディオ デバイスを開く必要があります。適切なパラメータ (例: ) を指定して mix.openaudio または mix.openaudiodevice

を呼び出します。 リーリー

以上がSDL2_Mixer を使用して音楽を初期化できず、認識できないオーディオ形式が報告されるの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はstackoverflow.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。