Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 | 2 |

 

  Вопрос: Передача видео по IRC Добавлено: 18.05.07 11:48  

Автор вопроса:  APolyakov | Web-сайт: edu.chukotka.ru
Ребяты кто может мне помочь... Мне больше интересно как снять программно на VB с вэб-камеры фотографию. и сохранить ее в файл.

Рассказываю идею. Может как нибудь скооперируемся в разработке. У нас есть компутер на котором стоит вэб-камера. На этом же ПК стоит программа, которая подключена к IRC как пользователь и посылает в опреленный канал, либо определенному пользователю специальные сообщения (например: "JPEG:GJASHKJHKJHKDHKAJHSD....." т.е. картинку в текстовом виде) через проммежуток например 5 сек.

На стороне другого пользователя (или пользователей которые сидят в канале) стоит другой чат который этот текст сохраняет в файл и само собой показывает в окне.

Ответить

  Ответы Всего ответов: 20  

Номер ответа: 1
Автор ответа:
 APolyakov



Вопросов: 1
Ответов: 15
 Web-сайт: edu.chukotka.ru
 Профиль | | #1
Добавлено: 20.05.07 05:10
Ура нашел хороший модуль для работы с видеоустройствами может кому еще пригодиться

http://www.heroicsalmonleap.net/mle/videocapturenet/

Ответить

Номер ответа: 2
Автор ответа:
 APolyakov



Вопросов: 1
Ответов: 15
 Web-сайт: edu.chukotka.ru
 Профиль | | #2
Добавлено: 20.05.07 06:51
Ага найти то нашел, вот кто бы помог в ней разобраться...

Ответить

Номер ответа: 3
Автор ответа:
 APolyakov



Вопросов: 1
Ответов: 15
 Web-сайт: edu.chukotka.ru
 Профиль | | #3
Добавлено: 21.05.07 10:16
Нашел еще такую инфу про wiascr.dll тока тоже разобраться не могу.... Ребяты плииииз хеееееелпп!!!!

Ответить

Номер ответа: 4
Автор ответа:
 APolyakov



Вопросов: 1
Ответов: 15
 Web-сайт: edu.chukotka.ru
 Профиль | | #4
Добавлено: 22.05.07 00:45
Как хорошо иногда пообщаться с самим собой....... Ну поможет мне кто нибудь или нет... :(

Ответить

Номер ответа: 5
Автор ответа:
 HACKER


 

Разработчик Offline Client

Вопросов: 236
Ответов: 8362
 Профиль | | #5 Добавлено: 22.05.07 01:47
Разбей задачу на две части:
1) Видеозахват
2) Работа с IRC протоколом

Потом поиском найди на вб хоть что-то более мение рабочие, вникни, попытайся разобраться.

Когда будет конкретный вопрос, приходи, мы обязательно ответитм. Нет конкретного вопроса - нет конкретного ответа.

А вообще IRC протокол негодиться для передачи видео. IRC это текстовый протокол, можно конечно видеопоток кое-как на лету преобразовывать в текстовые данные, но это медленно и увеличит сильно трафик, да так что в IRC оно просто непролезит. Также тормоза на другом конце, текстовые данные назад в видеопоток нужно ведь будет конвертировать.

Вообщем задача из серии "Напишем свою ОС".

Поднадоело уже чесно говоря :\

Ответить

Номер ответа: 6
Автор ответа:
 APolyakov



Вопросов: 1
Ответов: 15
 Web-сайт: edu.chukotka.ru
 Профиль | | #6
Добавлено: 24.05.07 04:32
поиском найди на вб хоть что-то более мение рабочие

Ищу уже неделю, все примеры на С++ или Delphi или C#, С которыми я так сказать не дружу пока

А вообще IRC протокол негодиться для передачи видео

Через ИРС будет передаваться только картинка
снятая с помощью камеры в какой-то промежуток времени

Когда будет конкретный вопрос, приходи, мы обязательно ответитм.

Вопрос первоначально и был
как снять программно на VB с вэб-камеры фотографию. и сохранить ее в файл

Ответить

Номер ответа: 7
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #7 Добавлено: 24.05.07 11:00
Вот маленький примерчик работы с ыеб-камерой на дельфи, перевести его на VB не составит труда (чистый АПИ)

unit hiCamCapture;

interface

uses Windows,Kol,Share,Debug;

const
  WM_USER = $00000400;
  WM_CAP_DRIVER_CONNECT = WM_USER + 10;
  WM_CAP_DRIVER_DISCONNECT = WM_USER + 11;
  WM_CAP_SET_PREVIEW = WM_USER + 50;
  WM_CAP_SET_PREVIEWRATE = WM_USER + 52;
  WM_CAP_SET_SCALE = WM_USER + 53;

type
  THICamCapture = class(TDebug)
   private
    hCamCapture:integer;
    hHandle:HWND;
    intDevice:integer;
    sCaptureWindow:string;

   public
    _data_Scale:THI_Event;
    _data_RefreshRate:THI_Event;
    _data_Handle:THI_Event;
    _event_onCapture:THI_Event;

    procedure _work_doCapture(var _Data:TData; Index:word);
    procedure _var_Handle(var _Data:TData; Index:word);
  end;

implementation
function capCreateCaptureWindow (lpszWindowName : PChar; dwStyle : Integer; x : Integer; y : Integer; nWidth : Integer; nHeight : Integer; hWndParent : Integer; nID : Integer) : Integer; stdcall; external 'avicap32' name 'capCreateCaptureWindowA'

procedure THICamCapture._work_doCapture;
var
  dt:TData;
  r:TRect;
begin
  sCaptureWindow:='hiCamCapture';
  hHandle := ReadInteger(_Data,_data_Handle,0);
  GetWindowRect(hHandle,r);
  hCamCapture := capCreateCaptureWindow(PChar(sCaptureWindow), WS_VISIBLE + WS_CHILD, 0, 0, r.right-r.left, r.bottom-r.top, hHandle, 0);
  SendMessage(hCamCapture, WM_CAP_DRIVER_DISCONNECT, Longint(@sCaptureWindow), 0);
  SendMessage(hCamCapture, WM_CAP_DRIVER_CONNECT, intDevice, 0);
  SendMessage(hCamCapture, WM_CAP_SET_SCALE, ReadInteger(_Data,_data_Scale,1), 0);
  SendMessage(hCamCapture, WM_CAP_SET_PREVIEWRATE, ReadInteger(_Data,_data_RefreshRate,10), 0);
  SendMessage(hCamCapture, WM_CAP_SET_PREVIEW, 1, 0);
  dt.data_type := data_int;
  dt.idata := hCamCapture;
  _hi_OnEvent(_event_onCapture,dt);
end;

procedure THICamCapture._var_Handle;
begin
  _Data.data_type := data_int;
  _Data.idata := hCamCapture;
end;

end.

Ответить

Номер ответа: 8
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #8 Добавлено: 24.05.07 11:12
ыеб-камерой

веб-камерой, конечно же =)

Собственно все сводится к работе с функцией
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 (бес плюсов, естественно)

Ответить

Номер ответа: 9
Автор ответа:
 APolyakov



Вопросов: 1
Ответов: 15
 Web-сайт: edu.chukotka.ru
 Профиль | | #9
Добавлено: 25.05.07 00:38
Спасибо большое :) но если можно все таки на ВБ, я с дельфями не дружу, да и с API как то не очень

Ответить

Номер ответа: 10
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #10 Добавлено: 25.05.07 08:19
У меня отображает черный квадрат. Точно проблема с моим драйвером. У тебя наверное заработает.
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
  
  sCaptureWindow = "hiCamCapture"
  hHandle = Picture1.hwnd
  GetWindowRect hHandle, r
  hCamCapture = capCreateCaptureWindow(sCaptureWindow, WS_VISIBLE + WS_CHILD, 0, 0, r.Right - r.Left, r.Bottom - r.Top, hHandle, 0)
  SendMessage hCamCapture, WM_CAP_DRIVER_DISCONNECT, StrPtr(sCaptureWindow), 0
  SendMessage hCamCapture, WM_CAP_DRIVER_CONNECT, intDevice, 0
  SendMessage hCamCapture, WM_CAP_SET_SCALE, 1, 0
  SendMessage hCamCapture, WM_CAP_SET_PREVIEWRATE, 10, 0
  SendMessage hCamCapture, WM_CAP_SET_PREVIEW, 1, 0

End Sub


PS
Блин, хоть бы это сообщение не мультипостилось =)

Ответить

Номер ответа: 11
Автор ответа:
 APolyakov



Вопросов: 1
Ответов: 15
 Web-сайт: edu.chukotka.ru
 Профиль | | #11
Добавлено: 25.05.07 09:46
:( Блин Такая же фигня, При повторном нажатии на кнопку выдает ошибку ВБ, Может где-то в кончтантах че-нить поправить????

Ответить

Номер ответа: 12
Автор ответа:
 APolyakov



Вопросов: 1
Ответов: 15
 Web-сайт: edu.chukotka.ru
 Профиль | | #12
Добавлено: 25.05.07 09:49
Меня смущает

hHandle = Picture1.hwnd
GetWindowRect hHandle, r

а потом

r.Right - r.Left, r.Bottom - r.Top, hHandle, 0)

Ответить

Номер ответа: 13
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #13 Добавлено: 25.05.07 12:03
У меня нет возможности проверить. Я вчера пробовал в 2:00 ночи. Так и не поставил дрова (камера не определяется как устройство видеовхода никакими прогами)
Я даже скажу что скорее всего дело в константах или всетаки у тебя в дровах к камере.
Советую поискать Гуглей: VB6 capCreateCaptureWindow WM_CAP_DRIVER_CONNECT
У меня и Гуглей пользоваться нет возможности. Только почта и аська (с этого дня)
Если разберешься - пость тут ответ. Мне тоже интересно работать с веб-камерой на VB

Ответить

Номер ответа: 14
Автор ответа:
 ZagZag



ICQ: 295002202 

Вопросов: 87
Ответов: 1684
 Профиль | | #14 Добавлено: 25.05.07 23:20
Кажись нашел.
http://www.codeproject.com/useritems/webcamcapture.asp
'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(";Dixanta 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

Ответить

Номер ответа: 15
Автор ответа:
 APolyakov



Вопросов: 1
Ответов: 15
 Web-сайт: edu.chukotka.ru
 Профиль | | #15
Добавлено: 26.05.07 07:24
Понял че за беда, Просто у меня Камера Logitec не поддерживает этот интерфейс работы. Зато другая Creative нормально работает. Правда в окне показывает видео, а как мне сохранить фотку????? И как бы интересно чтобы со всеми камерами работало

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам