Aforge Live Stream с IP-камеры HttpWebRequest

Я использую Aforge, чтобы попытаться получить прямую трансляцию с IP-камеры. Моя проблема в том, что мое соединение по какой-то причине продолжает закрываться. В целях тестирования я подключил камеру напрямую к моему компьютеру и подключаюсь к ней через эту локальную сеть.

Ошибка:

Базовое соединение было закрыто: соединение было неожиданно закрыто.

Вот код, который я использую:

stream.NewFrame += new NewFrameEventHandler(video_NewFrame);
stream.VideoSourceError += new VideoSourceErrorEventHandler(stream_VideoSourceError);
stream.Login = "login";
stream.Password = "pass";
stream.RequestTimeout = 10000;
stream.Source = "http://192.168.0.33/nphMotionJpeg?Resolution=320x240&Quality=Standard";  
stream.Start();

Я видел, как некоторые люди рекомендовали установить параметр в app.config, и я также сделал это:

<system.net>
  <settings>
    <httpWebRequest useUnsafeHeaderParsing="true"/>
  </settings>
</system.net>

Без редактирования app.config я получаю другую ошибку. (Нарушение протокола)

Кто-нибудь сталкивался с этими проблемами или знает, как заставить его работать?

Примечание. Я также пытался получить данные без Aforge вот так, но это привело к той же ошибке.


person CSharpDev    schedule 04.09.2012    source источник
comment
Попробуйте открыть его в VLC и посмотрите, работает ли он там. Я считаю, что VLC отлично подходит для тестирования соединений MJPEG, когда я не уверен, что мой код работает правильно.   -  person Peter    schedule 05.09.2012
comment
может быть связано с stackoverflow.com/questions/ 10823848/ (хотя недостаточно подробностей по другому вопросу, чтобы знать наверняка)   -  person Peter    schedule 05.09.2012
comment
@ Питер, да, похоже, похоже. Хотя там нет информации   -  person CSharpDev    schedule 05.09.2012
comment
Вы пытались использовать VLC или даже просто указали URL-адрес в веб-браузере? Почти все браузеры, кроме IE, изначально поддерживают потоки MJPEG.   -  person Peter    schedule 05.09.2012
comment
@Peter Я пытался использовать VLC, но не смог заставить его там работать. Когда я указываю браузеру IP-адрес камеры, мне предлагается ввести имя пользователя/пароль, после чего начинается потоковая передача. В своем приложении я использую указанный URL. Я также использовал указанный URL-адрес в своем браузере, и он просит меня открыть или сохранить файл. (говорит мне, что это поток октетов). Так что я считаю, что проблема не в соединении... Я не знаю..   -  person CSharpDev    schedule 05.09.2012
comment
Там есть обновления? Не могли бы вы заставить его работать?   -  person DmitryBoyko    schedule 08.02.2013
comment
@Peretz У меня другая камера (Axis), и теперь она работает, как и ожидалось. Я уверен, что это как-то связано с устаревшей камерой.   -  person CSharpDev    schedule 11.02.2013


Ответы (2)


попробуйте следующее, чтобы увидеть, работает ли это.

stream.Login = "login";
stream.Password = "pass";
stream.ForceBasicAuthentication = true;
stream.RequestTimeout = 10000;
stream.Source = "http://192.168.0.33/nphMotionJpeg?Resolution=320x240&Quality=Standard";  
stream.Start();
person Suriya    schedule 10.11.2012

Я не верю, что это вариант в aforge ( https://code.google.com/p/aforge/source/browse/trunk/Sources/Video/MJPEGStream.cs), но похоже, что камера ожидает HTTP v1.0. См. руководство по адресу http://csj.psn-web.net/netwkcam_net/download/us/document/NEW_Camera_CGI_Interface_v4.30.pdf, на стр. 56.

(1) Начать прием Установите соединение (откройте сокет) и отправьте следующую командную строку на HTTP-порт. "GET http://xxx.xxx.xxx.xxx:yy/nphMotionJpeg?Resolution=320x240&Quality=Standard HTTP/1.0\r\n" xxx.xxx.xxx.xxx: IP-адрес или домен имя yy: номер HTTP-порта. (Не требуется, если номер порта установлен на 80)

Если у вас есть доступ к коду, вы можете попробовать

//setting http v1.0 in c#
HttpWebRequest request = (HttpWebRequest)base.GetWebRequest(address);
request.ProtocolVersion = HttpVersion.Version10;

Кроме того, попробуйте включить гостевой доступ и удалить свое имя пользователя/пароль из своего кода и посмотреть, сработает ли это.

person Peter    schedule 04.09.2012
comment
Пробовал, все те же проблемы. Хорошая информация однако. - person CSharpDev; 05.09.2012