AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia NewAC: Nahtlos nacheinander aufnehmen
Thema durchsuchen
Ansicht
Themen-Optionen

NewAC: Nahtlos nacheinander aufnehmen

Ein Thema von hadschi92 · begonnen am 26. Mai 2011 · letzter Beitrag vom 26. Mai 2011
Antwort Antwort
hadschi92

Registriert seit: 25. Okt 2006
83 Beiträge
 
Delphi XE3 Professional
 
#1

NewAC: Nahtlos nacheinander aufnehmen

  Alt 26. Mai 2011, 21:14
Folgende Situation: Ich lasse Sound über DXAudioIn aufnehmen, das ganze läuft über nen FastGainIndicator, dann über nen GainProcessor und landet schließlich in einem WaveOut. So weit funktioniert alles, ich kann aufnehmen und das Aufgenommene als Wave speichern.

Jetzt will ich aber meine erste Aufnahme beenden und sofort mit der zweiten fortfahren, das dient dazu verschiedene Tracks zu haben. D.h. mein Programm muss die erste Aufnahme anhalten und dann noch während diese gespeichert wird mit der nächsten anfangen. Jedoch wird dies alles von einer einzigen Komponente (WaveOut) geleistet und diese kann erst mit der Aufnahme anfangen wenn davor alles gespeichert wurde. Wie kann ich das lösen? Am besten mehrere Komponenten erstellen und dann von der ersten bis zur letzten durchwechseln, sodass eine Komponente nie gleichzeitig speichern und aufnehmen muss? Soll ich das mit einem Array lösen oder reichen da drei dieser WaveOut-Komponenten?

Meine Quellcode sieht (gekürzt) so aus:
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    DXAudioIn1: TDXAudioIn;
    WaveOut1: TWaveOut;
    GainProcessor1: TGainProcessor;
    FastGainIndicator1: TFastGainIndicator;
  private
    { Private-Deklarationen }
    Output: TAuFileOut;
  public
    { Public-Deklarationen }
  end;

procedure TForm1.StarteAufnahme(Sender: TObject);
begin
  Output := WaveOut1;
  Output.FileName := //Speicherpfad
  Output.Run;
end;

procedure TForm1.ErzeugeNeuenTrack(Sender: TObject);
begin
  Output.Stop; //hier wird die Aufnahme sowohl angehalten als auch gespeichert
  Output.FileName := //neuer Speicherpfad;
  Output.Run;
end;
Nach Output.Stop kommt eine (Fehler-)Meldung, dass die Komponente beschäftigt sei. Output.Run kann dann wahrscheinlich nicht ausgeführt werden.
Am liebsten würde ich das Aufgenommene irgendwo zwischenspeichern, sobald ich jedoch Output.Stop ausführe wird das ganze sofort auf der Festplatte gespeichert und das kann eben seine Zeit dauern.
  Mit Zitat antworten Zitat
Benutzerbild von rollstuhlfahrer
rollstuhlfahrer

Registriert seit: 1. Aug 2007
Ort: Ludwigshafen am Rhein
1.529 Beiträge
 
Delphi 7 Professional
 
#2

AW: NewAC: Nahtlos nacheinander aufnehmen

  Alt 26. Mai 2011, 21:31
Delphi-Quellcode:
type
  TForm1 = class(TForm)
    WaveOut1: TWaveOut; // 1
  private
    Output: TAuFileOut; // 2
  end;

procedure TForm1.StarteAufnahme(Sender: TObject);
begin
  Output := WaveOut1; // 3
end;
Ich hab mal den Code etwas gekürzt. Irgendwas kann da nicht stimmen oder man braucht einfach "Output" gar nicht (siehe 1, 2, 3).
Ansonsten hast du dir die Antwort ja schon selbst gegeben: Einfach eine weitere Instanz deiner Klasse nehmen und die Aufnahme starten. Nachdem die erste fertig ist mit dem Speichern, diese aus dem Speicher nehmen (.Free).

Bernhard
Bernhard
Iliacos intra muros peccatur et extra!
  Mit Zitat antworten Zitat
Antwort Antwort


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 02:24 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz