トップページ > 記事閲覧
PlaySoundMemでmp3を再生すると音が飛ぶ
名前:じに 日時: 2017/08/31 16:26

mp3ファイルをLoadSoundMem()でロードしてPlaySoundMem()で再生すると 0.5秒〜1.0秒の部分(計測したわけではないので不正確)が再生されずに音が飛びます。 一度音が飛んだ後は最後まで正常に再生されます。 PlaySoundMem()の第2引数をDX_PLAYTYPE_LOOPにすると2回目以降のループも音飛びします。 SetCreateSoundDataType()は使用していません。 フリー素材サイトで配布されているSEや、ゲーム公式サイトのボイスサンプル等で試しましたがすべて音が飛びます。 他のオーディオプレイヤーで再生すると問題なく再生されるのでファイルが原因ではないと思われます。 mp3をwavに変換すると音飛びはなくなりました。 原因がわからず困っています。 ご教示ください。 以下簡略化していますがソースコードです。 DxLibのバージョンは3.18eです。 int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow ) { // DXライブラリ初期化処理 if( DxLib_Init() == -1 ) { return -1; // エラーが起きたら直ちに終了 } int soundHd = LoadSoundMem("test.mp3"); PlaySoundMem(soundHd,DX_PLAYTYPE_BACK); WaitKey(); // DXライブラリ使用の終了処理 DxLib_End() ; return 0 ; // ソフトの終了 }
メンテ

Page: 1 |

Re: PlaySoundMemでmp3を再生すると音が飛ぶ ( No.1 )
名前:管理人 日時:2017/08/31 23:56

私の手元の環境では音が飛ぶことなく正常に mp3 を再生することができました ただ、mp3 の再生はプログラムを実行するPCにインストールされている mp3 のコーデックを使用して 行っているので、インストールされているコーデックとDXライブラリの mp3 再生処理の 相性が悪いと正常に再生できないことがあります その他にも mp3 はファイルの仕様として wav から mp3 に変換した際に末尾に無音部分が入ってしまい 綺麗にループ再生できないなどの問題がありますので、よろしければDXライブラリの内部に デコードライブラリが含まれていて安定して再生することができる ogg vorbis 形式のファイルの使用をご検討ください m(_ _;m ( mp3 と同じで wav よりファイルサイズが 10分の 1くらいになり、  且つ末尾に無音部分が入ることがないのでゲームの BGM に適しています ) wav ファイルから ogg ファイルへの変換は↓こちらのウェブサイトの <RARE WARES> http://www.rarewares.org/ogg-oggdropxpd.php 『oggdropXPd V.1.9.2 using libVorbis v1.3.5』と書かれている箇所の下にある 『Generic (394kB)』と書かれている箇所をクリックするとダウンロードできる 『oggdropXPd』というソフトで簡単に行うことができます ( 起動すると小さなウインドウが表示されるので、そこに wav ファイルをドラッグ&ドロップするだけです ) ただ、mp3 から直接 ogg ファイルに変換することはできませんので、お手数で申し訳ありませんが mp3 にする前の wav ファイルが無い場合は mp3 ファイルを wav ファイルに変換してから oggdropXPd を使用してください m(_ _;m
メンテ
Re: PlaySoundMemでmp3を再生すると音が飛ぶ ( No.2 )
名前:じに(解決) 日時:2017/09/01 00:38

管理人様 なるほど私のPC環境の問題だったのですね。 oggファイルに変換したところ正常に再生されました。 今後はoggを使うことにします。 ありがとうございました。
メンテ

Page: 1 |

題名
名前
コメント
パスワード (記事メンテ時に使用)

   クッキー保存