Kepengen gak sich kira2 kamu tahu gimana tuh Messenger2 bisa nampilin gambar kamu di aplikasi mereka??? Apalagi kalo kita bisa video chat. Wah seru kali yeee. Tapi untuk pokok bahasan kali ini aku cuma kepengen fokus dulu sama gimana caranya gabungin webcam di aplikasi kamu. Ntar kali yee untuk video Chat aku bikin topik baru lagi... Oke Bos???
Pada topik kali ini kita akan berhubungan dengan yang namanya Programming Video For Windows. Sebelum kita memulai, pastikan komputer kamu sudah ada webcamnya. trus kalo bisa dah diinstall juga drivernya. pokoknya kamu bisa lihat wajah kamu sendiri. alias dah dicoba dulu gitu loh.. Cara nyobanya, buka windows explorer (Windows XP yaa). trus lanjutkan klik webcam kamu di bawah drive. kalo gak salah deket2 sama My Network Places deh.. Kalo emang dah bener install drivernya pasti gambar kamu muncul deh... hihihi... lanjut ya..
Aplikasi kita kali ini memanfaatkan Win32 API nya windows XP. Melalui Win32 API ini kita capture gambar video kamu trus dimasukkan ke window aplikasi kamu. Ada beberapa langkah yang harus dilakukan untuk proses capturing ini :
1. Buat window untuk nampung cap
Pada proses ini kita manfaatkan capCreateCaptureWindowA function.
Waktu fungsi ini dipanggil handlenya tuh window baru trus kamu bisa bagusin deh window kamu dengan mengubah-ubah style paramaternya.
lwndC = capCreateCaptureWindowA("My Capture Window", WS_CHILD Or WS_VISIBLE, 0, 0, 160, 120, Me.hwnd, 0)
Ini cuma contoh aja. definisi fungsi, parameter dan konstantanya dah aku buatin di modul VB6.
2. Nyambungin Window yang tadi dah dibuat ke video drivernya
iya dong... kan supaya aplikasi tahu yang mo dicapture tuh webcam yang mana.. tul gak??? Perintahnya adalah :
SendMessage lwnd, WM_CAP_DRIVER_CONNECT, 0, 0. Tapi aku dah modif jadi gampang :
capDriverConnect lwnd, 0
- passing String ke SendMessage :
Declare Function SendMessageS Lib "user32" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Integer, ByVal lParam As String) As Long
- Passing Struktur ke SendMessage :
Dim CAP_PARAMS As CAPTUREPARMS
capCaptureGetSetup lwndC, VarPtr(CAP_PARAMS), Len(CAP_PARAMS)
- Proses Gambar dari Video Stream :
capSetCallbackOnFrame lwndC, AddressOf MyFrameCallback
MyFrameCallback, Itu fungsi yang setiap kali pasti dipanggil kalo ada frame baru yang diterima dari video drivernya. Trus kamu tangkep handlenya yang didefinisikan sebagai VIDEOHDR.
Type VIDEOHDRdimana lpData adalah data aktual dari devicenya. Berikut ini contoh fungsinya yang dah siap dipake.
lpData As Long '// address of video buffer
dwBufferLength As Long '// size, in bytes, of the Data buffer
dwBytesUsed As Long '// see below
dwTimeCaptured As Long '// see below
dwUser As Long '// user-specific data
dwFlags As Long '// see below
dwReserved(3) As Long '// reserved; do not use
End Type
Function MyFrameCallback(ByVal lwnd As Long, ByVal lpVHdr As Long) As LongRtlMoveMemory, itu juga harus dideklarasikan dulu lho... kayak gini nih contohnya :
Debug.Print "FrameCallBack"
Dim VideoHeader As VIDEOHDR
Dim VideoData() As Byte
'//Fill VideoHeader with data at lpVHdr
RtlMoveMemory VarPtr(VideoHeader), lpVHdr, Len(VideoHeader)
'// Make room for data
ReDim VideoData(VideoHeader.dwBytesUsed)
'//Copy data into the array
RtlMoveMemory VarPtr(VideoData(0)), VideoHeader.lpData, VideoHeader.dwBytesUsed
Debug.Print VideoHeader.dwBytesUsed
Debug.Print VideoData
End Function
Declare Sub RtlMoveMemory Lib "kernel32" (ByVal hpvDest As Long, ByVal hpvSource As Long, ByVal cbCopy As Long)
Udahan dulu yach... Aku punya source code lengkap untuk webcam sederhana ini... Jgn lupa kasih komentar yg bagus2 yach... Aku kan capek dah nulis lho! hihihi....
>>Webcam-Simple
>>Webcam-Advanced
>>Password : sholat
Wass,
Arnie
11 komentar:
Mbak,
Aku minta source codenya dong... trus cepet dong mbak topik yang Video Chatnya diterbitkan...
Ditunggu yach...
rasyid78@yahoo.com
Slam KEnal,, AKu lg pgn coba bikin akses webcam yang bsa aku streaming dr tempat lain melalui web atau jaringan.. mudah2xan Mbak bisa membantu..
masshen@yahoo.com
salam sukses,
saya ucapkan terima kasih banyak, moga ilmu yang disebarkan ini menambah kebarokahan buat Mbak, dan moga sukses selalu
Wahhhh,,,,
makasih bnyk ya mbakk,,,
ni ckup membantu untk progress TA sy nih :)
skali lg makasih ya..
wassalam ^^
berguna banget mbak tutornya.. manteb dah mbak.. eh iya, tapi gimana klo buat lap bahasa multimedia mbak?? yang maen jaringan?? dan menggunakan full duplex dalam streamingnya.. mohon pencerahannya....
asslamualaikum....
kalo mau nampilin capture 2 webcame di picturebox dalam 1 form gmana?
jadi dalam 1 form ada 2 pisturebox yang nampilin gambar dari 2 webcam
jazakumullah khairan
klu mo crop image gimana mba..
MANTAP
Semoga Allah memberikan pahala yang Besar buat Mbak Arnie
waaah....pas banget postingannya ama tugas akhir saya.makasih ya mba.
btw,saya perlu aplikasi capture juga mba,,auto sama pake timer. mba punya contoh source codenya ga mba?
terima kasih
Mantap mba... program2nya sangat bermanfaat
Salam Kenal semua...
Mbak, ada contoh coding deteksi wajah nya gak..(Terserah deh pake metode yang mana, kayak eigenface boleh juga..)
Thanks before,..
*Email saya : rawikoeriadi@yahoo.co.id
Posting Komentar