Entwickler-Ecke

Sonstiges (Delphi) - Wave aufnehmen


Fabian W. - Fr 10.02.06 21:45
Titel: Wave aufnehmen
Hi,
Die Frage wurde schoneinmal gestellt aber nicht beantwortet, daher zitiere ich:

Ich habe eine USB-Kamera (Logitech), in der ein eingebautes Mikrofon vorhanden ist - dieses wird von Win auch als einfaches Mikro erkannt - meine Frage: Wie kann ich denn jetzt etwas von diesem "Mikrofon" aufnehmen???


mfg


Ironwulf - Fr 10.02.06 22:19

bei delphix ist ein beispiel dabei was du unter Samples\Sound\HDRecorder
ob es sich deshalb lohnt die komponenten zu installiern weiß ich nich, vllt hat auch jemand eine andere lösung ohne zusatzkomponenten


Mustafa - Fr 10.02.06 22:23
Titel: Re: Wave aufnehmen
Hallo, hier ein Bsp. wie ich es realisiert habe !


Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
64:
65:
66:
67:
68:
69:
70:
71:
72:
73:
74:
75:
76:
77:
78:
79:
80:
81:
82:
83:
84:
85:
86:
87:
88:
89:
90:
91:
92:
93:
94:
95:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    Button3: TButton;
    Timer: TTimer;
    SaveDialog: TSaveDialog;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure TimerTimer(Sender: TObject);
    procedure Button4Click(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

uses mmSystem;

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
begin
  mciSendString('OPEN NEW TYPE WAVEAUDIO ALIAS mysound'nil0, Handle);
  mciSendString('SET mysound TIME FORMAT MS ' +     // set time
                'BITSPERSAMPLE 16 ' +                // 16 Bit
                'CHANNELS 2 ' +                     // STEREO
                'SAMPLESPERSEC 44100 ' +             // 44100 KHz
                'BYTESPERSEC 176400',                // 176400 Bytes/s
                nil0, Handle);
  mciSendString('RECORD mysound'nil0, Handle);
  button3.Enabled := FALSE;
  timer.Enabled := TRUE;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
    mciSendString('STOP mysound'nil0, Handle);
    Button3.Enabled := TRUE;
    timer.Enabled := FALSE;
end;

procedure TForm1.Button3Click(Sender: TObject);
var 
  verz: String;
begin
  if SaveDialog.Execute then
  begin
      GetDir(0, verz);
      mciSendString(PChar('SAVE mysound ' + SaveDialog.FileName), nil0, Handle);
      mciSendString('CLOSE mysound'nil0, Handle);
  end;
end;

procedure TForm1.TimerTimer(Sender: TObject);
begin
  caption := TimeToStr(Time);
end;

{...............................................................................
  The waveOutGetNumDevs function retrieves the number
  of waveform-audio output devices present in the system.
...............................................................................}

procedure TForm1.Button4Click(Sender: TObject);
var
  fbol : cardinal;
  i : Integer;
  WaveOutCaps: TWAVEOUTCAPS;
  PRate: DWORD;
  Rvol, temp : Dword;

begin
   waveoutgetvolume(WAVE_MAPPER, @temp);
   rvol := hiword(temp);
   i := waveOutGetNumDevs;
   i := i+0;
   fbol := WaveOutGetDevCaps(WAVE_MAPPER, @WaveOutCaps, SizeOf(WaveOutCaps));
   waveOutGetPlaybackRate(WAVE_MAPPER, @PRate);
end;

end.


Moderiert von user profile iconraziel: Delphi-Tags hinzugefügt


Fabian W. - Sa 11.02.06 10:41

kannste die funktionen der einzelnen button erläutern? so sieht das relativ unübersuichtlich aus, zumindest wenn man sich nicht mit der Materie beschäftigt hat... :oops: