Страница: 1 | 2 | 3 | 4 |
|
Вопрос: IP camera +VB.NET
|
Добавлено: 24.01.11 02:54
|
|
Номер ответа: 17 Автор ответа: ВВВ
Вопросов: 1 Ответов: 16
|
Профиль | | #17
|
Добавлено: 25.01.11 17:05
|
камера отдает поток MJPEG
EROS пишет:
1. Создается буфер размеров в 2-3 кадра
2. Полученный с камеры поток пишешь в буфер.
с этим понятно
маркер начала и конца кадра дайте, плиз. в инете по MJPEG только оборудование вываливается. если есть у кого описание MJPEG - бросьте, плиз, на мыло igor.rubas@gmail.com
заранее благодарен
Ответить
|
Номер ответа: 23 Автор ответа: ВВВ
Вопросов: 1 Ответов: 16
|
Профиль | | #23
|
Добавлено: 26.01.11 10:45
|
Winand пишет:
Потому что запрос не верный. Надо запрашивать типа ID3V2/MJPEG/anything_else spec/specification/specs
хз - наверное,у меня гугля неправильная , результат практически такой же, как и при моем запросе.
есть у кого маркер начала/конца кадра для MJPEG? дайте, плиз.
Ответить
|
Номер ответа: 29 Автор ответа: ВВВ
Вопросов: 1 Ответов: 16
|
Профиль | | #29
|
Добавлено: 28.01.11 20:58
|
может кому пригодится - задача решилась очень просто - прочитал кусок потока, все маркеры видно в html-формате
на форме надо 2 контрола - picturebox & button. обращение к камере через сокет
-
- Imports System.Text
- Imports System.IO
-
- Public Class c_cam
- Private c_socket As New Net.Sockets.TcpClient
- Dim c_autoreconnect As Boolean
- Dim c_datathread As Threading.Thread
- Dim c_changed As Boolean
- Dim c_lf As String
- Dim c_datarecived As Integer
- Private WithEvents c_timer As New System.Timers.Timer
- Event Reconnection(ByVal form1 As c_cam)
- Const GetPath As String = "/videostream.cgi"
- Public Const GetDevider As String = ""
-
-
- Private Function Crypt(ByVal login As String, ByVal password As String) As String
- Return Convert.ToBase64String(System.Text.Encoding.Default.GetBytes(String.Format("{0}:{1}", login, password)))
- End Function
-
- Private Sub RunConnection(ByVal c_ip As String, ByVal c_port As Integer)
- Dim resp As New Net.Sockets.TcpClient()
-
- Try
- resp.Connect(c_ip, c_port)
- c_socket = resp
- Dim header As String = String.Format(My.Resources.HTTP_REQUEST & vbNewLine & vbNewLine, c_ip, c_port, GetPath, Crypt("admin", "1234"))
- resp.Client.Send(Encoding.Default.GetBytes(header))
- Me.OnConnect()
- Catch ex As Exception
-
- If c_autoreconnect Then
- RaiseEvent Reconnection(Me)
- c_reconnecttimer.Start()
- Exit Sub
- Else
- Exit Sub
- End If
- End Try
-
- c_datathread = New Threading.Thread(AddressOf ReciveData) With {.Name = "CAM_DATA:" & c_ip & ":" & c_port}
- c_datathread.Start(resp)
- End Sub
- Private c_queuestrbuffer As String = ""
- Dim bMap As Bitmap
-
- Private Sub ReciveData(ByVal wr As Net.Sockets.TcpClient)
-
- Dim d(1024 * 900) As Byte
- Dim dev As String = "--ipcamera"
- While True
- Dim cnt As Integer
- Try
- cnt = wr.Client.Receive(d)
- Catch ex As Exception
- Exit Sub
- End Try
-
- If cnt = 0 Then Exit While
- c_queuestrbuffer &= System.Text.Encoding.Default.GetString(d, 0, cnt)
-
- Dim p() As String = Split(c_queuestrbuffer, dev)
-
- If p.Length > 2 Then
- Dim c() As String = Split(p(1), vbNewLine & vbNewLine, 2)
- If c.Length = 2 Then
- c_lf = c(1)
-
- Dim m As New IO.MemoryStream(System.Text.Encoding.Default.GetBytes(c_lf))
- Dim bmp As Bitmap = Bitmap.FromStream(m)
- PictureBox1.Image = bmp
-
- End If
- c_queuestrbuffer = dev & p(p.Length - 1)
- Else
-
- End If
- c_datarecived += cnt
- End While
-
-
- End Sub
-
- Private Sub OnConnect()
- Me.Text = "connect!"
- End Sub
- Public Event FrameDropped(ByVal dropscount As Integer)
- Public Event Frame(ByVal f() As Byte)
- Private c_dropedframes As Integer = 0
-
- Private Sub c_cam_FormClosed(ByVal sender As Object, ByVal e As System.Windows.Forms.FormClosedEventArgs) Handles Me.FormClosed
- c_datathread.Abort()
- End Sub
-
- Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
- RunConnection("192.168.2.178", "80")
- End Sub
Ответить
|
Страница: 1 | 2 | 3 | 4 |
Поиск по форуму