Apakah komputer Anda memiliki kamera? Apakah Anda akan berpikir tentang cara mencapainya ketika Anda melihat orang lain bermain dengan QQ?
Di sini kami memperkenalkan bahwa menggunakan Delphi untuk menggunakan MS AVICAP32.dll untuk dengan mudah menerapkan pemrograman kamera.
Jika Anda menambahkan tingkat pemrograman jaringan Anda, menerapkan obrolan video tidak akan menjadi masalah.
Lihat kode di bawah ini:
const wm_cap_start = wm_user;
const wm_cap_stop = wm_cap_start + 68;
const wm_cap_driver_connect = wm_cap_start + 10;
const wm_cap_driver_disconnect = wm_cap_start + 11;
const wm_cap_savedib = wm_cap_start + 25;
const wm_cap_grab_frame = wm_cap_start + 60;
const wm_cap_sequence = wm_cap_start + 62;
const wm_cap_file_set_capture_filea = wm_cap_start + 20;
const wm_cap_ceseence_nofile = wm_cap_start+ 63
const wm_cap_set_overlay = wm_cap_start+ 51
const wm_cap_set_preview = wm_cap_start+ 50
const wm_cap_set_callback_videostream = wm_cap_start +6;
const wm_cap_set_callback_error = wm_cap_start +2;
const wm_cap_set_callback_statusa = wm_cap_start +3;
const wm_cap_set_callback_frame = wm_cap_start +5;
const wm_cap_set_scale = wm_cap_start+ 53
const wm_cap_set_previewrate = wm_cap_start+ 52
Fungsi CapCreateCaptureWindowa (lpszwindowname: pchar; dwstyle: longint; x: integer;
y: integer; nwidth: integer; nheight: integer; parentwin: hwnd;
nid: integer): hwnd; stdcall eksternal 'avicap32.dll';
Kode di atas adalah definisi fungsi dan konstan yang terutama kita gunakan.
OK, buka Delphi Anda, buat proyek baru, dan tambahkan definisi di atas.
Buat jendela baru, letakkan panel di atasnya, tambahkan tombol, dan atur teks ke "Mulai"
Di sini Anda perlu mendefinisikan variabel global, var hwndc: thandle;
Kode tombol start adalah sebagai berikut:
Mulai
HWNDC: = CapCreateCaptureWindowa ('Jendela Tangkap Saya Sendiri', WS_CHILD atau WS_VISIBLE, PANEL1.LEFT, PANEL1.TOP, PANEL1.WIDTH, PANEL1.HEIGHT, Form1.Handle, 0);
HWNDC: = CapCreateCaptureWindowa ('Jendela Tangkap Saya Sendiri', WS_CHILD atau WS_VISIBLE, PANEL1.LEFT, PANEL1.TOP, PANEL1.WIDTH, PANEL1.HEIGHT, Form1.Handle, 0);
Jika hwndc <> 0 lalu
Mulai
SendMessage (hwndc, wm_cap_set_callback_videostream, 0, 0);
SendMessage (hwndc, wm_cap_set_callback_error, 0, 0);
SendMessage (hwndc, wm_cap_set_callback_statusa, 0, 0);
SendMessage (hwndc, wm_cap_driver_connect, 0, 0);
SendMessage (hwndc, wm_cap_set_scale, 1, 0);
SendMessage (hwndc, wm_cap_set_previewrate, 66, 0);
SendMessage (hwndc, wm_cap_set_overlay, 1, 0);
SendMessage (hwndc, wm_cap_set_preview, 1, 0);
akhir;
Tekan F9 untuk menjalankannya, bagaimana dengan itu?
Lalu bagaimana cara berhenti? Tambahkan teks lain untuk "berhenti"
Kodenya adalah sebagai berikut:
Jika hwndc <> 0 maka mulailah
SendMessage (hwndc, wm_cap_driver_disconnect, 0, 0);
hwndc: = 0;
akhir;
Layar video disaring, bagaimana cara menyimpannya?
Berikut ini disimpan dalam dua cara, satu adalah diagram statis BMP dan yang lainnya adalah animasi AVI.
Letakkan tiga tombol di formulir, dan atur teks ke "Save BMP", "Mulai Perekaman Video", dan "Stop Video Recording" masing -masing.
Kode tiga tombol adalah sebagai berikut:
// Simpan BMP
Jika hwndc <> 0 maka mulailah
SendMessage (hwndc, wm_cap_savedib, 0, longint (pchar ('c: //test.bmp')));
akhir;
// Mulai perekaman video
Jika hwndc <> 0 lalu
Mulai
SendMessage (hwndc, wm_cap_file_set_capture_filea, 0, longint (pchar ('c: //test.avi')));
SendMessage (hwndc, wm_cap_sequence, 0, 0);
akhir;
// Berhenti merekam
Jika hwndc <> 0 maka mulailah
SendMessage (hwndc, wm_cap_stop, 0, 0);
akhir;
Jalankan lagi dan lihatlah. . Anda dapat menyimpan beberapa gambar untuk dilihat, atau Anda dapat merekamnya ke Avi dan menikmatinya secara perlahan.
Efek menjalankan program: [peta terkait]
Kode program lengkap adalah sebagai berikut:
unit unit1;
antarmuka
penggunaan
Windows, pesan, sysutils, varian, kelas, grafik, kontrol, formulir,
Dialog, stdctrls, extctrls;
jenis
Tform1 = class (tform)
Panel1: tpanel;
Button1: tbutton;
Button2: tbutton;
Button3: tbutton;
Button4: tbutton;
Tombol5: tbutton;
Prosedur Button1Click (pengirim: Tobject);
Prosedur Button2Click (pengirim: Tobject);
Prosedur Button3Click (pengirim: Tobject);
Prosedur Button4Click (pengirim: Tobject);
Prosedur Button5Click (pengirim: Tobject);
Prosedur FormClose (pengirim: Tobject; var Action: tcloseaction);
Pribadi
Hwndc: Thandle;
publik
{Deklarasi Publik}
akhir;
var
Form1: tform1;
const wm_cap_start = wm_user;
const wm_cap_stop = wm_cap_start + 68;
const wm_cap_driver_connect = wm_cap_start + 10;
const wm_cap_driver_disconnect = wm_cap_start + 11;
const wm_cap_savedib = wm_cap_start + 25;
const wm_cap_grab_frame = wm_cap_start + 60;
const wm_cap_sequence = wm_cap_start + 62;
const wm_cap_file_set_capture_filea = wm_cap_start + 20;
const wm_cap_ceseence_nofile = wm_cap_start+ 63
const wm_cap_set_overlay = wm_cap_start+ 51
const wm_cap_set_preview = wm_cap_start+ 50
const wm_cap_set_callback_videostream = wm_cap_start +6;
const wm_cap_set_callback_error = wm_cap_start +2;
const wm_cap_set_callback_statusa = wm_cap_start +3;
const wm_cap_set_callback_frame = wm_cap_start +5;
const wm_cap_set_scale = wm_cap_start+ 53
const wm_cap_set_previewrate = wm_cap_start+ 52
Function CapCreateCaptureWindowa (lpszwindowname: pchar;
dwstyle: longint; x: integer; y: integer; nwidth: integer;
nheight: integer; parentwin: hwnd; nid: integer): hwnd;
Stdcall eksternal 'avicap32.dll';
Pelaksanaan
{$ R *.dfm}
Prosedur TFORM1.BUTTON1CLICK (Pengirim: Tobject);
Mulai
HWNDC: = CapCreateCaptureWindowa ('Jendela Tangkap Saya Sendiri', WS_CHILD atau WS_VISIBLE, PANEL1.LEFT, PANEL1.TOP, PANEL1.WIDTH, PANEL1.HEIGHT, Form1.Handle, 0);
HWNDC: = CapCreateCaptureWindowa ('Jendela Tangkap Saya Sendiri', WS_CHILD atau WS_VISIBLE, PANEL1.LEFT, PANEL1.TOP, PANEL1.WIDTH, PANEL1.HEIGHT, Form1.Handle, 0);
Jika hwndc <> 0 lalu
Mulai
SendMessage (hwndc, wm_cap_set_callback_videostream, 0, 0);
SendMessage (hwndc, wm_cap_set_callback_error, 0, 0);
SendMessage (hwndc, wm_cap_set_callback_statusa, 0, 0);
SendMessage (hwndc, wm_cap_driver_connect, 0, 0);
SendMessage (hwndc, wm_cap_set_scale, 1, 0);
SendMessage (hwndc, wm_cap_set_previewrate, 66, 0);
SendMessage (hwndc, wm_cap_set_overlay, 1, 0);
SendMessage (hwndc, wm_cap_set_preview, 1, 0);
akhir;
akhir;
Prosedur TFORM1.BUTTON2CLICK (Pengirim: Tobject);
Mulai
Jika hwndc <> 0 maka mulailah
SendMessage (hwndc, wm_cap_driver_disconnect, 0, 0);
hwndc: = 0;
akhir;
akhir;
Prosedur TFORM1.BUTTON3CLICK (Pengirim: Tobject);
Mulai
Jika hwndc <> 0 maka mulailah
SendMessage (hwndc, wm_cap_savedib, 0, longint (pchar ('c: //test.bmp')));
akhir;
akhir;
Prosedur TFORM1.BUTTON4CLICK (Pengirim: Tobject);
Mulai
Jika hwndc <> 0 lalu
Mulai
SendMessage (hwndc, wm_cap_file_set_capture_filea, 0, longint (pchar ('c: //test.avi')));
SendMessage (hwndc, wm_cap_sequence, 0, 0);
akhir;
akhir;
Prosedur TFORM1.BUTTON5CLICK (Pengirim: Tobject);
Mulai
Jika hwndc <> 0 maka mulailah
SendMessage (hwndc, wm_cap_stop, 0, 0);
akhir;
akhir;
Prosedur TFORM1.FORMCLOSE (pengirim: Tobject; var Tindakan: tcloseaction);
Mulai
Jika hwndc <> 0 maka mulailah
SendMessage (hwndc, wm_cap_driver_disconnect, 0, 0);
akhir;
akhir;
akhir.
Jika komputer tidak memiliki kamera tetapi ingin melihat efek program, apakah itu OK?
Haha, tentu saja, Anda dapat menemukan kamera virtual dan melakukannya.
Ini dapat disimulasikan sebagai kamera "asli".
Mengenai pemrograman kamera, Anda juga dapat melihat set komponen VCL ini: DSPACK. , 2000 dan Windows XP.
Oke, perkenalkan ini. untuk mengimplementasikan.