Visual Basic, .NET, ASP, VBScript
 

   
   
     

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

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

 

  Вопрос: IP camera +VB.NET Добавлено: 24.01.11 02:54  

Автор вопроса:  ВВВ

Ответить

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

Номер ответа: 16
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #16 Добавлено: 25.01.11 16:33
забыл упомянуть, что лучше всего использовать в качестве буфера. List(Of Byte), Byte() аль что еще

Ответить

Номер ответа: 17
Автор ответа:
 ВВВ



Вопросов: 1
Ответов: 16
 Профиль | | #17 Добавлено: 25.01.11 17:05
камера отдает поток MJPEG
EROS пишет:
1. Создается буфер размеров в 2-3 кадра
2. Полученный с камеры поток пишешь в буфер.

с этим понятно
маркер начала и конца кадра дайте, плиз. в инете по MJPEG только оборудование вываливается. если есть у кого описание MJPEG - бросьте, плиз, на мыло igor.rubas@gmail.com
заранее благодарен

Ответить

Номер ответа: 18
Автор ответа:
 ВВВ



Вопросов: 1
Ответов: 16
 Профиль | | #18 Добавлено: 25.01.11 17:07
если не трудно - обозначьте маркер начало/конец кадра, и если есть описание MJPEG - бросьте, плиз, на мыло igor.rubas@gmail.com
заранее благодарен

Ответить

Номер ответа: 19
Автор ответа:
 ВВВ



Вопросов: 1
Ответов: 16
 Профиль | | #19 Добавлено: 25.01.11 22:33
в GOOGLE только не посылайте :-) на запрос :"протокол MJPEG" 20 страниц про девайсы.... у кого может есть инфа по протоколам- давайте ее общедоступной сделаем?

Ответить

Номер ответа: 20
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #20
Добавлено: 25.01.11 22:59
Потому что запрос не верный. Надо запрашивать типа ID3V2/MJPEG/anything_else spec/specification/specs

Ответить

Номер ответа: 21
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #21 Добавлено: 26.01.11 01:11
AgentFire пишет:
забыл упомянуть, что лучше всего использовать в качестве буфера. List(Of Byte), Byte() аль что еще

только не List(Of Byte)

Ответить

Номер ответа: 22
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #22 Добавлено: 26.01.11 10:34
почему

Ответить

Номер ответа: 23
Автор ответа:
 ВВВ



Вопросов: 1
Ответов: 16
 Профиль | | #23 Добавлено: 26.01.11 10:45
Winand пишет:
Потому что запрос не верный. Надо запрашивать типа ID3V2/MJPEG/anything_else spec/specification/specs

хз - наверное,у меня гугля неправильная , результат практически такой же, как и при моем запросе.
есть у кого маркер начала/конца кадра для MJPEG? дайте, плиз.

Ответить

Номер ответа: 24
Автор ответа:
 Winand



Вопросов: 87
Ответов: 2795
 Web-сайт: winandfx.narod.ru
 Профиль | | #24
Добавлено: 26.01.11 13:45
это не спеки, но важно http://www.faqs.org/faqs/jpeg-faq/part1/section-20.html

Ответить

Номер ответа: 25
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #25 Добавлено: 26.01.11 14:18
Artyom пишет:

только не List(Of Byte)

AgentFire пишет:
почему


медленно

Ответить

Номер ответа: 26
Автор ответа:
 AgentFire



ICQ: 192496851 

Вопросов: 75
Ответов: 3178
 Профиль | | #26 Добавлено: 26.01.11 15:20
какие тогда наибыстрейшие способы "подрезания" массива с его начала?

Ответить

Номер ответа: 27
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #27 Добавлено: 26.01.11 17:33
создать новый массив нужного размера и скопировать в него данные из старого через Array.Copy

Ответить

Номер ответа: 28
Автор ответа:
 Artyom



Разработчик

Вопросов: 130
Ответов: 6602
 Профиль | | #28 Добавлено: 26.01.11 17:42
Это кстати, насчет подрезания.
Если нужно просто сместить данные из конца в начало, есть хитрый быстрый способ без привлечения дополнительной памяти

Ответить

Номер ответа: 29
Автор ответа:
 ВВВ



Вопросов: 1
Ответов: 16
 Профиль | | #29 Добавлено: 28.01.11 20:58
может кому пригодится - задача решилась очень просто - прочитал кусок потока, все маркеры видно в html-формате
на форме надо 2 контрола - picturebox & button. обращение к камере через сокет
  1.  
  2. Imports System.Text
  3. Imports System.IO
  4.  
  5. Public Class c_cam
  6.     Private c_socket As New Net.Sockets.TcpClient
  7.     Dim c_autoreconnect As Boolean
  8.     Dim c_datathread As Threading.Thread
  9.     Dim c_changed As Boolean
  10.     Dim c_lf As String
  11.     Dim c_datarecived As Integer
  12.     Private WithEvents c_timer As New System.Timers.Timer
  13.     Event Reconnection(ByVal form1 As c_cam)
  14.     Const GetPath As String = "/videostream.cgi" '"/snapshot.cgi"
  15.     Public Const GetDevider As String = ""
  16.  
  17.  
  18.     Private Function Crypt(ByVal login As String, ByVal password As String) As String
  19.         Return Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(String.Format("{0}:{1}", login, password)))
  20.     End Function
  21.  
  22.     Private Sub RunConnection(ByVal c_ip As String, ByVal c_port As Integer)
  23.         Dim resp As New Net.Sockets.TcpClient() 'Нам будет достаточно этой оболочки
  24.  
  25.         Try
  26.             resp.Connect(c_ip, c_port) 'Коннектимся к камере
  27.             c_socket = resp
  28.             Dim header As String = String.Format(My.Resources.HTTP_REQUEST & vbNewLine & vbNewLine, c_ip, c_port, GetPath, Crypt("admin", "1234"))
  29.             resp.Client.Send(Encoding.Default.GetBytes(header))
  30.             Me.OnConnect()
  31.         Catch ex As Exception
  32.             'Debug.Print("CAN'T CONNECT TO CAM: " & c_ip & ":" & c_port)
  33.             If c_autoreconnect Then
  34.                 RaiseEvent Reconnection(Me)
  35.                 c_reconnecttimer.Start()
  36.                 Exit Sub
  37.             Else
  38.                 Exit Sub
  39.             End If
  40.         End Try
  41.  
  42.         c_datathread = New Threading.Thread(AddressOf ReciveData) With {.Name = "CAM_DATA:" & c_ip & ":" & c_port} 'Запускаем асинхронный поток получения данных  с IP камеры
  43.         c_datathread.Start(resp)
  44.     End Sub
  45.     Private c_queuestrbuffer As String = "" 'Это и есть наш буфер.
  46.     Dim bMap As Bitmap
  47.  
  48.     Private Sub ReciveData(ByVal wr As Net.Sockets.TcpClient)
  49.  
  50.         Dim d(1024 * 900) As Byte 'Буффер данных
  51.         Dim dev As String = "--ipcamera" 'c_cam.GetDevider end - FFD9
  52.         While True
  53.             Dim cnt As Integer
  54.             Try
  55.                 cnt = wr.Client.Receive(d) 'Вызывается синхронный метод получения данных.
  56.             Catch ex As Exception
  57.                 Exit Sub 'Исключение возникает при разрыве подключения и прочих проблемах с соединением.
  58.             End Try
  59.  
  60.             If cnt = 0 Then Exit While 'Если нет данных - верный признак ошибки соединения
  61.             c_queuestrbuffer &= System.Text.Encoding.Default.GetString(d, 0, cnt)
  62.  
  63.             Dim p() As String = Split(c_queuestrbuffer, dev)
  64.  
  65.             If p.Length > 2 Then
  66.                 Dim c() As String = Split(p(1), vbNewLine & vbNewLine, 2)
  67.                 If c.Length = 2 Then
  68.                     c_lf = c(1) 'Получаем последний фрейм (кадр)
  69.                     'RaiseEvent Frame(System.Text.Encoding.Default.GetBytes(c_lf))
  70.                     Dim m As New IO.MemoryStream(System.Text.Encoding.Default.GetBytes(c_lf))
  71.                     Dim bmp As Bitmap = Bitmap.FromStream(m)
  72.                     PictureBox1.Image = bmp
  73.             
  74.                 End If
  75.                 c_queuestrbuffer = dev & p(p.Length - 1)
  76.             Else
  77.                 'c_queuestrbuffer = dev & p(p.Length)
  78.             End If
  79.             c_datarecived += cnt
  80.         End While
  81.  
  82.  
  83.     End Sub
  84.  
  85.     Private Sub OnConnect()
  86.         Me.Text = "connect!"
  87.     End Sub
  88.     Public Event FrameDropped(ByVal dropscount As Integer)
  89.     Public Event Frame(ByVal f() As Byte)
  90.     Private c_dropedframes As Integer = 0
  91.  
  92.     Private Sub c_cam_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
  93.         c_datathread.Abort()
  94.     End Sub
  95.  
  96.     Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
  97.         RunConnection("192.168.2.178", "80")
  98.     End Sub

Ответить

Номер ответа: 30
Автор ответа:
 EROS



Вопросов: 58
Ответов: 4255
 Профиль | | #30 Добавлено: 28.01.11 21:12
криво и безграмотно..

Ответить

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

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



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