Автор вопроса: APolyakov | Web-сайт:edu.chukotka.ru
Ребяты кто может мне помочь... Мне больше интересно как снять программно на VB с вэб-камеры фотографию. и сохранить ее в файл.
Рассказываю идею. Может как нибудь скооперируемся в разработке. У нас есть компутер на котором стоит вэб-камера. На этом же ПК стоит программа, которая подключена к IRC как пользователь и посылает в опреленный канал, либо определенному пользователю специальные сообщения (например: "JPEG:GJASHKJHKJHKDHKAJHSD....." т.е. картинку в текстовом виде) через проммежуток например 5 сек.
На стороне другого пользователя (или пользователей которые сидят в канале) стоит другой чат который этот текст сохраняет в файл и само собой показывает в окне.
Разбей задачу на две части:
1) Видеозахват
2) Работа с IRC протоколом
Потом поиском найди на вб хоть что-то более мение рабочие, вникни, попытайся разобраться.
Когда будет конкретный вопрос, приходи, мы обязательно ответитм. Нет конкретного вопроса - нет конкретного ответа.
А вообще IRC протокол негодиться для передачи видео. IRC это текстовый протокол, можно конечно видеопоток кое-как на лету преобразовывать в текстовые данные, но это медленно и увеличит сильно трафик, да так что в IRC оно просто непролезит. Также тормоза на другом конце, текстовые данные назад в видеопоток нужно ведь будет конвертировать.
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal nID As Long) As Long
Вот меня больше работа с IRC интересует. Если есть примерчик, скиньте тут или мне zagzag2003+@+mail.ru (бес плюсов, естественно)
У меня отображает черный квадрат. Точно проблема с моим драйвером. У тебя наверное заработает.
Option Explicit
Private Const WM_USER As Long = &H400
Private Const WM_CAP_START As Long = WM_USER
Private Const WM_CAP_DRIVER_CONNECT As Long = (WM_CAP_START + 10)
Private Const WM_CAP_DRIVER_DISCONNECT As Long = (WM_CAP_START + 11)
Private Const WM_CAP_DRIVER_GET_CAPS As Long = (WM_CAP_START + 14)
Private Const WM_CAP_SET_PREVIEW As Long = (WM_CAP_START + 50)
Private Const WM_CAP_SET_PREVIEWRATE As Long = (WM_CAP_START + 52)
Private Const WM_CAP_SET_SCALE As Long = (WM_CAP_START + 53)
Private Const WS_CHILD As Long = &H40000000
Private Const WS_VISIBLE As Long = &H10000000
Private Type RECT
Left As Long
Top As Long
Right As Long
Bottom As Long
End Type
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal lpszWindowName As String, ByVal dwStyle As Long, ByVal x As Long, ByVal y As Long, ByVal nWidth As Long, ByVal nHeight As Long, ByVal hWndParent As Long, ByVal nID As Long) As Long
Private Declare Function GetWindowRect Lib "user32.dll" (ByVal hwnd As Long, ByRef lpRect As RECT) As Long
Private Declare Function SendMessage Lib "user32.dll" Alias "SendMessageA" (ByVal hwnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByRef lParam As Any) As Long
Private Sub Command1_Click()
Dim hCamCapture As Long
Dim hHandle As Long
Dim intDevice As Long
Dim sCaptureWindow As String
Dim r As RECT
У меня нет возможности проверить. Я вчера пробовал в 2:00 ночи. Так и не поставил дрова (камера не определяется как устройство видеовхода никакими прогами)
Я даже скажу что скорее всего дело в константах или всетаки у тебя в дровах к камере.
Советую поискать Гуглей: VB6 capCreateCaptureWindow WM_CAP_DRIVER_CONNECT
У меня и Гуглей пользоваться нет возможности. Только почта и аська (с этого дня)
Если разберешься - пость тут ответ. Мне тоже интересно работать с веб-камерой на VB
'This program check whether webcam is available or not
' if available then capture and displays in picture box
'Created by Dixanta Bahadur Shrestha
'Created Date: 12-March-2006
'Programmer does not garuntees if not functions well
Private Const ws_child As Long = &H40000000
Private Const ws_visible As Long = &H10000000
Private Const WM_USER = 1024
Private Const wm_cap_driver_connect = WM_USER + 10
Private Const wm_cap_set_preview = WM_USER + 50
Private Const WM_CAP_SET_PREVIEWRATE = WM_USER + 52
Private Const WM_CAP_DRIVER_DISCONNECT As Long = WM_USER + 11
Private Const WM_CAP_DLG_VIDEOFORMAT As Long = WM_USER + 41
Private Declare Function SendMessage Lib "user32" Alias "SendMessageA" (ByVal hWnd As Long, ByVal wMsg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long
Private Declare Function capCreateCaptureWindow Lib "avicap32.dll" Alias "capCreateCaptureWindowA" (ByVal a As String, ByVal b As Long, ByVal c As Integer, ByVal d As Integer, ByVal e As Integer, ByVal f As Integer, ByVal g As Long, ByVal h As Integer) As Long
Dim hwdc As Long
Dim startcap As Boolean
Private Sub cmdCapture_Click()
Dim temp As Long
hwdc = capCreateCaptureWindow("ixanta Vision System", ws_child Or ws_visible, 0, 0, 320, 240, Picture1.hWnd, 0)
If (hwdc <> 0) Then
temp = SendMessage(hwdc, wm_cap_driver_connect, 0, 0)
temp = SendMessage(hwdc, wm_cap_set_preview, 1, 0)
temp = SendMessage(hwdc, WM_CAP_SET_PREVIEWRATE, 30, 0)
startcap = True
Else
MsgBox ("No Webcam found"
End If
End Sub
Private Sub cmdClose_Click()
Dim temp As Long
If startcap = True Then
temp = SendMessage(hwdc, WM_CAP_DRIVER_DISCONNECT, 0&, 0&
startcap = False
End If
End Sub
Private Sub cmdVideoFormat_Click()
Dim temp As Long
If startcap = True Then
temp = SendMessage(hwdc, WM_CAP_DLG_VIDEOFORMAT, 0&, 0&
End If
End Sub
Понял че за беда, Просто у меня Камера Logitec не поддерживает этот интерфейс работы. Зато другая Creative нормально работает. Правда в окне показывает видео, а как мне сохранить фотку????? И как бы интересно чтобы со всеми камерами работало