AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi "bass.dll" Aufnahme an beliebiger Stelle im Stream fortsetze
Thema durchsuchen
Ansicht
Themen-Optionen

"bass.dll" Aufnahme an beliebiger Stelle im Stream fortsetze

Offene Frage von "Ducksoul"
Ein Thema von Ducksoul · begonnen am 27. Aug 2008 · letzter Beitrag vom 10. Okt 2008
 
Ducksoul

Registriert seit: 19. Apr 2006
Ort: Ilmenau
87 Beiträge
 
RAD-Studio 2009 Pro
 
#11

Re: "bass.dll" Aufnahme an beliebiger Stelle im St

  Alt 10. Sep 2008, 22:53
So sieht die abgeänderte Version aus. Jetzt wird der Header nicht jedes mal neu geschrieben. Das war mir heute morgen schon aufgefallen, aber das abzuändern hatte leider nichts gebracht.
Das Problem mit dem Rauschen besteht aber leider immernoch, komischerweise nicht immer, sondern nur manchmal.

Kann es sein, dass aus mir unbekannten Gründen der Stream manchmal vorhandene Daten überschreibt und daher das Rauschen entsteht? Da ich keine Ahnung habe woran das Verhalten überhaupt liegen kann, weiß ich nichmal wie ich das Problem angehen kann

Delphi-Quellcode:
  (* Aufnahme Start *)
  procedure TFormular.StartRecording;
    var
      vol: Float;
      i, RecPos: Integer;
      Flag: DWord;
    begin

      if WaveStream.Size = 0 then
        begin
         // Header für WAV-File generieren
       with WaveHdr do
        begin
            riff := 'RIFF';
            len := 36;
            cWavFmt := 'WAVEfmt ';
            dwHdrLen := 16;
            wFormat := 1;
            wNumChannels := 2;
            dwSampleRate := 44100;
            wBlockAlign := 4;
            dwBytesPerSec := 176400;
            wBitsPerSample := 16;
            cData := 'data';
            dwDataLen := 0;
        end; // with

         WaveStream.Write(WaveHdr, SizeOf(WAVHDR));
         i := 0;
        end
      else
        begin
          if Rec_Overwrite.Checked = True then
            begin
                // hier ab aktueller Position Aufnahme fortsetzen
              (*WaveStream.Seek(GetPos, soFromBeginning);

              if WaveStream.Position < SizeOf(WaveHDR) then
                WaveStream.Seek(SizeOf(WaveHDR)+1, soFromBeginning);

              WaveStream.SetSize(WaveStream.Position);
              WaveStream.Seek(0, soFromEnd);
              Edit1.Text := IntToStr(WaveStream.Size); *)


              RecPos := GetPos;
                // Zwischenspeicher anlegen
              BufStream := TMemoryStream.Create;
              BufStream.SetSize(RecPos);
                // Wavedaten in Zwischenspeicher kopieren
              Move(WaveStream.Memory^,BufStream.Memory^,RecPos);
                // WaveStream abschneiden
              WaveStream.SetSize(RecPos);
                // Wavedaten rückkopieren
              Move(BufStream.Memory^,WaveStream.Memory^,RecPos);
              BufStream.Free;
                // Position setzen
              WaveStream.Position := RecPos;
            end; // if

          if Rec_Passage.Checked = True then
            begin
                // hier an aktueller Position Passage einfügend
            end; // if
        end; // if


        vol := RecordPegelBar.Position/100;
         while BASS_RecordSetInput(i, BASS_INPUT_OFF, vol)
          do i := i + 1;


          // ---LoWord-- ----HiWord----
        Flag := MakeLong(c16BitAudio, cRecordingTime);
           // Aufnahmebeginn @ 44100hz 16-bit stereo
         rchan := BASS_RecordStart(cSamplerate,
                                  cNumChannels,
                                  Flag,
                                  @RecordingCallback,
                                  nil);

         if rchan = 0
          then begin
              MessageDlg('Aufnahme konnte nicht gestartet werden!',
                        mtError, [mbOk], 0);
              WaveStream.Clear;
           end;
    end; // procedure StartRecording
Danke trotzdem,
Duck
Franz
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:49 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz