IP Cam en direct à partir de C#

Je vais essayer d'obtenir les flux en direct à partir de TPLink TL-SC3171G IP cam en application en C#. J'ai essayé d'utiliser AForge.NET bibliothèque, mais pas de chance. L'exemple de code à partir de AForge.NET ne fonctionne pas pour moi. Je suis "Le serveur distant a retourné une erreur: (401) l'accès non autorisé."

Je peux accéder à la cam via le navigateur de base de son adresse ip: "http://192.168.168.20".
Dans l'app, j'ai essayé avec:

"http://username:[email protected]"
"http://username:[email protected]:port"

Pouvez vous s'il vous plaît m'aider avec une certaine direction. Il n'a vraiment pas à être AForge.NET de la bibliothèque.

C'est le code:

using AForge.Video;
using AForge.Video.DirectShow;
namespace Player
{
public partial class MainForm : Form
{
private Stopwatch stopWatch = null;
//Class constructor
public MainForm( )
{
InitializeComponent( );
}
private void MainForm_FormClosing( object sender, FormClosingEventArgs e )
{
CloseCurrentVideoSource( );
}
//"Exit" menu item clicked
private void exitToolStripMenuItem_Click( object sender, EventArgs e )
{
this.Close( );
}
//Open local video capture device
private void localVideoCaptureDeviceToolStripMenuItem_Click( object sender, EventArgs e )
{
VideoCaptureDeviceForm form = new VideoCaptureDeviceForm( );
if ( form.ShowDialog( this ) == DialogResult.OK )
{
//create video source
VideoCaptureDevice videoSource = form.VideoDevice;
//open it
OpenVideoSource( videoSource );
}
}
//Open video file using DirectShow
private void openVideofileusingDirectShowToolStripMenuItem_Click( object sender, EventArgs e )
{
if ( openFileDialog.ShowDialog( ) == DialogResult.OK )
{
//create video source
FileVideoSource fileSource = new FileVideoSource( openFileDialog.FileName );
//open it
OpenVideoSource( fileSource );
}
}
//Open JPEG URL
private void openJPEGURLToolStripMenuItem_Click( object sender, EventArgs e )
{
URLForm form = new URLForm( );
form.Description = "Enter URL of an updating JPEG from a web camera:";
form.URLs = new string[]
{
"http://195.243.185.195/axis-cgi/jpg/image.cgi?camera=1",
};
if ( form.ShowDialog( this ) == DialogResult.OK )
{
//create video source
JPEGStream jpegSource = new JPEGStream( form.URL );
//open it
OpenVideoSource( jpegSource );
}
}
//Open MJPEG URL
private void openMJPEGURLToolStripMenuItem_Click( object sender, EventArgs e )
{
URLForm form = new URLForm();
form.Description = "Enter URL of an MJPEG video stream:";
form.URLs = new string[]
{
"http://195.243.185.195/axis-cgi/mjpg/video.cgi?camera=4",
"http://195.243.185.195/axis-cgi/mjpg/video.cgi?camera=3",
"http://192.168.168.20:80",
};
if ( form.ShowDialog( this ) == DialogResult.OK )
{
//create video source
MJPEGStream mjpegSource = new MJPEGStream( form.URL );
//open it
OpenVideoSource( mjpegSource );
}
}
//Open video source
private void OpenVideoSource( IVideoSource source )
{
//set busy cursor
this.Cursor = Cursors.WaitCursor;
//stop current video source
CloseCurrentVideoSource( );
//start new video source
videoSourcePlayer.VideoSource = source;
videoSourcePlayer.Start( );
//reset stop watch
stopWatch = null;
//start timer
timer.Start( );
this.Cursor = Cursors.Default;
}
//Close video source if it is running
private void CloseCurrentVideoSource( )
{
if ( videoSourcePlayer.VideoSource != null )
{
videoSourcePlayer.SignalToStop( );
//wait ~ 3 seconds
for ( int i = 0; i < 30; i++ )
{
if ( !videoSourcePlayer.IsRunning )
break;
System.Threading.Thread.Sleep( 100 );
}
if ( videoSourcePlayer.IsRunning )
{
videoSourcePlayer.Stop( );
}
videoSourcePlayer.VideoSource = null;
}
}
//New frame received by the player
private void videoSourcePlayer_NewFrame( object sender, ref Bitmap image )
{
DateTime now = DateTime.Now;
Graphics g = Graphics.FromImage( image );
//paint current time
SolidBrush brush = new SolidBrush( Color.Red );
g.DrawString( now.ToString( ), this.Font, brush, new PointF( 5, 5 ) );
brush.Dispose( );
g.Dispose( );
}
//On timer event - gather statistics
private void timer_Tick( object sender, EventArgs e )
{
IVideoSource videoSource = videoSourcePlayer.VideoSource;
if ( videoSource != null )
{
//get number of frames since the last timer tick
int framesReceived = videoSource.FramesReceived;
if ( stopWatch == null )
{
stopWatch = new Stopwatch( );
stopWatch.Start( );
}
else
{
stopWatch.Stop( );
float fps = 1000.0f * framesReceived / stopWatch.ElapsedMilliseconds;
fpsLabel.Text = fps.ToString( "F2" ) + " fps";
stopWatch.Reset( );
stopWatch.Start( );
}
}
}
}
}

OriginalL'auteur drago | 2013-03-14