AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Delphi Sound aufnehmen
Tutorial durchsuchen
Ansicht
Themen-Optionen

Sound aufnehmen

Ein Tutorial von overmoon · begonnen am 21. Aug 2003 · letzter Beitrag vom 17. Jan 2016
Antwort Antwort
Seite 3 von 10     123 45     Letzte »    
Benutzerbild von overmoon
overmoon
Registriert seit: 8. Aug 2003
Sound aufnehmen

Auf den Vorschlag von Matze habe ich aus zwei meiner Beiträge ein Tutorial zusammengebastelt. Vielleicht kann es irgendjemand irgendwann irgendwozu brauchen.

Also Dinge aufnehmen geht mit Delphi und der Unit mmSystem richtig einfach.

Der Schlüssel ist die Prozedur "mciSendString". Über diese Prozedur kann man die Komplette Aufnahme des Wave-Files machen.

1.) Wir müssen ein Audiogerät öffnen. Ich nenne es einfach mal "mySound".

mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mySound',nil,0,Handle);
2.) Nun müssen wir die Optionen für die Audioaufnahme einstellen. Da für gibt es einige Einstellungen:

- BitsPerSample (Wie genau wird ein analoger Wert abgetastet; meist 8 oder 16)

- Channels (Mono(1) oder Stereo (2))

- SamplesPerSec (Abtastungen pro Sekunde; 800,11025,22050,44100)

Damit wäre eigentlich alles angegeben, was man braucht. Damit es funktioniert, müssen noch zwei weitere Dinge angegeben werden. Lässt man diese weg, gibt es Probleme.

- BytesPerSec (= (BitsPerSample div 8)*Channels*SamplesPerSec )

- Alignment (= Channels*(BitsPerSample div 8) )

Die Prozedur zum Einstellen der Einstellungen sieht dann folgendermaßen aus:

Delphi-Quellcode:
mciSendString('SET mySound ' +
                   'TIME FORMAT MS ' +
                   'BITSPERSAMPLE 16 ' +
                   'CHANNELS 2 ' +
                   'SAMPLESPERSEC 44100 ' +
                   'BYTESPERSEC 176400 ' +
                   'ALIGNMENT 4',
                   nil,0,handle);
3.) Das Starten der Aufnahme:

Das folgende erklärt sich eigentlich von selbst:

mciSendString('RECORD mySound',nil,0,Handle);
4.) Genauso einfach ist das Stoppen der Aufnahme:

mciSendString('STOP mySound',nil,0,Handle);
5.) Nach erfolgter Aufnahme wollen wir die Datei natürlich nicht im Nirvana des OS verschwinden lassen... wir müssen sie speichern.

Das geht folgendermaßen:

mciSendString('SAVE mySound "c:\datei.wav"',nil,0,Handle);

6.) Schließlich muss man noch das Audiogerät "mySound", welches man am Anfang geöffnet hatte, schließen.

mciSendString('CLOSE mySound',nil,0,Handle);
Und wir sind fertig mit der Aufnahme.

7.) Weitere Aufgaben, die man über "mciSendString" machen kann sind z.B. noch: PLAY, WAIT und LOAD


8.) Die Aufnahmen werden nur leider recht groß, deshalb macht sich eine Konvertierung zu Mp3 recht gut.

Dazu bietet sich der lame - Encoder an.

Den bekommst du hier:
http://lame.sourceforge.net/

Dort bekommst du die lame_enc.dll und die lame.exe .
Kannst du eigentlich nehmen, was du willst, konvertieren beide brav waves nach Mp3.

Die lame.exe musst du z.B. einfach mit entsprechenden Parametern aufrufen.


Zur Lizenz vom Lame_Ecoder:

Zitat:
Can I use LAME in my commercial program?

Yes, you can, under the restrictions of the LGPL. The easiest
way to do this is to:

1. Link to LAME as separate library (libmp3lame.a on unix or
lame_enc.dll on windows)

2. Fully acknowledge that you are using LAME, and give a link
to our web site, www.mp3dev.org

3. If you make modifications to LAME, you *must* release these
these modifications back to the LAME project, under the LGPL.

overmoon
"Habe Mut, dich deines eigenen Verstandes zu bedienen." (Immanuel Kant)
 
Benutzerbild von Meflin
Meflin
 
#21
  Alt 20. Jul 2004, 16:16
@scrapt: thx! endlich! es geht.... man glaubt es kaum!
Leo S.
  Mit Zitat antworten Zitat
Jarmen_Kell
 
#22
  Alt 21. Mai 2005, 17:11
Das kann ich wirklich gut gebrauchen, jedoch ist die erstellte Datei leider sehr mit Rauschen überzogen und die Qualität ist nicht annähernd so gut, wie die des Originals
Das kann man doch bestimmt ändern, oder?^^

PS: Habe ein Lied aufgenommen, das ich mit Winamp 5.0 abgespielt habe.
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin
 
#23
  Alt 22. Mai 2005, 13:31
Zitat von Jarmen_Kell:
Das kann ich wirklich gut gebrauchen, jedoch ist die erstellte Datei leider sehr mit Rauschen überzogen und die Qualität ist nicht annähernd so gut, wie die des Originals
Das kann man doch bestimmt ändern, oder?^^

PS: Habe ein Lied aufgenommen, das ich mit Winamp 5.0 abgespielt habe.
dann hst du vermutlich den stereomix regler zu weit aufgedreht. spiel mal ein bisschen damit rum, ich muss den nur minimal über null stellen, um eine saubere aufnahme zu bekommen.

Leo S.
  Mit Zitat antworten Zitat
Jarmen_Kell
 
#24
  Alt 22. Mai 2005, 14:22
Ah ja, das war es.
Jetzt ist immernoch etwas rauschen da, aber das geht fort, wenn man mit nem EQ den 14K-Bereich auf's Minimum setzt!

Danke!
  Mit Zitat antworten Zitat
Nils_13
 
#25
  Alt 13. Nov 2005, 18:39
Ich hab die Zeile verändert, aber jetzt wird die Datei nicht mehr erstellt.
  Mit Zitat antworten Zitat
benst

 
Delphi 5 Standard
 
#26
  Alt 9. Sep 2006, 12:59
Stimmt, dass geht ja wirklich ganz einfach....
Ich möchte folgendes machen:
Ein Programm welches Musik aufnehmen kann. Jedoch soll es schon ca. 20Sekunden bevor man auf den Knopf drückt aufnehmen.
Dazu sind mir zwei Lösungsideen gekommen:
1. Musik wird in einer "Schleife" aufgenommen, die 20Sekunden lang ist (ältere Sachen werden immer weggeschmissen) und das wird dann vor die eigentliche Aufnahme gepackt.
2. Es wird zwei Mal immer wieder 40 Sekunden aufgenommen (20 Sekunden überschneiden sich immer)...
---40---|---40---|---40---|-...
---|---40---|---40---|---40---|-...
Wenn man dann auf Aufnahme drück läuft eine von beiden weiter.
Kann man mit der vorgestellten Lösung zwei Mal gleichzeitig aufnehmen? Wie?

Gruß
Ben
  Mit Zitat antworten Zitat
benst

 
Delphi 5 Standard
 
#27
  Alt 9. Sep 2006, 17:27
Achso noch zwei kurze Anliegen:
  • Alternativ würde mich auch ein kostenloses Programm, welches die Funktion bietet, interessieren - jedoch habe ich so etwas noch nicht gefunden.
  • Werden bei der vorgestellten Lösung die Daten eigentlich auf der Festplatte oder im Arbeitsspeicher abgelegt. Gibt es Probleme, wenn ich sehr lange etwas aufnehme?

Ben
  Mit Zitat antworten Zitat
benst

 
Delphi 5 Standard
 
#28
  Alt 10. Sep 2006, 11:36
Ich habe das perfekte Programm gefunden...
Es kommt aus Schweden und heißt Screamer. Keine Angst, es ist u.a. in deutsch. Es bietet die Funktion, dass schon für vor Druck auf Rec aufgenommen wird (Puffergröße kann man selbst einstellen). (Es bietet noch mehr, aber ich beschränke mich in meiner Beschreibung nur auf mein Anliegen.)
Es ist wirklich das beste Programm für Internet-Radio, welches ich gefunden habe (ich habe viele ausprobiert), wenn es einem darum geht einen (oder mehr) Sender zu hören und ggf. aufzunehmen (und nicht gezielt nach Titeln suchen möchte, worauf viele andere Programm spezialisiert sind).
Ben
  Mit Zitat antworten Zitat
Benutzerbild von Sunlight7
Sunlight7

 
Delphi 5 Standard
 
#29
  Alt 9. Okt 2006, 05:55
Zitat von benst:
* Werden bei der vorgestellten Lösung die Daten eigentlich auf der Festplatte oder im Arbeitsspeicher abgelegt. Gibt es Probleme, wenn ich sehr lange etwas aufnehme?
MCI spechert die Daten zuerst in den Temp Ordner und kopiert das erst beim Speichern dorthin wo es dann sein soll.
Bei sehr langen aufnahmen kann das verschieben (auf eine andere Platte zB) etwas dauern.
  Mit Zitat antworten Zitat
Benutzerbild von Zacherl
Zacherl

 
Delphi 10.2 Tokyo Starter
 
#30
  Alt 16. Okt 2006, 23:11
Kann man den Sound auch direkt in einen Stream schreiben, welcher dann ständig aktualisiert wird? Ich will versuchen immer die neuen Teile des Streams an einen anderen Computer zu senden ...

Oder kann ich einfach hintereinader mehrere wav Files aufnehmen, diese zum Server senden, welcher diese immer wieder zum Stream hinzufügt und den Stream kontinuierlich abspielt?

Florian
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 10     123 45     Letzte »    


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 23:52 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