Kernel_Lover

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover  发布于  2017-11-01 10:48:13
采纳率 0%
17个问答
4949

关于 onvif 获取 rtsp 地址的问题

 
目前,执行程序后 onvif device manager 会自动发现设备并添加到设备列表并且 profiles 设置正常,但是点击 video stream,出现错误:

Invalid URI:The format of the URI could not be determined

请教一下,这是哪个地方出错了?谢谢!

我来回答
回答14个
时间排序
认可量排序

goodman

2个粉丝

30

问答

18

专栏

17

资料

goodman 2017-11-01 13:37:24
认可0
看看你的GetStreamURI里面是怎么填的

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-11-01 13:47:58
认可0
本帖最后由 Kernel_Lover 于 2017-11-1 13:51 编辑

[quote][url=forum.php?mod=redirect&goto=findpost&pid=80214&ptid=38127]goodman 发表于 2017-11-1 13:37[/url]
看看你的GetStreamURI里面是怎么填的[/quote]

代码中 __trt__GetStreamUri 函数的定义:


int  __trt__GetStreamUri(struct soap* soap, struct _trt__GetStreamUri *trt__GetStreamUri, struct _trt__GetStreamUriResponse
*trt__GetStreamUriResponse)
{

       

        printf("%s:%d\n",__FUNCTION__,__LINE__);

        if (trt__GetStreamUri->StreamSetup) {

                if (trt__GetStreamUri->StreamSetup->Stream == 1) {

                            return soap_sender_fault_subcode(soap, "ter:InvalidArgVal/ter:InvalidStreamSetup", "Specification of StreamType or Transport part in                                                                                 StreamSetup is not supported.", NULL);

                }

                if (trt__GetStreamUri->StreamSetup->Transport->Protocol== 3) {

                            return soap_sender_fault_subcode(soap, "ter:InvalidArgVal/ter:InvalidStreamSetup", "The HTTP is not supported.", NULL);

                }

        }

        else {

                return soap_sender_fault_subcode(soap, "ter:InvalidArgVal/ter:GetStreamUri", "Invalid GetStreamUri.", NULL);

        }

        static struct tt__MediaUri tMediaUri;

        static char Dev_Addr[128];

        const char* v4_address = "192.168.1.123";  // 修改为自己的流媒体服务器地址 windows ip address

        if (strcmp(trt__GetStreamUri->ProfileToken, "VS_Token") ==  0) {

                printf("VS_Token == 0\n");

                sprintf(Dev_Addr, "rtsp://%s/test.264", v4_address);

        } else if (strcmp(trt__GetStreamUri->ProfileToken, "VS_Token1") ==  0){

                printf("VS_Token1 == 0\n");

                sprintf(Dev_Addr, "rtsp://%s/test.264", v4_address);

        } else {

                printf("else\n");

                sprintf(Dev_Addr, "rtsp://%s/test.264", v4_address);


        //rtsp://10.104.15.230:8554/720p.264

        }

        tMediaUri.Uri                 = Dev_Addr;

        printf("%s\n",tMediaUri.Uri);

        tMediaUri.InvalidAfterConnect = xsd__boolean__false_;

        tMediaUri.InvalidAfterReboot  = xsd__boolean__false_;

        static LONG64 SmTimeout;

        soap_s2xsd__duration(soap,"PT100S",&SmTimeout);

        tMediaUri.Timeout             = SmTimeout;//"PT100S";

        trt__GetStreamUriResponse->MediaUri = &tMediaUri;

        return SOAP_OK;

}

const char* v4_address = "192.168.1.123"; 是 live555 流媒体服务器的地址,也就是 windows 的 ip 地址,我把 test.264 和 live555 放在桌面上,也就是 live555 和 test.264 在同一个目录中。

goodman

2个粉丝

30

问答

18

专栏

17

资料

goodman 2017-11-01 13:51:47
认可0
抓包看下,实际传回来的内容!

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-11-01 13:56:42
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=80218&ptid=38127]goodman 发表于 2017-11-1 13:51[/url]
抓包看下,实际传回来的内容![/quote]

我搜索到了一个抓包软件 Wireshark,但是不知道具体的操作步骤,还有是在 windows 还是在 linux 下抓包?谢谢!

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-11-01 14:39:32
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=80218&ptid=38127]goodman 发表于 2017-11-1 13:51[/url]
抓包看下,实际传回来的内容![/quote]

我在 windows 下抓包:

先执行命令:

sudo ./onvif_server

wireshark 没有输出信息

启动 onvif device manager 后,wireshark 输出信息为:



goodman

2个粉丝

30

问答

18

专栏

17

资料

goodman 2017-11-01 16:44:16
认可0

右键有个追踪udp流。点开来就能看到详细的数据包了

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-11-01 17:19:27
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=80247&ptid=38127]goodman 发表于 2017-11-1 16:44[/url]
右键有个追踪udp流。点开来就能看到详细的数据包了[/quote]

我重复试了几次,出现的内容,和 wsdl 文件有点相似,没有出现你所提供图片的格式。

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-11-02 13:12:18
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=80247&ptid=38127]goodman 发表于 2017-11-1 16:44[/url]
右键有个追踪udp流。点开来就能看到详细的数据包了[/quote]

只有追踪 SSDP        215        M-SEARCH * HTTP/1.1 类型,才会出现你图片的格式。

8        10.690877        192.168.56.1        239.255.255.250        SSDP        215        M-SEARCH * HTTP/1.1

消息应该是设备发现。

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-11-02 13:15:24
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=80247&ptid=38127]goodman 发表于 2017-11-1 16:44[/url]
右键有个追踪udp流。点开来就能看到详细的数据包了[/quote]

点击 live video 出现的错误:

goodman

2个粉丝

30

问答

18

专栏

17

资料

goodman 2017-11-02 13:32:57
认可0
本帖最后由 goodman 于 2017-11-2 13:33 编辑

XML格式显示不了,就拷贝粘贴到文本文档了保存为.xml文件就能格式化了

上面有错误显示。
你有地方的URL写成[url]http://192.168.1.113/onvif/192.168.1.113[/url]

Kernel_Lover

0个粉丝

17

问答

0

专栏

0

资料

Kernel_Lover 2017-11-02 13:49:37
认可0
[quote][url=forum.php?mod=redirect&goto=findpost&pid=80272&ptid=38127]goodman 发表于 2017-11-2 13:32[/url]
XML格式显示不了,就拷贝粘贴到文本文档了保存为.xml文件就能格式化了

上面有错误显示。
[/quote]

我也怀疑这个地方有错,但是又搜索不到这个字符串。

执行命令:

grep -rn "/onvif/" *

输出信息:

wzm@hp:/hi3536/gsoap-2.8/gsoap/samples/rtsp$ grep -rn "/onvif/" *
onvif.c~:169:        sprintf(_IPAddr, "http://%03d.%03d.%1d.%03d/onvif/device_service", 192, 168, 1, 134);
onvif.c~:541:        sprintf(_IPAddr, "http://%03d.%03d.%01d.%03d/onvif/services", 192, 168, 1, 134);
onvif.c~:802:        sprintf(_IPv4Address, "http://%03d.%03d.%01d.%03d/onvif/services",192,168,1,134);
onvif.h:3:   Generated by wsdl2h 2.8.54 from [url]http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl[/url] [url]http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl[/url] and ./typemap.dat
remotediscovery.c:87:        PRINT_MSG(_IPAddr, "http://%03d.%03d.%1d.%03d/onvif/device_service", 192, 168, 1, 148);
remotediscovery.c:198:        sprintf(_IPAddr, "http://%3d.%3d.%1d.%3d/onvif/device_service", 192, 168, 1, 148);
Binary file rtsp matches
tds_ssom.c:32:        sprintf(_IPAddr, "http://%3d.%3d.%1d.%3d/onvif/service", 192, 168, 1, 113);  // Ubuntu IP address
tds_ssom.c:164:        sprintf(tds__GetCapabilitiesResponse->Capabilities->Device->XAddr,"%s/onvif/device_service","192.168.1.113");
tds_ssom.c~:32:        sprintf(_IPAddr, "http://%3d.%3d.%1d.%3d/onvif/services", 192, 168, 1, 113);  // Ubuntu IP address
tds_ssom.c~:164:        sprintf(tds__GetCapabilitiesResponse->Capabilities->Device->XAddr,"%s/onvif/device_service","192.168.1.113");
Binary file tds_ssom.o matches
typemap.dat:481:#        [url]http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl[/url]
typemap.dat:482:#        [url]http://www.onvif.org/onvif/ver10/event/wsdl/event.wsdl[/url]
typemap.dat:483:#        [url]http://www.onvif.org/onvif/ver10/display.wsdl[/url]
typemap.dat:484:#        [url]http://www.onvif.org/onvif/ver10/deviceio.wsdl[/url]
typemap.dat:485:#        [url]http://www.onvif.org/onvif/ver20/imaging/wsdl/imaging.wsdl[/url]
typemap.dat:486:#        [url]http://www.onvif.org/onvif/ver10/media/wsdl/media.wsdl[/url]
typemap.dat:487:#        [url]http://www.onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl[/url]
typemap.dat:488:#        [url]http://www.onvif.org/onvif/ver10/receiver.wsdl[/url]
typemap.dat:489:#        [url]http://www.onvif.org/onvif/ver10/recording.wsdl[/url]
typemap.dat:490:#        [url]http://www.onvif.org/onvif/ver10/search.wsdl[/url]
typemap.dat:491:#        [url]http://www.onvif.org/onvif/ver10/network/wsdl/remotediscovery.wsdl[/url]
typemap.dat:492:#        [url]http://www.onvif.org/onvif/ver10/replay.wsdl[/url]
typemap.dat:493:#        [url]http://www.onvif.org/onvif/ver20/analytics/wsdl/analytics.wsdl[/url]
typemap.dat:494:#        [url]http://www.onvif.org/onvif/ver10/analyticsdevice.wsdl[/url]       
typemap.dat:495:#        [url]http://www.onvif.org/onvif/ver10/schema/onvif.xsd[/url]

没有搜索到 [url]http://192.168.1.113/onvif/192.168.1.113[/url] 或 http://%s/onvif/%s 之类的语句

clare

0个粉丝

0

问答

0

专栏

0

资料

clare 2017-11-23 15:55:58
认可0
:lol mark            

dsw2012218

0个粉丝

8

问答

0

专栏

0

资料

dsw2012218 2017-12-10 17:03:09
认可0
:)
mark                             

ngswfx

1个粉丝

55

问答

1

专栏

40

资料

ngswfx 2017-12-11 02:37:52
认可0
本帖最后由 ngswfx 于 2017-12-11 02:40 编辑

你这个还比较好弄,最起码onvif工具是比较靠谱的,可以2边抓包协助分析,我这边就郁闷了,ODM已经正常获取信息,也正常出图了,可是HK或者其他厂家的NVR就是不录像,不知道是不是rtsp 服务交互命令不标准,但odm都看到图像了,所以很郁闷,无从下手,后来也没研究了,也不知道走到哪一步,没有继续下去了

我当时想着,既然ODM都正常获取各种信息,并且也得到图像了,NVR应该是顺理成章的事,结果最后一步,没实现,呵呵。

看你遇到这些问题,说明这个东西,对接时,还是有不少需要注意的地方,看来有空我也要再试试
或将文件直接拖到这里
悬赏:
E币
网盘
* 网盘链接:
* 提取码:
悬赏:
E币

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
+ 添加网盘链接/附件

Markdown 语法

  • 加粗**内容**
  • 斜体*内容*
  • 删除线~~内容~~
  • 引用> 引用内容
  • 代码`代码`
  • 代码块```编程语言↵代码```
  • 链接[链接标题](url)
  • 无序列表- 内容
  • 有序列表1. 内容
  • 缩进内容
  • 图片![alt](url)
举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

易百纳技术社区