首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ONVIF GetStreamURL C#

ONVIF GetStreamURL C#
EN

Stack Overflow用户
提问于 2015-06-23 16:00:50
回答 1查看 3.2K关注 0票数 3

我正在尝试使用ONVIF获取流URL,而且我被塞住了。方法GetStreamURL总是返回Null,但是当我在wireshark中嗅探流量时,我从摄像机中得到了正确的响应。也许有人有类似的问题能帮我吗?我的代码如下所示:

代码语言:javascript
复制
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);
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-07-05 08:39:24

看起来我帮助自己解决了这个问题:代码工作得很好,但是我需要删除对wsdl文件的所有服务引用,然后再添加它们。不过,我没有发现上一次在ONVIF网站上是否有wsdls的任何更新--这对我有帮助,现在上面的代码正在工作,我得到了合适的流URI。

在这段代码中有一个问题,但在我看来,这取决于标准是如何在设备上实现的:一些摄像机返回带有HTTP前缀的流URI,但它们只通过RTSP传输。

如果您想使用类似的代码,请不要忘记添加登录和密码字段来地址。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31007828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档