Go语言实现Onvif客户端:6、获取rtsp流地址

2023-11-04

Go语言实现Onvif客户端:6、获取rtsp流地址


1、代码

获取并选择Profile token后获取rtsp流地址也是调用接口即可:

/**
 * @Description: 获取rtsp流媒体信息
 * @time: 2021-03-30 11:22:06
 * @receiver client
 * @return returnInfo:结果Code码和Info信息,Code码为0则成功,否则失败,通过获取Info查看失败原因
 */
func (client *GoOnvifClient) GetStreamUri() returnInfo {
	if client.localSelectProfileToken == "" {
		return returnInfo{GetStreamUriErr, "profile token is nil."}
	}

	return client.getStreamUri()
}

/**
 * @Description: 根据选中的Profile token获取码流rtsp地址等
 * @time: 2021-03-25 14:28:46
 * @receiver client
 * @return returnInfo
 */
func (client *GoOnvifClient) getStreamUri() returnInfo {
	mediaUrlReq := media.GetStreamUri{}
	mediaUrlReq.ProfileToken = onvif.ReferenceToken(client.localSelectProfileToken)

	return client.sendReqGetResp(GetStreamUriErr, mediaUrlReq)
}

2、结果:

获取到的xml信息如下:

<?xml version="1.0" encoding="UTF-8"?>
<env:Envelope xmlns:env="http://www.w3.org/2003/05/soap-envelope" xmlns:soapenc="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:timg="http://www.onvif.org/ver20/imaging/wsdl" xmlns:tev="http://www.onvif.org/ver10/events/wsdl" xmlns:tptz="http://www.onvif.org/ver20/ptz/wsdl" xmlns:tan="http://www.onvif.org/ver20/analytics/wsdl" xmlns:tst="http://www.onvif.org/ver10/storage/wsdl" xmlns:ter="http://www.onvif.org/ver10/error" xmlns:dn="http://www.onvif.org/ver10/network/wsdl" xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:tmd="http://www.onvif.org/ver10/deviceIO/wsdl" xmlns:wsdl="http://schemas.xmlsoap.org/wsdl" xmlns:wsoap12="http://schemas.xmlsoap.org/wsdl/soap12" xmlns:http="http://schemas.xmlsoap.org/wsdl/http" xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" xmlns:wsadis="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:wsa="http://www.w3.org/2005/08/addressing" xmlns:wstop="http://docs.oasis-open.org/wsn/t-1" xmlns:wsrf-bf="http://docs.oasis-open.org/wsrf/bf-2" xmlns:wsntw="http://docs.oasis-open.org/wsn/bw-2" xmlns:wsrf-rw="http://docs.oasis-open.org/wsrf/rw-2" xmlns:wsaw="http://www.w3.org/2006/05/addressing/wsdl" xmlns:wsrf-r="http://docs.oasis-open.org/wsrf/r-2" xmlns:trc="http://www.onvif.org/ver10/recording/wsdl" xmlns:tse="http://www.onvif.org/ver10/search/wsdl" xmlns:trp="http://www.onvif.org/ver10/replay/wsdl" xmlns:tnshik="http://www.hikvision.com/2011/event/topics" xmlns:hikwsd="http://www.onvifext.com/onvif/ext/ver10/wsdl" xmlns:hikxsd="http://www.onvifext.com/onvif/ext/ver10/schema" xmlns:tas="http://www.onvif.org/ver10/advancedsecurity/wsdl" xmlns:tr2="http://www.onvif.org/ver20/media/wsdl" xmlns:axt="http://www.onvif.org/ver20/analytics">
	<env:Body>
		<trt:GetStreamUriResponse>
			<trt:MediaUri>
				<tt:Uri>rtsp://40.40.40.101:554/Streaming/Channels/101?transportmode=unicast&amp;profile=Profile_1</tt:Uri>
				<tt:InvalidAfterConnect>false</tt:InvalidAfterConnect>
				<tt:InvalidAfterReboot>false</tt:InvalidAfterReboot>
				<tt:Timeout>PT60S</tt:Timeout>
			</trt:MediaUri>
		</trt:GetStreamUriResponse>
	</env:Body>
</env:Envelope>

3、查看

使用vlc播放器播放即可,比如我们上面获取的url为:rtsp://40.40.40.101:554/Streaming/Channels/101?transportmode=unicast&profile=Profile_1

则通过打开网络串流播放:

在这里插入图片描述

如果url正确则播放正常,这里显示的码流和你选择的Profile token相关:

在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Go语言实现Onvif客户端:6、获取rtsp流地址 的相关文章

  • Cgo 生成的源无法在 MVC 上编译

    我有一个用 CGo 制作的共享库 它在 Linux 和 Android 上链接得很好 但是 当使用 Microsoft Visual Studio 2017 在 Windows 10 上进行编译时 出现以下错误 Microsoft R Pr
  • Go 中数组的嵌套结构

    我已经开始使用https mholt github io json to go https mholt github io json to go 将 API JSON 转换为 go 结构 我真的很喜欢它 但是我对如何初始化如下所示的报告定义
  • Ajax 将文件上传到内容类型为 Multipart 的 GoLang 服务器

    我正在尝试使用多部分表单将音频文件上传到 Golang 服务器 然而 Go 返回错误 multipart NextPart bufio buffer full 我相信这表明我的 Javascript 请求中存在不属于多部分格式的内容 这是我
  • 在 Go 中生成随机、固定长度的字节数组

    我有一个字节数组 固定长度为4 token make byte 4 我需要将每个字节设置为随机字节 我怎样才能以最有效的方式做到这一点 这math rand就我而言 方法不提供随机字节函数 也许有一种内置的方法 或者我应该生成一个随机字符串
  • 从 []byte 到 char*

    我想包装一个 C 函数 它需要一个char 指向非空字节缓冲区 的第一个元素 我正在尝试使用 CGo 将其包装在 Go 函数中 以便我可以将其传递给 byte 但我不知道如何进行转换 C 函数签名的简化版本是 void foo char c
  • 为什么奇数的切片容量与偶数的切片行为不同

    我注意到 当容量为奇数时 切片的容量会以不同的方式表现 更具体地说 当向切片添加元素时 切片的容量为doubled当原始容量为偶数时 但当原容量为奇数时 容量为增加一 然后加倍 例子 s make int 28 28 s append s
  • 如何分析 VSCode 中函数的性能

    我用 C Golang 编写了一个程序 如何找到占用最高 CPU 周期的函数 目的是提高正在执行的程序的性能 2021 年 10 月 金香儿哈娜 https github com hyangah宣布 tweet https twitter
  • 如何在 Go 应用程序中处理打开/关闭数据库连接?

    我的 Web API 应用程序中有一组函数 他们对 Postgres 数据库中的数据执行一些操作 func CreateUser db err sql Open postgres user postgres password passwor
  • 如何在 Go 中解组具有多个项目的简单 xml?

    我想从以下 xml 中获取人物 People 的一部分
  • 如何在运行“go test”时排除或跳过特定目录[重复]

    这个问题在这里已经有答案了 go test go list grep v vendor coverprofile testCoverage txt 我正在使用上述命令来测试文件 但有 1 个名为 Store 的文件夹我想从测试中排除 怎样才
  • GOPATH值设置

    我用go1 3 1 windows amd64 msi安装go 安装后GOROOT是默认设置 我发现 D Programs Go bin 在 PATH 中 然后我创建一个 GOPATH 环境变量 使用 go get 命令时 出现错误 软件包
  • 有没有办法在 VSCode 中保存时运行 go 测试,并将其输出到终端?

    现在我有几个项目在VSCode中运行 运行起来相当繁琐go test每次我编写新代码时 我宁愿立即看看我是否破坏了某些东西 我知道在 Javascript 中我可以在每次保存文件时运行测试 并将输出发送到终端 现在我正在使用 保存时运行 h
  • Golang GAE - 小胡子结构中的 intID

    这是一个Example https www dropbox com sh ur2ws1jnik6euef PjVJSwDTUc Blog Golang zip该应用程序的 关键代码在 golang code handler handler
  • 解组转义 XML

    在 Go 中 我将如何解码此 XML 响应 我尝试过建立一个自定义UnMarshal方法在我的Answerstruct 但我运气不太好
  • 在 Go 中初始化嵌入结构

    我有以下内容struct其中包含一个net http Request type MyRequest struct http Request PathParams map string string 现在我想初始化匿名内部结构http Req
  • 如何在 Linux 中编写文本模式 GUI? [关闭]

    Closed 这个问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 help closed questions 目前不接受答案 当我编写脚本 程序时 我经常想弹出一个简单的文本 gui 来提示输入 我该怎么做 例如 来自 Shel
  • 如何使信号量超时

    Go 中的信号量是通过通道来实现的 一个例子是这样的 https sites google com site gopatterns concurrency semaphores https sites google com site gop
  • Golang:带有 JSON 负载的 http.NewRequest POST 返回错误 500

    我正在开发一个 API 库 有一个API端点 POST 当您发出curl命令时 它是 curl H X API TOKEN API TOKEN http interest graph getprismatic com text topic
  • Golang 正则表达式在字符串之间替换

    我有一些可能采用以下形式的字符串 MYSTRING MYSTRING n MYSTRING n MYSTRING randomstringwithvariablelength n 我希望能够将其正则表达式为MYSTRING foo 基本上替
  • 如何同时使用 LoadHTMLGlob 和 LoadHTMLFiles

    我想要来自不同子目录的分隔符逻辑模板templates文件夹 下面是我的templates文件夹 templates authentication login gohtml logout gohtml index gohtml profil

随机推荐

  • python爬取百度百科

    来源于imooc教程实例 课程地址http www imooc com learn 563 以下是自己经过每一步分析 最后成功完成 代码模块化结构分明 不过自己一开始分析还是有点晕晕的 毕竟还不太习惯 以后多练习吧 每一份的收获都来之不易
  • jqGrid学习总结_5 使用formatter

    1 formatter与unformat官网 http www trirand com jqgridwiki doku php id wiki custom formatter formatter functionFormatter cel
  • IDEA设置自动生成类和方法注释

    以IDEA2020 3版本进行说明 一 设置创建类时生成的注释 打开 File gt settings gt Editor gt File and Code Templates 或者在搜索框搜索File and Code Templates
  • 关于antd中popover气泡卡片deep修改样式不生效问题

    今儿写代码的时候遇到的一个问题 原是因为使用气泡组件出现的定位位置不对 查出是因为全局上写了一个zoom属性 但是这个zoom属性因为在其他组件上使用了不能动 所以考虑修改气泡组件的样式来自定义位置 利用deep修改样式后发现样式不生效 后
  • 使用pandas to_sql方法进行数据整合和清洗

    使用pandas to sql方法进行数据整合和清洗 在数据科学和数据分析领域 数据集的整合和清洗是非常重要的 而pandas是一个强大的数据处理库 它提供了to sql 方法 可以将Dataframe对象保存到多种不同类型的SQL数据库中
  • Points Within

    http acm zju edu cn onlinejudge showProblem do problemId 81 Statement of the Problem Several drawing applications allow
  • 有源滤波器快速使用设计和精确设计

    有源滤波器的快速实用设计 pdf https max book118 com html 2019 0114 8013057114002001 shtm 有源滤波器精确设计手册 pdf https max book118 com html 2
  • NAT功能与分类

    NAT的分类 比较早的有STUN RFC3489 定义的四种类型 Full Cone A full cone NAT is one where all requests from the same internal IP address a
  • spring boot打jar包、war包的区别

    maven打包 项目的打包类型 pom jar war packing默认是jar类型
  • Jenkins (一)

    Jenkins 一 Docker Jenkins 部署 一 安装 jenkins mkdir p home tester data docker jenkins vim jenkins lts jdk11 sh jenkins lts jd
  • 【大数据】Hadoop实验报告

    文章目录 实验一 熟悉常用的Linux操作和Hadoop操作 1 实验目的 2 实验平台 3 实验内容和要求 实验二 熟悉常用的HDFS操作 1 实验目的 2 实验平台 3 实验步骤 实验三 熟悉常用的HBase操作 1 实验目的 2 实验
  • c语言里如何倒序输出字符,倒序输出字符 C语言

    匿名用户 1级 2010 11 26 回答 include include void main char string1 200 用于存放输入的字符串 char string2 200 用于存放倒序后的字符串 int invertion c
  • 6.S081笔记

    Lec 01简单介绍 XV6 OS 运行在一个RISC V微处理器上 我们用QEMU模拟RISC V 从而在一个QEMU模拟器上运行XV6 Lec 03 硬件对强隔离的支持 两种方式实现了隔离性 内核态 用户态的切换 user kernel
  • 手把手带你入门github

    前言 github是一个面向开源及私有软件项目的托管平台 什么叫面向开源呢 说白了就是把代码共享 微软以前并不秉持着开源的态度 企图以windows占有率坐拥江山 可惜开源共享的大势谁都不能阻挡 哪怕是微软帝国 这不 斥资把这个国际知名代码
  • mysql修改自增字段自增起始值

    需要修改自增字段的起始值 以使其后续插入的主键id从自定义的值开始自增 先后使用了三种方法 前两种均告失败 第三种成功 1 直接在navicat里进行设置 结果可以保存但保存无效 本方法失败 2 使用 SQL 语句进行修改 SQL 执行结果
  • 系统安装部署过程

    Linux系统安装部署过程 VMware软件的使用 第一个历程进入系统引导界面进行配置 引导项说明 1 安装centos7系统 2 测试光盘镜像并安装系统 3 排错模式
  • KB: DFS 复制超过最大离线时间引起的AD同步失败

    故障描述 域内有两台DC 辅DC无法同步SYSVOL 辅DC降级后 退域 再加入域 再升级为域控制器 依然无法同步SYSVOL 使用NET SHARE命令对两台DC进行诊断 主DC结果 共享名 资源 注解 C C 默认共享 IPC
  • 【Mysql Workbench导入excel数据】

    使用Workbench导入excel表插入数据库表 导入excel表就可以快速的插入多条数据 比如需要随机生成一些假数据到数据库表的话 数量要求比较多的情况下 使用excel生成数据再导入就很快 步骤 下面来讲解怎样导入excel表数据插入
  • 微信卡券之众多坑总结(Java)---优惠券

    1 建议一个字一个字读微信文档 从头到尾 不要只看卡券那一栏 https developers weixin qq com doc offiaccount Cards and Offer Redeeming a coupon voucher
  • Go语言实现Onvif客户端:6、获取rtsp流地址

    Go语言实现Onvif客户端 6 获取rtsp流地址 文章目录 Go语言实现Onvif客户端 6 获取rtsp流地址 1 代码 2 结果 3 查看 1 代码 获取并选择Profile token后获取rtsp流地址也是调用接口即可 Desc