AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Windows Sound aufnehmen

Ein Thema von Youuuu · begonnen am 14. Mai 2018 · letzter Beitrag vom 14. Mai 2018
Antwort Antwort
Youuuu

Registriert seit: 9. Okt 2016
60 Beiträge
 
Delphi 11 Alexandria
 
#1

Windows Sound aufnehmen

  Alt 14. Mai 2018, 08:07
Delphi-Version: 5
Guten Morgen,

ich habe zum Aufnehmen von Windowssound folgenden Code gefunden

Delphi-Quellcode:
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;
Bei mir scheitert es dann allerdings schon daran, dass NIE eine Datei gespeichert wird, welche ich prüfen kann, ob auch wirklich aufgenommen wurde.
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Windows Sound aufnehmen

  Alt 14. Mai 2018, 08:14
Hier ein komplett lauffähiges Beispiel mit MCI-Aufnahme

Delphi-Quellcode:
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;
Ändere bei Dir die Befehle entsprechend ab und es sollte funktionieren.

Ps: Das zeichnet Microfon auf....
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Youuuu

Registriert seit: 9. Okt 2016
60 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Windows Sound aufnehmen

  Alt 14. Mai 2018, 09:49
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:
rp.dwTo := 5000;
Variablel laufen zu lassen, sobald ich die Aufzeichnung selbstständig beende, dann erst die Aufzeichnung beendet und gespeichert wird?

Geändert von Youuuu (14. Mai 2018 um 09:54 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#4

AW: Windows Sound aufnehmen

  Alt 14. Mai 2018, 10:38
Ok, zweites Beispiel mit Start/Stop Knopf.

Delphi-Quellcode:
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;
Ps: Ich weiß nicht ob es PWideChar unter Delphi 5 schon gab, ansonsten austauschen mit PChar.
Gruß vom KodeZwerg

Geändert von KodeZwerg (14. Mai 2018 um 10:42 Uhr)
  Mit Zitat antworten Zitat
Youuuu

Registriert seit: 9. Okt 2016
60 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Windows Sound aufnehmen

  Alt 14. Mai 2018, 10:58
Perfekt funktioniert, allerdings nur der Output Sound, gibt es auch eine Möglichkeit den Input Sound auch mit aufzunehmen? Also beide gleichzeitig?
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Windows Sound aufnehmen

  Alt 14. Mai 2018, 11:10
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 hier mal reinschnuppern, da wird vielleicht das Beschrieben was Du erreichen möchtest?
Gruß vom KodeZwerg
  Mit Zitat antworten Zitat
Youuuu

Registriert seit: 9. Okt 2016
60 Beiträge
 
Delphi 11 Alexandria
 
#7

AW: Windows Sound aufnehmen

  Alt 14. Mai 2018, 11:27
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.
  Mit Zitat antworten Zitat
EWeiss
(Gast)

n/a Beiträge
 
#8

AW: Windows Sound aufnehmen

  Alt 14. Mai 2018, 11:37
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.
Ich lade gleich ein Projekt hoch.
Das MCI ist einfach zu alt.

EDIT:
Nimm das hier

Wave und Mp3 kannst aufnehmen.. bzw. wird geschrieben.

gruss

Geändert von EWeiss (14. Mai 2018 um 11:41 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.685 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Windows Sound aufnehmen

  Alt 14. Mai 2018, 13:12
Danke Emil, das erspart mir ein WaveIn : HWAVEIN; usw. gedönse
Gruß vom KodeZwerg
  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 22:28 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