有人可以给我一个完整的例子,展示使用VB.NET或C#编写的库中的图像流图像
答案 0 :(得分:4)
这是一个使用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);
}
答案 1 :(得分: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
必需的控件:
System.Windows.Forms.Timer 'For display fps
Aforge.Controls.VideoSourcePlayer 'For Display the video Img