Cara membuat program perekaman menggunakan Delphi
Chen Jingtao
Delphi adalah alat pemrograman visual yang luar biasa dari InPRise (sebelumnya Borland). Kontrol Mediaplayer bawaannya adalah alat yang ampuh untuk mengembangkan multimedia. Dengannya, Anda dapat membuat program yang dapat memutar file multimedia seperti Jieba hanya dalam beberapa menit. Namun hanya sedikit orang yang mengetahui bahwa Anda juga dapat menggunakannya untuk membuat program rekaman.
Jalankan Delphi dan seret kontrol Mediaplayer pada halaman Sistem ke formulir. Nama defaultnya adalah Mediaplayer1. Karena program kita menggunakan tombolnya sendiri, atur properti Visible dari Mediaplayer1 ke False dan pertahankan properti lainnya pada nilai defaultnya. Tempatkan dua tombol lagi, Button1 dan Button2. Nama atribut Button1 diubah menjadi BtStart, Caption diubah menjadi "Start Recording", Nama atribut Button2 diubah menjadi BtStop, Caption diubah menjadi "Stop Recording", dan atribut Enabled diubah menjadi False. Kemudian alihkan jendela ke jendela kode dan mulailah menulis kode.
Dalam program ini, kami menentukan format header file dari file Wav. Saat merekam, pertama-tama kami membuat file Wav hanya dengan header file, lalu menulis suara yang direkam oleh Mediaplayer1 ke dalam file. Arti dari beberapa parameter pada proses CreateWav adalah sebagai berikut: saluran pertama mewakili saluran suara, bila diambil 1 mewakili mono, dan bila diambil 2 mewakili stereo. Resolusi juga hanya memiliki dua nilai untuk dipilih. Jika 8 dipilih, ini mewakili suara 8-bit. Jika 16 dipilih, ini mewakili suara 16-bit. Kecepatan mewakili frekuensi suara, seperti 11025, 22050, 44100. Semakin besar nilainya, semakin jernih suaranya, dan tentunya semakin besar pula file yang direkam. Parameter terakhir mewakili nama file yang sesuai. Jadi CreateWav dapat memiliki bentuk berikut:
CreateWav(1,8,11025,'C:/abc.wav');//Buat file mono Wav 8-bit bernama abc.wav dengan frekuensi 11025 di direktori root drive C
CreateWav(2,16,44100,'C:/abc.wav');//Buat file Wav bernama abc.wav dengan frekuensi saluran stereo 16-bit 44100 di direktori root drive C
Netbus, perangkat lunak kendali jarak jauh asing terkenal yang ditulis dalam Delphi, memiliki fungsi pemantauan suara, yang ditulis menggunakan metode artikel ini. Pertama-tama ia merekam suara pihak lain dan kemudian mengirimkannya kembali untuk mencapai tujuan memantau pihak lain. Tentu saja, premisnya adalah pihak lain harus memasang mikrofon, jika tidak, suara yang diputar oleh pihak lain akan dipantau (misalnya, buka Jieba atau Readplay dan jalankan program ini untuk merekam suara yang diputar).
Faktanya, teknologi transmisi suara jaringan saat ini telah berkembang ke tahap tertentu, dan interkom suara serta telepon IP juga sudah mulai matang. Namun, mereka menggunakan format VOX atau format ACM. Kode spesifiknya dapat diunduh dari beranda saya http://Lovejingtao.126.com. Namun jika Anda belum familiar dengan format VOX atau ACM, Anda juga bisa menggunakan cara di artikel ini untuk membuat "perekam" sendiri. Adapun cara memanggil avifil32.dll yang disertakan dengan sistem pemutaran video online, saya akan berkomunikasi dengan Anda ketika saya memiliki kesempatan.
Program ini lulus di bawah Pwin98+Delphi5.
satuan Unit1;
antarmuka
kegunaan
Windows, Pesan, SysUtils, Kelas, Grafik, Kontrol, Formulir, Dialog,
StdCtrls, MPlayer;
jenis
TWavHeader = record //Tentukan format header file Wav
rId: rindu;
rLen : rindu;
wId: rindu;
fId: rindu;
fLen : rindu;
wFormatTag : Kata;
nSaluran : kata;
nSamplesPerSec : longint;
nAvgBytesPerSec : panjang;
nBlockAlign: kata;
wBitsPerSample: kata;
melakukan: rindu;
wPanjang Sampel : longint;
akhir;
TForm1 = kelas(TForm)
MediaPlayer1: TMediaPlayer;
BtMulai: Tombol T;
BtStop: Tombol T;
procedure CreateWav(saluran : kata; resolusi : kata; rate : longint; fn : string);//Menyesuaikan proses penulisan header file Wav
prosedur BtStartClick(Pengirim: TObject);
prosedur BtStopClick(Pengirim: TObject);
pribadi
{Deklarasi pribadi}
publik
{Pernyataan publik}
akhir;
var
Formulir1: TForm1;
pelaksanaan
{$R *.DFM}
prosedur TForm1.CreateWav( saluran : kata; { 1 (mono) atau 2 (stereo) }
resolusi : kata; { 8 atau 16, mewakili suara 8-bit atau 16-bit}
rate: longint; {frekuensi suara, seperti 11025, 22050, 44100}
fn: string {nama file yang sesuai});
var
wf: file TWavHeader;
wh : TWavHeader;
mulai
wh.rId := $46464952;
wh.rLen := 36;
wh.wId := $45564157;
wh.fId := $20746d66;
wh.fLen := 16;
wh.wFormatTag := 1;
wh.nChannel := saluran;
wh.nSamplesPerSec := tarif;
wh.nAvgBytesPerSec := saluran*tingkat*(div resolusi 8);
wh.nBlockAlign := saluran*(div resolusi 8);
wh.wBitsPerSample := resolusi;
wh.dId := $61746164;
wh.wPanjang Sampel := 0;
tugaskanfile(wf,fn); {buka file yang bersangkutan}
rewrite(wf); {Pindahkan penunjuk ke awal file}
write(wf,wh); {tulis ke dalam header file}
closefile(wf); {Tutup file}
akhir;
procedure TForm1.BtStartClick(Pengirim: TObject);
mulai
mencoba
//Buat file Wav Temp.wav di direktori program saat ini
CreateWav(1, 8, 11025, (ExtractFilePath(application.ExeName)+ 'Temp.wav'));
MediaPlayer1.DeviceType := dtPilih Otomatis;
MediaPlayer1.FileName := (ExtractFilePath(Application.ExeName)+ 'Temp.wav');
MediaPlayer1.Buka;
MediaPlayer1.Mulai Perekaman;
BtStart.Enabled:=false;
BtStop.Diaktifkan:=true;
kecuali
BtStart.Enabled:=Benar;
BtStop.Enabled:=false;
Application.MessageBox('Inisialisasi perangkat media gagal!','Error',MB_ICONERROR+MB_OK);
akhir;
akhir;
prosedur TForm1.BtStopClick(Pengirim: TObject);
mulai
mencoba
MediaPlayer1.Berhenti;
MediaPlayer1.Simpan;
MediaPlayer1.Tutup;
Application.MessageBox('Rekaman suara selesai!','Pesan',MB_ICONINFORMATION+MB_OK);
BtStart.Enabled:=Benar;
BtStop.Enabled:=false;
kecuali
Application.MessageBox('Kesalahan saat menyimpan file suara!','Error',MB_ICONERROR+MB_OK);
BtStart.Enabled:=Benar;
BtStop.Enabled:=false;
akhir;
akhir;
akhir.
Tambahan: 1. Saat memutar file rekaman, Anda mungkin perlu meningkatkan nilai Wav dari atribut audio.
2. Jika beberapa driver audio lain diinstal pada sistem, ukuran file Wav yang direkam mungkin nol, tetapi file yang diakhiri dengan TMP akan dibuat pada saat yang sama. Mengubah ekstensinya menjadi Wav adalah file suara yang direkam. Namun hal ini jarang terjadi. (Peluangnya hampir nol^-^)
3. Program ini dapat melewatkan rekaman suara saat menjalankan Jieba dan Replayer.