ONVIF GetStreamURL С#

Я пытаюсь получить URL-адрес потока с помощью ONVIF, и я застрял. Метод GetStreamURL всегда возвращает Null, но когда я перехватываю трафик в wirehark, я получаю правильные ответы от камеры. Может у кого была похожая проблема и может мне помочь? Мой код выглядит так:

HttpTransportBindingElement httpBinding = new HttpTransportBindingElement();
EndpointAddress serviceAddress = new EndpointAddress(__url);
TextMessageEncodingBindingElement messegeElement = new TextMessageEncodingBindingElement();

httpBinding.AuthenticationScheme = AuthenticationSchemes.Digest;
messegeElement.MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.WSAddressing10);

CustomBinding bind = new CustomBinding(messegeElement, httpBinding);
ONVIF.onvifMedia.mediaClient mclient = new ONVIF.onvifMedia.mediaClient(bind, serviceAddress);

ONVIF.onvifMedia.StreamSetup streamSetup = new ONVIF.onvifMedia.StreamSetup();
streamSetup.Stream = ONVIF.onvifMedia.StreamType.RTPUnicast;

streamSetup.Transport = new ONVIF.onvifMedia.Transport();
streamSetup.Transport.Protocol = ONVIF.onvifMedia.TransportProtocol.RTSP;

mediaUri uri = new mediaUri();
Profile[] profiles;

log.Debug("Trying to fetch profiles");
profiles = mclient.GetProfiles();

foreach (Profile item in profiles)
{
   uri = mclient.GetStreamUri(streamSetup, item.token);
}

person Paweł Wojtal    schedule 23.06.2015    source источник
comment
Можете ли вы вставить соответствующий трафик, который вы нашли с помощью Wireshark, пожалуйста.   -  person ChrisWard1000    schedule 24.06.2015
comment
Как вы пришли к работе непосредственно с ONVIF Class? Я попытался получить доступ к API для получения моментального снимка изображения с камеры, но это не сработало: stackoverflow.com/questions/32779467/   -  person Pinte Dani    schedule 26.09.2015


Ответы (1)


Похоже, я помог себе и решил эту проблему: код работает отлично, но мне нужно удалить все служебные ссылки на файлы wsdl и добавить их снова. Однако я не нашел, было ли какое-либо обновление wsdls в прошлый раз на веб-сайте ONVIF - это помогло мне, и теперь приведенный выше код работает, и я получаю правильный потоковый URI.

В этом коде есть одна проблема, но, на мой взгляд, зависит от того, как реализован стандарт на устройстве: некоторые камеры возвращают потоковый URI с префиксом HTTP, но передают его только по RTSP.

Если вы хотите использовать аналогичный код, не забудьте добавить поле логина и пароля к адресу.

person Paweł Wojtal    schedule 05.07.2015