predvajanje wav datoteke - hitrost

Vse o večpredstavnosti (zvok, video, DirectShow in podobno).
Odgovori
hulig4n
Prispevkov: 2
Pridružen: 06.09.2010 10:50:41

predvajanje wav datoteke - hitrost

Odgovor Napisal/-a hulig4n » 06.09.2010 11:08:34

Lp!

Z TMediaPlayer komponento predvajam wav datoteko. Zanima me ali je mozno kako spremeniti hitrost predvajanja? Moral bi omogočiti predvajanje z 2x in 0.5x hitrostjo. Gledal sem na googlu pa ni videt, da bi bila neka pametna varianta.
Probal sem z MMSystem.waveOutSetPitch oz. MMSystem.waveOutSetPlaybackRate pa mi pri vseh javlja: The specified device handle is invalid. Koda, ki jo oporabljam je sledeča:

Koda: Izberi vse

function SetWavePlayRate(const Rate: DWORD): Boolean;
  var
    WaveOutCaps: TWAVEOUTCAPS;
    iRes: integer;
  begin
    Result := False;
      if WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf(WaveOutCaps)) = MMSYSERR_NOERROR then
        if WaveOutCaps.dwSupport and WAVECAPS_PLAYBACKRATE = WAVECAPS_PLAYBACKRATE then
         iRes:= waveOutSetPlaybackRate(WAVE_MAPPER, Rate);
     //CheckAndShowMCIError(iRes);
     Result := iRes = MMSYSERR_NOERROR;
  end;

  function SetWavePitch(const Rate: DWORD): Boolean;
  var
    WaveOutCaps: TWAVEOUTCAPS;
    iRes: integer;
  begin
    Result := False;
      if WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf(WaveOutCaps)) = MMSYSERR_NOERROR then
        if WaveOutCaps.dwSupport and WAVECAPS_PLAYBACKRATE = WAVECAPS_PLAYBACKRATE then
          iRes:= waveOutSetPitch(WAVE_MAPPER, Rate);
     //CheckAndShowMCIError(iRes);
     Result := iRes = MMSYSERR_NOERROR;
  end;
Ima kdo kako idejo kako to rešit? Hvala.

Odgovori