API使ってのWAVEファイルの再生についてです。
http://forum.nifty.com/fdelphi/samples/01075.html
全くわからないので、まずはここのソースを元に、少しずつ勉強してるところですが、デバイスID「WavOutSetID」を指定して渡すと、WAVERR_BADFORMATが帰ってきます。
WAVE_MAPPERであれば、問題なく再生出来ています。
理由や調べるヒントなど教えていただければ幸いです。
よろしくお願いいたします。
FuncA('デバイス名');
waveOutOpen(@FhWavOut, WavOutSetID, PWaveFormatEx(FpSubchunk), DWORD(@waveOutProc),0,WAVE_FORMAT_QUERY);
//WAVERR_BADFORMAT => サポートされていないウェーブフォーム形式でオープンしようとしました。
//が返ってきちゃう
//再生デバイスID取得
function FuncA(WavOutName:String): Boolean;
var
mmr : MMResult;
caps: TWaveOutCaps;
i, dwMaxDev: Integer;
begin
Result:= False;
WavOutSetID:= WAVE_MAPPER; //該当無ければWAVE_MAPPER
dwMaxDev:= waveOutGetNumDevs(); //再生デバイスの個数
if dwMaxDev = 0 then Exit;
Result:= True;
for i:=0 to dwMaxDev-1 do begin
mmr:= waveOutGetDevCaps(i, @caps, SIZEOF(caps));
case mmr of
MMSYSERR_NOERROR : //正常
if (WavOutName = caps.szPname) then
WavOutSetID:= i;
MMSYSERR_BADDEVICEID : //インデックス範囲外
Break;
MMSYSERR_NODRIVER : //ドライバなし
Continue;
end;
end;
end;
追記いたします。
WAVEファイルが、PCM形式ですと問題なく再生でき、ADPCM形式ですと出来ないようです。
しかしながら、「PCM形式」しか再生できないとしても、その場合WAVE_MAPPERですとADPCM形式の再生が可能というところが判りません・・・
情報お待ちしております。
よろしくお願いいたします。
文章が判りにくかったでしょうか。
PCM
WAVE_MAPPER・デバイス指定:再生可能
ADPCM
WAVE_MAPPER:再生可能
デバイス指定:再生不可
よろしくお願いいたします。
ツイート | ![]() |