onvif协议
probe为onvif连接时,会产生一个广播,一般情况下不影响整个协议。
WSDL的web服务公共接口。
之间的关系,onvif协议以soap协议为基础,
而soap又是用WSDL进行规范,所以onvif相当于
规范了WSDL。
理解上:onvif = 服务端 +客户端 =(web services + rtsp)+ 客户端 =( (WSDL + soap)+
rtsp)+ 客户端
WSDL是服务端用来向客户描述自己实现那些请求,发送请求时需要带上那些参数xml格式
soap是客户端向服务器端发送请求时xml的参数格式。
web services是实现摄像头控制(比如一些参数配置、摄像头上下左右(PTZ)控制);rtsp
实现摄像头传输,web services指ipc控制到具体的技术实现,进行技术交互,其实和http差不多,
客户端类似http post的格式向服务端发送请求,然后服务端响应客户端请求。
onvif中的profiles是什么?
onvif提供了很多的profiles概要文件,用来规范onvif设备端与onvif客户端的通信标准。目前已经发
布的profile文件主 ...
pcm音频格式详解
1、pcm是什么?pcm是脉冲编码调制,是数字音频的存储格式。
2、pcm的组成pcm音频文件由两部分组成:
头部信息
音频数据
2-1、头部信息头部信息中包含了音频文件的采样率、声道数等信息,用于描述音频文件的属性。
2-2、音频数据音频数据是实际的波形数据,以二进制形式存储在文件中。
3、pcm的采样率采样率是指每秒从录音设备或声音文件里采样的次数,它描述了音频文件的长度。
采样率越高,音频文件的长度就越长。采样率越低,音频文件的长度就越短。
常见的采样率有:
8kHz:电话
16kHz:CD
22.05kHz:低音炮
44.1kHz:CD
48kHz:DVD
采样率越高,音质就越好。采样率越低,音质就越差。
采样率越高,文件大小就越大。采样率越低,文件大小就越小。
用高于采样率的播放器播放高于采样率的音频文件,会降低音质。声音比较尖锐。用低于采样率的播放器播放低于采样率的音频文件,会降低音质。声音比较模糊、低沉。
4、pcm的采样位数采样位数是指每个采样点占用的二进制位数。常见的采样位数有:
8位:表示每个采样点占用的二进制位数为8位
16位:表示每个采样点占用的二进制 ...
soap协议
SOAP 构建模块1、一条 SOAP 消息就是一个普通的 XML 文档,包含下列元素:
2、必需的 Envelope 元素,可把此 XML 文档标识为一条 SOAP 消息
3、可选的 Header 元素,包含头部信息
4、必需的 Body 元素,包含所有的调用和响应信息
5、可选的 Fault 元素,提供有关在处理此消息所发生错误的信息
所有以上的元素均被声明于针对 SOAP 封装的默认命名空间中
http://www.w3.org/2001/12/soap-envelope
以及针对 SOAP 编码和数据类型的默认命名空间:
http://www.w3.org/2001/12/soap-encoding
语法规则这里是一些重要的语法规则:
1、SOAP 消息必须用 XML 来编码
2、SOAP 消息必须使用 SOAP Envelope 命名空间
3、SOAP 消息必须使用 SOAP Encoding 命名空间
4、SOAP 消息不能包含 DTD 引用
5、SOAP 消息不能包含 XML 处理指令
SOAP 消息的基本结构123456789101112131415161718192 ...
wsdl接口
wsdl文档WSDL 文档仅仅是一个简单的 XML 文档。
它包含一系列描述某个 web service 的定义。
WSDL 文档结构WSDL 文档是利用这些主要的元素来描述某个 web service 的:
12345元素 定义<portType> web service 执行的操作<message> web service 使用的消息<types> web service 使用的数据类型<binding> web service 使用的通信协议
一个 WSDL 文档的主要结构是类似这样的:
12345678910111213141516171819<definitions><types> definition of types........</types><message> definition of a message....</message><portType> definition of a port..... ...
常见的总线和通讯方式
I2C 总线I2C(Inter-Integrated Circuit,集成电路间通讯)是一种用于在多个集成电路之间进行数据交换的协议,它使用 two-wire(两线)通信协议,通常由两个 GPIO(通用输入输出)引脚组成,通常为 SDA(数据线)和 SCL(时钟线)。I2C 总线具有以下特点:
半双工通信:在同一时间内,数据线(SDA)只能由一个设备控制。以下是一次典型的 I2C 数据传输流程(包含 8 位数据帧):
起始条件:主设备发起起始信号,表示数据传输开始。
从机地址:主设备发送 7 位的从机地址和 1 位的读写位(0 表示写,1 表示读)。
应答信号:从设备接收到地址后,会发送一个应答位(ACK)表示已正确接收。
数据传输:主设备或从设备开始传输 8 位的数据。
应答信号:每传输完 8 位数据,接收方会发送一个应答位。
停止条件:主设备发起停止信号,表示数据传输结束。
如果通讯过程中如果从机反应比较慢,这时候从机是可以把时钟线拉低来让主机等待的,很多拿GPIO模拟的I2C都没实现。还有就是I2C总线是允许多主机的,多主机如何避免冲突等等。实际使用中,像STM32出现I2C ...
蓝牙
角色认识master 和slave属于建立连接之后的概念,一旦建立连接,scanner角色变为master,advertiser变为slave。 根据应用场景的需求,一个设备可以是master,也可以是slave或者二者兼备。 初始化建立连接的设备称为master,负责广播的并接收连接请求的设备称为slave。
ffmpeg
示例ffplay -ar 8000 -ac 1 -f mulaw out.g711u-ar 指定音频采样率-ac 指定音频声道数-f 指定音频格式,这里使用mulaw格式
将wav音频转换为mulaw格式(g711u)ffmpeg -i input.wav -ar 8000 -ac 1 -acodec pcm_mulaw output.ulaw-i 指定输入文件-ar 指定音频采样率-ac 指定音频声道数-acodec 指定音频编码格式,这里使用pcm_mulaw
将mp3音频转换为wav格式,再转为mulaw格式才行,直接转有概率转的不对ffmpeg -i song.mp3 -ar 8000 -ac 1 -ab 8 song.wav-i 指定输入文件-ar 指定音频采样率-ac 指定音频声道数-ab 指定音频码率
PCM(脉冲编码调制)在FFmpeg中有以下常见类型:pcm_s16le16位有符号小端格式(Signed 16-bit Little Endian),常用于WAV文件的默认编码。
pcm_s16be16位有符号大端格式(Signed 16-bit Big Endian), ...
中断
Linux中中断在linux在中,嵌套中断被被禁止。回顾:单片机中,嵌套中断是当前中断发生时,被优先级更高的中断打断,优先执行级别更高的中断。
由于Linux的异步I/O、进程调度等很多重要操作都依赖于中断,中断对于内核的运行非常重要,在屏蔽中断期间所有的中断都无法得到处理,因此长时间屏蔽中断是很危险的,这有可能造成数据丢失乃至系统崩溃等后果。这就要求在屏蔽了中断之后,当前的内核执行路径应当尽快地执行完临界区的代码。
向量表中保存了一系列的跳转指令,当系统发生异常时,由处理器负责将程序执行流转到向量表中的跳转指令,最常见的就是中断向量,应用工程师只需要使用固定的函数名编写中断处理程序,在中断发生时该中断处理程序就会被自动调用,这背后的实现就是中断向量表的功劳。
在 armv7 中,中断向量表可以设置在两个地址:0x00000000 和 0xffff0000,由协处理器 cp15 的 SCTLR 的 bit13 来控制,默认情况下,中断向量表的位置在 0x00000000,实际上,对于操作系统而言,比如 linux,会更倾向于将中断向量表放在 0xffff0000 处,因为 0 ...
arm汇编与C内联汇编
0、常用指令0-1、GNU汇编语法:label:instruction @commentlabel:标号,表示地址位置,有的指令前面有标号,通过标号来定位指令位置。也可以用来表示数据地址,任何以:开头的标号都是数据地址。instruction:指令,表示一条指令。也可以是伪指令。@comment:注释,表示对指令的说明。
用户可以使用.section指令来自定义一个段,汇编系统自定义了一些段名字。.text:定义一个代码段。.data:定义一个初始化的数据段。.bss:定义一个未初始化的数据段。.redata:定义一个只读的只读数据段。
程序默认入口__start,也可以使用链接脚本中ENTRY指令指定程序入口。
123.global __start__start: b main
.global:全局指令,表示定义一个全局标号。相当于C语言中的extern,全局变量.byte:定义一个字节,相当于C语言中的char。.short:定义一个字,相当于C语言中的short。.long:定义一个双字,相当于C语言中的int。.equ:定义一个字节,.equ num,0x12 。相当于 ...
linux内核代码规范
缩进:
使用 8 个空格的制表符进行缩进。函数参数和长表达式在续行时也使用 8 个空格的缩进。行长度:
每行最大长度为 80 个字符。大括号:
大括号前换行,符合 Linux 风格。空格:
赋值操作符前后留空格。控制语句(如 if, for, while)前留空格。行尾注释前留两个空格。其他:
不允许短的 if 语句、循环语句、函数和代码块写在一行。字符串字面量允许换行。指针对齐方式为右对齐。以下是调整后的 .clang-format 文件,确保更符合 Linux 内核的代码规范:
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162---BasedOnStyle: LLVMIndentWidth: 8 # 通用缩进宽度为8个空格UseTab: Never # 不使用制表符,只使用空格TabWidth: 8 # 制表符宽度为8个空格ColumnLim ...