Re: 音声ファイルについて ( No.1 ) |
- 名前:Will 日時:2008/12/08 13:59
2点確認してください。
再生されないmp3ファイルはメディアプレイヤー等では再生されますか?
再生されないmp3ファイルをLoadSoundMemしたときに-1が返ってきていませんか?
|
Re: 音声ファイルについて ( No.2 ) |
- 名前:Sura 日時:2008/12/09 13:14
>Will様
横レス失礼いたします。
oau様が仰るような現象が再現されました。
"KeyInputString()について"のトピックス
ttp://hpcgi2.nifty.com/natupaji/bbs/patio.cgi?mode=view&no=1109
にて管理人様から頂いたファイルで
再構築すると不具合が出ました。
>再生されないmp3ファイルはメディアプレイヤー等では再生されますか?
に関しては再生できました。
>再生されないmp3ファイルをLoadSoundMemしたときに-1が返ってきていませんか?
については以下のコードで確認したところ
SetCreateSoundDataType()で、
DX_SOUNDDATATYPE_MEMPRESSを指定した後
mp3(実はoggも)を再生しようとすると再生できませんが、戻り値は0を返します。
最悪の時にはPlaySoundMem()のところで強制終了してしまいました。
//テストコード
#include"Dxlib.h"
//サウンドハンドル用変数の宣言
int iMusicHandle;
//関数のプロトタイプ宣言
int LoadAndPlayMusicMemPress(TCHAR*);
int LoadAndPlayMusicMemNoPress(TCHAR*);
//メイン関数
int WINAPI WinMain(HINSTANCE, HINSTANCE, LPSTR, int)
{
int ReturnValue(0);
if(DxLib_Init() == -1) return -1;
SetDrawScreen(DX_SCREEN_BACK);
while(ProcessMessage() == 0 && CheckHitKey(KEY_INPUT_ESCAPE) == 0)
{
if(CheckHitKey(KEY_INPUT_Z)) ReturnValue = LoadAndPlayMusicMemPress("Sample.wav");
if(CheckHitKey(KEY_INPUT_X)) ReturnValue = LoadAndPlayMusicMemNoPress("Sample.wav");
if(CheckHitKey(KEY_INPUT_C)) ReturnValue = LoadAndPlayMusicMemPress("Sample.mp3");
if(CheckHitKey(KEY_INPUT_V)) ReturnValue = LoadAndPlayMusicMemNoPress("Sample.mp3");
if(CheckHitKey(KEY_INPUT_B)) ReturnValue = LoadAndPlayMusicMemPress("Sample.ogg");
if(CheckHitKey(KEY_INPUT_N)) ReturnValue = LoadAndPlayMusicMemNoPress("Sample.ogg");
// KEYの対応 WAV MP3 OGG
// Press "Z" "C" "B"
// NoPress "X" "V" "N"
ClearDrawScreen();
DrawFormatString(0, 0, GetColor(255, 255, 255), "Sound handle value : %d, Return value of the PlaySoundMem : %d",iMusicHandle , ReturnValue);
ScreenFlip();
}
DxLib_End();
return 0;
}
//DX_SOUNDDATATYPE_MEMPRESS用サウンド再生関数
int LoadAndPlayMusicMemPress(TCHAR *str)
{
DeleteSoundMem(iMusicHandle);
SetCreateSoundDataType(DX_SOUNDDATATYPE_MEMPRESS);
iMusicHandle = LoadSoundMem(str);
return PlaySoundMem(iMusicHandle, DX_PLAYTYPE_BACK);
}
//DX_SOUNDDATATYPE_MEMNOPRESS用サウンド再生関数
int LoadAndPlayMusicMemNoPress(TCHAR *str)
{
DeleteSoundMem(iMusicHandle);
SetCreateSoundDataType(DX_SOUNDDATATYPE_MEMNOPRESS);
iMusicHandle = LoadSoundMem(str);
return PlaySoundMem(iMusicHandle, DX_PLAYTYPE_BACK);
}
|
Re: 音声ファイルについて ( No.3 ) |
- 名前:通 日時:2008/12/09 14:20
上記のコードではLoadSoundMemの戻り値を
チェックしているように見えませんが、
> 戻り値は0を返します。
とはデバッガで確認したということでしょうか?
上記コードのReturnValue はPlaySoundMem関数の
戻り値であって、LoadSoundMemの戻り値では
ありません。
|
Re: 音声ファイルについて ( No.4 ) |
- 名前:Sura 日時:2008/12/09 16:27
>通さま
Will様に対する返答ミスです。
申し訳ありません。
ただ、LoadSoundMem()の戻り値はiMusicHandleで
確認できて、-1以外の任意の数が帰ります。
戻り値が0と返答したのはPlaySoundMem()についてです。
|
Re: 音声ファイルについて ( No.5 ) |
- 名前:Will 日時:2008/12/10 10:20
以下のものがあると原因の追及に役立ちそうです。
1.再生されないMP3ファイル
2.正常に再生できないときのLog.txtの中身
あと、DXライブラリのバージョンは?
|
Re: 音声ファイルについて ( No.6 ) |
- 名前:oau 日時:2008/12/10 10:41
再生されないmp3は2つあるのですが、
両方ともメディアプレイヤーで再生できます。
Suraさんのコードをお借りしたところ
Aのmp3ファイルでは-1が戻り値として返ってきました。
Bのmp3ファイルでは任意の返ってきて再生されました。
Aのmp3はDXでは対応していないと言うことでよろしいのでしょうか?
また、Bのmp3ファイルを下記のコードで試したところなぜか再生されませんでした。
他のmp3ファイルでは再生されるのですが…
こちらはコードの方が間違っているのでしょうか?
#include "DxLib.h"
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
int TestA, TestB;
char Key[256];
ChangeWindowMode( TRUE );
if( DxLib_Init() == -1 ) return -1;
DrawString( 0, 0, "読み込み中", GetColor(255,255,255) );
TestA = LoadSoundMem( "SampleB.mp3" ); // 再生×
TestB = LoadSoundMem( "SampleC.mp3" ); // 再生○
DrawString( 0, 20, "読み込み完了", GetColor(255,255,255) );
while( ProcessMessage() == 0 && GetHitKeyStateAll( Key ) == 0 ){
// SampleB
if( Key[KEY_INPUT_Z] == 1 ) PlaySoundMem( TestA, DX_PLAYTYPE_BACK );
if( Key[KEY_INPUT_X] == 1 ) StopSoundMem( TestA );
// SampleC
if( Key[KEY_INPUT_C] == 1 ) PlaySoundMem( TestB, DX_PLAYTYPE_BACK );
if( Key[KEY_INPUT_V] == 1 ) StopSoundMem( TestB );
if( Key[KEY_INPUT_ESCAPE] == 1 ) break; // Escapeが押されたら終了
}
DxLib_End(); // DXライブラリ使用の終了処理
return 0; // ソフトの終了
}
|
Re: 音声ファイルについて ( No.7 ) |
- 名前:oau 日時:2008/12/10 11:17
書いてる間にもレスが
>Willさん
>1.再生されないMP3ファイル
こちらの方は事情によりお渡しすることができません。
申し訳ありません。
>2.正常に再生できないときのLog.txtの中身
先ほど書いたコードのものです。
1:システムの情報を出力します
4: DXライブラリ Ver2.25
6: OS WindowsXP ( Build 2600 Service Pack 2 )
117: CPU動作速度:大体3.00GHz
120: MMX命令を使用します
123: SSE命令が使用可能です
125: SSE2命令が使用可能です
127: CPUベンダ:GenuineIntel
141: CPU名: Intel(R) Pentium(R) 4 CPU 3.00GHz
144:COMの初期化... 成功しました
156:メモリ総量:2045.96MB 空きメモリ領域:1431.00MB
159:タイマーの精度を検査します
162:精度結果 更新回数 マルチメディアタイマー:0 パフォーマンスカウンター:60
165: パフォーマンスカウンターを使用します タイマー分解能 : 3000150.000000 KHz
170: ソフトの二重起動検査... 二重起動はされていませんでした
178:ウインドウクラスを登録します... 登録に成功しました
184:ウインドウモード起動用のウインドウを作成します
217:IMEを無効にしました
423:ウインドウスタイルをウインドウモード用に変更します... 完了
435:DirectInput関係初期化処理
437: DirectInput7 の取得中... 成功
470: 引き続き初期化処理... 初期化成功
482: ジョイパッドの初期化...
492: 入力装置を見つけました
497: デバイスの登録名:4Axes 16Key GamePad
500: デバイスの製品登録名:4Axes 16Key GamePad
510: 周期的エフェクトの作成に失敗しました。
515: ジョイパッドの追加は正常に終了しました
520: 入力装置を見つけました
525: デバイスの登録名:4Axes 16Key GamePad
528: デバイスの製品登録名:4Axes 16Key GamePad
530: 周期的エフェクトの作成に失敗しました。
533: ジョイパッドの追加は正常に終了しました
536: ジョイパッドの初期化は正常に終了しました
543: マウスデバイスの初期化... 初期化成功
549: キーボードデバイスの初期化... 初期化成功
557:DirectInput 関連の初期化は正常に終了しました
562:DirectSound の初期化を行います
565:DirectSound インターフェースの取得を行います.... 成功
574:引き続きインターフェースの初期化処理... 成功
730: DirectSound デバイスを列挙します
736: モジュール名: ドライバ記述:プライマリ サウンド ドライバ
738: モジュール名: RtkHDAud.sys ドライバ記述:Realtek HD Audio rear output
741: 最大サンプリングレート:192.00KHz 最小サンプリングレート:0.10KHz
744: 総サウンドメモリ領域:0.00KB 空きサウンドメモリ領域:0.00KB
747: 利用可能サンプリング精度
750: プライマリ 16bit = OK 8bit = OK
753: セカンダリ 16bit = OK 8bit = OK
756: 利用可能チャンネル
760: プライマリ MONO = OK STEREO = OK
763: セカンダリ MONO = OK STEREO = OK
766:DirectSound の初期化は正常に終了しました
769:DirectDraw 関連の初期化を行います
772: DirectDraw オブジェクトの取得を行います.... 成功
783: 引き続き初期化処理... 初期化に成功しました
794: ビデオカードの情報
797: 画面モード変更処理を開始します
860: 画面モードの変更処理を開始します 640 x 480 16 bit
863: ウインドウモードにします
866: 画面モードの変更は正常に終了しました
870: カラー情報
873: A:00000000 B:00ff0000 G:0000ff00 B:000000ff
876: ウインドウスタイルをウインドウモード用に変更します... 完了
885: 出力画面用の DirectDrawSurface を作成します
890: 各スクリーンメモリの配置位置
894: PrimaryBuffer : VIDEOMEMORY
897: BaskBuffer : VIDEOMEMORY
901: 出力画面用の DirectDrawSurface の作成は正常に終了しました
904: Direct3D 関連の初期化を行います
907: Direct3Dオブジェクトを取得します
912: Direct3Dオブジェクトを取得しました
916: HALデバイスを発見しました
919: ハードウエアT&Lデバイスを発見しました
923: 3Dデバイスを作成します... 3Dデバイスの作成に成功しました
942: テクスチャ最大幅:2048 最小幅:1
946: 描画制限: D_D3DPTEXTURECAPS_POW2 = 1 D_D3DPTEXTURECAPS_SQUAREONLY = 0
949: 最大テクスチャステージ数 = 8 最大テクスチャブレンド数 = 8
951: テクスチャピクセルフォーマット
954: 通常グラフィック用
956: BIT:16 RED:5 GREEN:5 BLUE:5
959: RED:007c00 GREEN:0003e0 BLUE:00001f
961: BIT:32 RED:8 GREEN:8 BLUE:8
964: RED:ff0000 GREEN:00ff00 BLUE:0000ff
966: アルファチャンネル付きグラフィック用
969: BIT:16 ALPHA:4 RED:4 GREEN:4 BLUE:4
971: ALPHA:0000f000 RED:00000f00 GREEN:000000f0 BLUE:0000000f
974: BIT:32 ALPHA:8 RED:8 GREEN:8 BLUE:8
976: ALPHA:ff000000 RED:00ff0000 GREEN:0000ff00 BLUE:000000ff
979: Direct3D 関連の初期化は正常に終了しました
982: グラフィック管理系の初期化を行います
985: 3Dグラフィック描画機能を使用します
987: フォントの初期化を行います
992: フォントの初期化は正常に終了しました
996: グラフィック管理系の初期化は正常に終了しました
1039: サーフェス間転送には BitBlt を使用します
1043: BitBlt:15773μs BltFast:19750μs
1046: スキャンラインの数:1024
1175: 1フレーム当たりの時間は 16 msecです
1178: Tri00:16 msec
1182: Tri01:17 msec
1186: Tri02:16 msec
1189: Tri03:17 msec
1193: 画面モード変更処理は正常に終了しました
1196: オーバーレイサーフェスを使用します UYVY
1199: DirectDraw 関連の初期化は正常に終了しました
1204: 文字コードバッファの初期化を行います... 完了しました
17238: ウインドウを閉じようとしています
17247: ウインドウが破棄されようとしています
17251: ソフトを終了する準備が整いました
17260: DirectDraw 関連の終了処理をおこないます
17268: フォントの初期化を行います
17275: フォントの初期化は正常に終了しました
17279: グラフィック管理系の終了処理は正常に終了しました
17284: Direct3D 関連の終了処理を行います
17291: 3Dデバイスの削除は正常に終了しました
17295: Direct3D 関連の終了処理は正常に終了しました
17298: メインサーフェスを破棄をします... 完了しました
17302: DirectDrawオブジェクトを解放します
17305: DirectDrawオブジェクトを解放しました
17308: DirectDraw 関連の終了処理は正常に終了しました
17310: DirectInput 関連の終了処理... 完了
17356: DirectSound の終了処理は正常に終了しました
17361:
17364: Alloc memory dump Total size:0(0.000kb) Alloc num:0
17372:
>DXライブラリのバージョンは?
Ver2.25を使用しております。
|
Re: 音声ファイルについて ( No.8 ) |
- 名前:Will 日時:2008/12/10 18:53
ログを見る限り何もないようですね。
再現できるものがないと検証も出来ないのでこれ以上はわかりません。
管理人さんであれば何かわかるかもしれませんが・・・
|
Re: 音声ファイルについて ( No.9 ) |
- 名前:管理人 日時:2008/12/15 02:56
mp3 は内部仕様が色々あるので、DXライブラリの mp3 読み込みコードで対応できていない可能性があります
宜しければ件の mp3 ファイルを作成する際に使用したソフトを教えて頂けないでしょうか?
( もし容易に手が出せるソフトでしたら私の方でも確認できますので・・・ )
また、別のソフトで mp3 ファイルに出力してみると読み込めるようになるかもしれません
> こちらはコードの方が間違っているのでしょうか?
間違っていないと思います
> Suraさん
申し訳ありません、先日お渡ししたバージョンには Ver2.25 にはないバグがありました
こちらのバージョンでは Suraさんが確認された不具合は発生しないと思いますので、
宜しければお試しになってみてください m(_ _;m
http://homepage2.nifty.com/natupaji/DxLib/DxLibVCTest.exe //VC用
http://homepage2.nifty.com/natupaji/DxLib/DxLibBCCTest.exe //BCC用
(中身を既存のライブラリのファイルに上書きして、BCCをお使いの
場合は『再構築』、VCをお使いの場合は『リビルド』をして下さい)
|
|