2012-05-31 1 views
1

사람은 사용되는 매우 간단한 형태의 날이 VB.NET 작성된 라이브러리 또는 C#MJPEGStream 기능 예

여기
+0

이 캠 인증 귀하의 답변 –

답변

4

를 사용 PictureBox를 스트림의 이미지를 나타내는 완전한 예를 줄 수 AForge.Video.MJPEGStream 클래스

private MJPEGStream VideoStream = new MJPEGStream(); 

private void frmMain_Load(object sender, System.EventArgs e) 
{ 
    VideoStream.Source = "URL_HERE"; 
    VideoStream.Login = "USERNAME_HERE"; 
    VideoStream.Password = "PASSWORD_HERE"; 

    VideoStream.Start(); 
} 

private void frmMain_FormClosing(object sender, System.Windows.Forms.FormClosingEventArgs e) 
{ 
    VideoStream.Stop(); 
} 

private void VideoStream_NewFrame(object sender, AForge.Video.NewFrameEventArgs eventArgs) 
{ 
    Bitmap FrameData = new Bitmap(eventArgs.Frame); 

    pbStream.Image = FrameData; 
} 

private void VideoStream_VideoSourceError(object sender, AForge.Video.VideoSourceErrorEventArgs eventArgs) 
{ 
    Debug.WriteLine(eventArgs.Description); 
} 
public frmMain() 
{ 
    InitializeComponent(); 
    this.FormClosing += new EventHandler(frmMain_FormClosing); 
    this.Load += new EventHandler(frmMain_Load); 
    VideoStream.NewFrame += new EventHandler(VideoStream_NewFrame); 
    VideoStream.VideoSourceError+= new EventHandler(VideoStream_VideoSourceError); 
} 
+0

감사 로그인 만있다 왜 내 그림 상자에 이미지를 다시 그릴지 모르겠다 http://goo.gl/UuqnV –

+0

그림 상자를 설정 한 후 pbStream.Refresh()를 추가하는 경우 참조하십시오. 나이가 수정됩니다. – QuantumPhysGuy

+0

또한 내 예제 에서처럼 이벤트에 가입하는 방법을 보여주지 않았습니다. 예제를 업데이트했습니다. frmMain() 아래에서 새로운 이벤트 구독에 주목해야합니다. – QuantumPhysGuy

0

또 다른 예 :

Imports AForge.Video 

Public Class Form1 
    Inherits Form 
    Private stopWatch As Stopwatch = Nothing 

    Private Sub MainForm_FormClosing(sender As Object, e As FormClosingEventArgs) 
     CloseCurrentVideoSource() 
    End Sub 

    Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click 
     ' create video source 
     Dim mjpegSource As New MJPEGStream("http://190.6.206.170/video/mjpg.cgi") 
     mjpegSource.Login = "admin" 
     mjpegSource.Password = "" 
     ' open it 
     OpenVideoSource(mjpegSource) 

    End Sub 

    ' Open video source 
    Private Sub OpenVideoSource(source As IVideoSource) 
     ' set busy cursor 
     Me.Cursor = Cursors.WaitCursor 

     ' stop current video source 
     CloseCurrentVideoSource() 

     ' start new video source 
     videoSourcePlayer.VideoSource = source 
     videoSourcePlayer.Start() 

     ' reset stop watch 
     stopWatch = Nothing 

     ' start timer 
     timer.Start() 

     Me.Cursor = Cursors.[Default] 
    End Sub 

    ' Close video source if it is running 
    Private Sub CloseCurrentVideoSource() 
     If videoSourcePlayer.VideoSource IsNot Nothing Then 
      videoSourcePlayer.SignalToStop() 

      ' wait ~ 3 seconds 
      For i As Integer = 0 To 29 
       If Not videoSourcePlayer.IsRunning Then 
        Exit For 
       End If 
       System.Threading.Thread.Sleep(100) 
      Next 

      If videoSourcePlayer.IsRunning Then 
       videoSourcePlayer.[Stop]() 
      End If 

      videoSourcePlayer.VideoSource = Nothing 
     End If 
    End Sub 

    ' New frame received by the player 
    Private Sub videoSourcePlayer_NewFrame(sender As Object, ByRef image As Bitmap) 
     Dim now As DateTime = DateTime.Now 
     Dim g As Graphics = Graphics.FromImage(image) 

     ' paint current time 
     Dim brush As New SolidBrush(Color.Red) 
     g.DrawString(now.ToString(), Me.Font, brush, New PointF(5, 5)) 
     brush.Dispose() 

     g.Dispose() 
    End Sub 


    Private Sub timer_Tick(sender As System.Object, e As System.EventArgs) Handles timer.Tick 
     Dim videoSource As IVideoSource = videoSourcePlayer.VideoSource 

     If videoSource IsNot Nothing Then 
      ' get number of frames since the last timer tick 
      Dim framesReceived As Integer = videoSource.FramesReceived 

      If stopWatch Is Nothing Then 
       stopWatch = New Stopwatch() 
       stopWatch.Start() 
      Else 
       stopWatch.[Stop]() 

       Dim fps As Single = 1000.0F * framesReceived/stopWatch.ElapsedMilliseconds 
       Me.Text = fps.ToString("F2") & " fps" 
       stopWatch.Reset() 
       stopWatch.Start() 
      End If 
     End If 
    End Sub 
End Class 

필수 컨트롤 : 내가 IPCAM에서 이미지를 얻으려면

System.Windows.Forms.Timer 'For display fps 
Aforge.Controls.VideoSourcePlayer 'For Display the video Img