有人可以给我一个完整的例子,展示使用VB.NET或C#编写的库的图片框中的stream的图像。
这是一个非常非常简单的使用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); }
另一个例子:
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
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。