![]() |
Sprachaufnahme / mciSendString
Liste der Anhänge anzeigen (Anzahl: 1)
Hi,
ich möchte gerne alles Aufnehmen was über das Mircro reinkommt bzw. das was alles unter Sound/Recording in Windows eingestellt ist. Da es kommerziell ist, fällt die bass.dll flach. Natürlich kann man das ganze auch direkt mit den Windows-Funkionen machen z.B. mciSendString, jedoch ist die Aufnahme immer abgeschnitten, bzw mit manchen Frequenzen funktioniert das auf unterschiedlichen System gar nicht. Als Beispiel habe ich eine Datei folgendermaßen aufgenommen:
Delphi-Quellcode:
Zwischen Start und Stop habe ich ein Sleep(200) stehen. D.h. die Länge der Aufnahme sollte > 200 sein. Als Ergebnis erhalte ich aber folgendes (siehe Length)
PChar(
Format('SET mySound ' + 'TIME FORMAT MS ' + 'BITSPERSAMPLE %d ' + 'CHANNELS %d ' + 'SAMPLESPERSEC %d ' + 'BYTESPERSEC %d ' + 'ALIGNMENT %d', [ BitsPerSample2Int(FBitsPerSample), Channel2Int(FChannel), SampleTime2Int(FSampleTime), BitsPerSample2Int(FBitsPerSample) * Channel2Int(FChannel) * SampleTime2Int(FSampleTime) div 8, Channel2Int(FChannel) * BitsPerSample2Int(FBitsPerSample) div 8 ]) ),
Code:
Auf unterscheidlichen Rechnern gibt es teilweise öfter mal als Länge 0. z.B. funktioniert auf einem Rechner nur die Kombination abps16/acStero, also die letzten 3, bei allen anderen hat die Aufnahme von 200msek die Länge 0.
abps8 acMono ast800 FileSize: 44, Length: 0 Status: Error
abps8 acMono ast11025 FileSize: 1580, Length: 139 Status: OK abps8 acMono ast22050 FileSize: 3116, Length: 139 Status: OK abps8 acMono ast44100 FileSize: 6188, Length: 139 Status: OK abps8 acStereo ast800 FileSize: 44, Length: 0 Status: Error abps8 acStereo ast11025 FileSize: 3116, Length: 139 Status: OK abps8 acStereo ast22050 FileSize: 6188, Length: 139 Status: OK abps8 acStereo ast44100 FileSize: 13868, Length: 157 Status: OK abps16 acMono ast800 FileSize: 44, Length: 0 Status: Error abps16 acMono ast11025 FileSize: 3116, Length: 139 Status: OK abps16 acMono ast22050 FileSize: 6188, Length: 139 Status: OK abps16 acMono ast44100 FileSize: 13868, Length: 157 Status: OK abps16 acStereo ast800 FileSize: 44, Length: 0 Status: Error abps16 acStereo ast11025 FileSize: 6188, Length: 139 Status: OK abps16 acStereo ast22050 FileSize: 13868, Length: 157 Status: OK abps16 acStereo ast44100 FileSize: 29228, Length: 165 Status: OK Das Beispiel mit den 200msek hab ich nur gemacht, damit ich sehe ob alles was ich wollte aufgenommen wird. Komischweweise ist dort woe die Länge 0 ist, unabhängig von der Aufnahemzeit (z.B. 7sek) die Aufnahme immer genau auf die Sekunde lang (z.B. bei 7 Sekunden kann es sein, dass die Aufnahme exakt 5000msek ist). Jedenfalls ist aber in ALLEN Fällen immer am Schluss etwas abgeschnitten (z.B. bis zu 150msek), in den Fällen wo die Länge 0 ist auch mehrere Sekunden. Was mach ich falsch?
Delphi-Quellcode:
mit
R.StartRecord;
Sleep(200); R.StopRecord; R.SaveToFile(fn);
Delphi-Quellcode:
Im Anhang das Testprogramm (leider ohne Source).
mciSendString('RECORD mySound', nil, 0, 0);
mciSendString('STOP mySound', nil, 0, 0); Format( 'SAVE mySound "%s"', [_FileName]) ), nil, 0, 0)); Oder hat jemand anderes eine kostenlose andere Möglichkeit zur Soundaufnahme? |
AW: Sprachaufnahme / mciSendString
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo,
Vor einiger Zeit habe ich auch etwas damit herumexperimentiert: ![]() Habe noch einige Kleinigkeiten geändert, siehe Anhang. |
AW: Sprachaufnahme / mciSendString
Danke,
du machst aber genau das gleiche (außer "time format bytes" bzw. "format tag pcm"). Auch hier funktioniert
Delphi-Quellcode:
bei mir nicht (Dateigröße = 44, Länge = 0). Mit 16/44100/2 ist auch hier die Länge < 200msec obwohl ein Sleep von 200msek dazwischen ist.
Bits = 8;
iSamples = 800; iChannels = 1;
Delphi-Quellcode:
(auch ein WAIT im mciSendString hilft nicht, falls jemand meint, das Starten der Aufnahme dauert länger. Es fehlt bei mir immer am Schluss :/)
mciSendString(PChar(strSettings), nil, 0, Handle);
mciSendString('RECORD capture', nil, 0, Handle); Sleep(200); mciSendString('STOP capture', nil, 0, Handle); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:28 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-2025 by Thomas Breitkreuz