Contoh pada artikel ini menjelaskan cara membuat file wav di Delphi. Bagikan dengan semua orang untuk referensi Anda. Dengan rincian sebagai berikut:
Di sini delphi menggunakan fungsi waveIn... untuk membuat file wav
Kode spesifiknya adalah sebagai berikut:
//Gunakan jendela untuk menerima pesan dari perangkat audio: unit Unit1; antarmuka menggunakan Windows, Pesan, SysUtils, Varian, Kelas, Grafik, Kontrol, Formulir, Dialog, StdCtrls ketik TForm1 = class(TForm) Button1: TButton; : TButton ; Tombol3: TButton; prosedur FormCreate(Pengirim: TObject); prosedur Button1Click(Pengirim: TObject); Button2Click(Pengirim: TObject); prosedur Button3Click(Pengirim: TObject); prosedur terproteksi WndProc(var m: TMessage); var Form1: TForm1; siapa: TWaveHdr; hWaveIn,hWaveOut: HWAVE; fmt: TWaveFormatEx; buf1,buf2,SaveBuf: TBytes; procedure TForm1.FormCreate(Pengirim: TObject); mulai Button1.Caption := 'Mulai merekam'; Button2.Caption := 'Hentikan perekaman'; ; //Mulai prosedur perekaman TForm1.Button1Click(Pengirim: TObject); fmt.wFormatTag := WAVE_FORMAT_PCM; fmt.nSaluran := 2; fmt.nSamplesPerSec := 22050; fmt.wBitsPerSample := 16; ; SaveBuf := nihil; {Hapus konten yang direkam} jika waveInOpen(@hWaveIn, WAVE_MAPPER, @fmt, Handle, 0, CALLBACK_WINDOW) = 0 lalu mulai SetLength(buf1, 1024*8); .lpData := PAnsiChar(buf1); whIn1.dwBufferLength := Panjang(buf1); whIn1.dwBytesRecorded := 0; whIn1.dwUser := 0; whIn1.dwFlags := 0; whIn1.dwLoops := 0; 0; whIn2.lpData := PAnsiChar(buf2); whIn2.dwBufferLength := Panjang(buf2); whIn2.dwBytesRecorded := 0; whIn2.dwUser := 0; whIn2.dwFlags := 0; whIn2.reserved := 0; waveInPrepareHeader(hWaveIn, @whIn1, SizeOf(TWaveHdr)); waveInPrepareHeader(hWaveIn, @whIn2, SizeOf(TWaveHdr)); waveInAddBuffer(hWaveIn, @whIn1, SizeOf(TWaveHdr)); waveInAddBuffer(hWaveIn, @whIn2, SizeOf(TWaveHdr) ); waveInStart(hWaveIn); akhir; akhir; //Hentikan prosedur perekaman TForm1.Button2Click(Pengirim: TObject); mulai waveInUnprepareHeader(hWaveIn, @whIn2, SizeOf (TWaveHdr)); waveInClose(hWaveIn); //Memutar prosedur perekaman TForm1.Button3Click(Pengirim: TObject); mulai whOut.lpData := PAnsiChar(WhoOut.dwBufferLength); .dwUser := 0; whOut.dwFlags := 0; whOut.dwLoops := 1; whOut.lpBerikutnya := nihil; whOut.reserved := 0; waveOutOpen(@hWaveOut, WAVE_MAPPER, @fmt, Handle, 0, CALLBACK_WINDOW); ; waveOutWrite(hWaveOut, @whOut, SizeOf(TWaveHdr)); prosedur TForm1.WndProc(var m: TMessage); var ordLen: Integer; mulai diwarisi; pesan m.Msg dari {memproses pesan rekaman} MM_WIM_OPEN: ; : ; {Pesan ini hanya membawa pegangan perangkat} MM_WIM_DATA: mulai {Pesan ini membawa pegangan perangkat dan penunjuk WaveHdr (LParam)} {Simpan data yang direkam} ordLen := Panjang(SaveBuf); SaveBuf)+ordLen), PWaveHdr(m.LParam).lpData, PWaveHdr(m.LParam).dwBytesRecorded); {lanjutkan merekam} waveInAddBuffer(hWaveIn, PWaveHdr(m.LParam), SizeOf(TWaveHdr) akhir; {Pesan ini hanya membawa pegangan perangkat} MM_WOM_CLOSE: ; {Pesan ini hanya membawa pegangan perangkat} MM_WOM_DONE: mulai {Pesan ini membawa pegangan perangkat dan penunjuk WaveHdr (LParam)} waveOutUnprepareHeader(hWaveOut, PWaveHdr(m.LParam), SizeOf(TWaveHdr)); akhir; akhir;
Saya harap artikel ini bermanfaat untuk pemrograman Delphi semua orang.