![]() |
Delphi-Version: 5
Windows Sound aufnehmen
Guten Morgen,
ich habe zum Aufnehmen von Windowssound folgenden Code gefunden
Delphi-Quellcode:
Bei mir scheitert es dann allerdings schon daran, dass NIE eine Datei gespeichert wird, welche ich prüfen kann, ob auch wirklich aufgenommen wurde.
procedure TForm1.Button1Click(Sender: TObject); // Record
begin mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mysound', nil, 0, Handle); mciSendString('SET mysound TIME FORMAT MS ' + // set time 'BITSPERSAMPLE 8 ' + // 8 Bit 'CHANNELS 1 ' + // MONO 'SAMPLESPERSEC 8000 ' + // 8 KHz 'BYTESPERSEC 8000', // 8000 Bytes/s nil, 0, Handle); mciSendString('RECORD mysound', nil, 0, Handle) end; procedure TForm1.Button2Click(Sender: TObject); // Stop begin mciSendString('STOP mysound', nil, 0, Handle) end; procedure TForm1.Button3Click(Sender: TObject); // Save var verz: String; begin GetDir(0, verz); mciSendString(PChar('SAVE mysound ' + verz + '/test.wav'), nil, 0, Handle); mciSendString('CLOSE mysound', nil, 0, Handle) end; |
AW: Windows Sound aufnehmen
Hier ein komplett lauffähiges Beispiel mit MCI-Aufnahme
Delphi-Quellcode:
Ändere bei Dir die Befehle entsprechend ab und es sollte funktionieren.
procedure TForm1.FormCreate(Sender: TObject);
var op: TMCI_Open_Parms; rp: TMCI_Record_Parms; sp: TMCI_SaveParms; begin // Open op.lpstrDeviceType := 'waveaudio'; op.lpstrElementName := ''; if mciSendCommand(0, MCI_OPEN, MCI_OPEN_ELEMENT or MCI_OPEN_TYPE, cardinal(@op)) <> 0 then raise Exception.Create('MCI error'); try // Record rp.dwFrom := 0; rp.dwTo := 5000; // 5000 ms = 5 sec rp.dwCallback := 0; if mciSendCommand(op.wDeviceID, MCI_RECORD, MCI_TO or MCI_WAIT, cardinal(@rp)) <> 0 then raise Exception.Create('MCI error. No microphone connected to the computer?'); // Save sp.lpfilename := PChar(ExtractFilePath(Application.ExeName) + 'test.wav'); if mciSendCommand(op.wDeviceID, MCI_SAVE, MCI_SAVE_FILE or MCI_WAIT, cardinal(@sp)) <> 0 then raise Exception.Create('MCI error'); finally mciSendCommand(op.wDeviceID, MCI_CLOSE, 0, 0); end; end; Ps: Das zeichnet Microfon auf.... |
AW: Windows Sound aufnehmen
Datei wird nun erstellt, super danke.
Gibt es eine Möglichkeit zusätzlich den InputSound mit aufzunehmen, welcher ebenfalls über das Mikrofon zuhören ist? Also Input und Out? Und gibt es eine Möglichkeit Zitat:
|
AW: Windows Sound aufnehmen
Ok, zweites Beispiel mit Start/Stop Knopf.
Delphi-Quellcode:
Ps: Ich weiß nicht ob es PWideChar unter Delphi 5 schon gab, ansonsten austauschen mit PChar.
procedure TForm1.Button1Click(Sender: TObject);
begin mciSendString('RECORD mySound',nil,0,Handle); end; procedure TForm1.Button2Click(Sender: TObject); begin mciSendString('STOP mySound',nil,0,Handle); mciSendString(PWideChar('SAVE mySound "'+ExtractFilePath(Application.ExeName)+'test.wav"'),nil,0,Handle); end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin mciSendString('CLOSE mySound',nil,0,Handle); end; procedure TForm1.FormDestroy(Sender: TObject); begin mciSendString('CLOSE mySound',nil,0,Handle); end; procedure TForm1.FormCreate(Sender: TObject); begin mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mySound',nil,0,Handle); mciSendString('SET mySound ' + 'TIME FORMAT MS ' + 'BITSPERSAMPLE 16 ' + 'CHANNELS 2 ' + 'SAMPLESPERSEC 44100 ' + 'BYTESPERSEC 176400 ' + 'ALIGNMENT 4', nil,0,handle); end; |
AW: Windows Sound aufnehmen
Perfekt funktioniert, allerdings nur der Output Sound, gibt es auch eine Möglichkeit den Input Sound auch mit aufzunehmen? Also beide gleichzeitig?
|
AW: Windows Sound aufnehmen
Kannst Du mir ein konkretes Beispiel nennen was Du damit meinst?
Was ich Dir da gegeben habe ist eine Möglichkeit ein Wave in hoher Qualität aufzuzeichnen wo Du per Knopf Start/Stop bestimmst wann Du was machen willst, bei Stop wird gespeichert. Da es nur ein quicky ist habe ich da noch keine Fehlerkontrolle eingebaut etc. ...Null Kontrolle ob "MySound" überhaupt existiert. Kopf Start sollte zBsp deaktiviert werden während Aufnahme läuft und Knopf Stop sollte erst aktiviert werden wenn auf Knopf Start gedrückt wird usw usf Wenn Dich das Thema interessiert könntest Du ![]() |
AW: Windows Sound aufnehmen
Also wenn ich in das Mikro spreche nimmt er auf.
Aber nicht den Sound, der über PC läuft (Input). Also als Beispiel, ich höre mir im Mediaplayer eine Datei an und möchte den Sound aufnehmen. |
AW: Windows Sound aufnehmen
Zitat:
Das MCI ist einfach zu alt. EDIT: ![]() Wave und Mp3 kannst aufnehmen.. bzw. wird geschrieben. gruss |
AW: Windows Sound aufnehmen
Danke Emil, das erspart mir ein
Delphi-Quellcode:
usw. gedönse :thumb:
WaveIn : HWAVEIN;
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:52 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