- 博客(61)
- 收藏
- 关注
原创 srt协议
从图一可以看到,使用SRT传输音视频时编码端的音视频数据和解码端的音视频数据几乎是一致的,而图2的情况,就有些不同了,编码端的音视频数据通过UDP传输到解码端的时候,整个数据很可能完全不一样。更重要的是,网络状态比较糟糕的缓冲区冗余量决定了整个网络链路安全的冗余量,所以在SRT传输的过程中安全冗余量 = 发送缓冲区冗余量和接收缓冲区冗余量的最小值。SRT协议是目前非常受欢迎的低延时音视频传输协议,它解决了复杂的传输时序,引入了丢包重传机制,同时还拥有低延时的特点,所以在网络传输中比较受欢迎。
2024-10-23 16:12:35
1367
原创 flv复合流
从这张图可以看出,AUDIO DATA TAG是视频的具体信息,这其中包括SoundFormat音频类型(10: aac)、SoundRate音频采样率、SoundSize音频采样深度、SoundType音频编码类型、AACPacketType AAC包的类型、Data就是具体的音频数据。Script Tag的类型一般被称为MedtaData Tag,它一般会存储一些关于FLV音视频的参数信息,比方说:分辨率(width、height)、duration,AMF1的第一个字节表示包类型、默认0x02。
2024-09-12 21:36:54
578
原创 ts复合流讲解
TS Header是TS层的头部,固定为4字节,Adaption Field的作用是填充188个字节,TS Payload是pes(Packet Elementary Stream层)的具体数据。PCR是节目时钟参考表,PCR的PTS和DTS都是对同一系统时间进行采样,PCR的值是逐渐递增的。它是由MPEG公司推出来的全新的MPEG2的压碎标准,TS流的出现是为了让音视频事实交互更加方便,并且随着数字电视的发展,TS流数据在电视领域、网络音视频通信方面也扮演者举足轻重的地位。三、TS流的数据格式。
2024-09-10 21:36:47
917
原创 音频原始数据PCM
(2)采样深度:每次采样的数据大小,采样深度代表取样中对声音强度记录的精细程度,采样深度和采样率共同决定了声音的还原度。量化指的是在坐标轴上,把每一个离散的数据进行数字化操作,就是把采样后的每一个点都按数字化的方式表示出来。双声道(立体声):有两个声音通道, 声音在录制的过程中分配到两个独立的声道,这让人听起来就有了立体的感觉。声音是由震动产生的,所以声音是有频率的,人类可以听到的声音频率大概在20HZ~20KHZ。(1)采样率:指的是每秒采样的次数,48000HZ就相当于每秒采集48000次。
2024-09-03 16:13:48
1757
原创 nginx rtmp服务器搭建
参考链接:https://blog.youkuaiyun.com/qq_37079898/article/details/125037560。
2024-07-31 16:39:56
366
原创 005uboot启动内核
内核实际上就是一个比较复杂庞大的裸板程序,只不过是内核无法自启动,必须借助boot来启动,内核运行起来后,在软件分层上分成了应用层和内核层,内核层可以随意的访问硬件,应用层无法随意的访问硬件资源,想要访问硬件资源必须open后产生软中断进入内核层。进入uboot后,输入printenv可以看到一个环境变量,bootcmd,这个环境变量里面内容的作用就是把内核从NandFlash中读取到SDRAM中,然后从SDRAM的加载地址启动内核。1.移动内核到内核的加载地址(uImage头部定义了in_load)
2024-07-24 14:55:53
1004
原创 004自己添加一个uboot指令
uboot指令相关的代码在common目录下,我们进入common目录,模仿cmd_bootm.c实现一个指令。我们仿照这个文件实现一个cmd_hello.c。这个函数是指令功能函数。修改Makefile。
2024-07-22 21:29:57
179
原创 srs-librtmp交叉编译并移植RV1126
瑞星微平台提供的Rkmedia只提供了rtsp的相关api,而rtmp相关的例程只出现在rkadk中并且这部分的代码特别复杂,librtmp不支持h264裸流,所以我们引入了srs-librtmp。
2024-07-22 15:52:03
612
原创 003uboot目录分析和两个阶段
lib_ppc:存放对PowerPC体系结构通用的文件,主要用于实现PowerPC平台通用的函数,与PowerPC体系结构相关的代码,lib_i386:存放对X86体系结构通用的文件,主要用于实现X86平台通用的函数,与PowerPc体系结构相关的代码,lib_arm:存放对ARM体系结构通用的文件,主要用于实现ARM平台通用的函数,与ARM体系结构相关的代码。cpu:cpu目录存放的是uboot支持的各种cpu,其中包括各种cpu的启动文件。board:board里存放的是支持各个开发板的文件,包括。
2024-07-20 22:57:57
450
原创 002uboot Makefile分析
因为我们运行的指令是./mkconfig 100ask24x0 arm arm920t 100ask24x0 NULL s3c24x0,这里面并没有 “-”表示的参数,所以这几句就可以删掉了,,其实编译过程的Makefile分析起来同样简单,无非就是,定义交叉工具,引入头文件、各种库文件、链接编译好的.o文件最终形成一个可执行的程序。上面这个脚本用于判断第六个参数是否为空,很显然我们执行的那个代码的第六个指令是存在的所以直接执行else分支,所以直接执行。所以这个条件不成立,我们把这个代码也可以删除了。
2024-07-16 21:32:18
292
原创 001uboot体验
上电->uboot启动->关闭看门狗、初始化时钟、sdram、uart等外设->把内核文件从flash读取到SDRAM->引导内核启动->挂载根文件系统->启动根文件系统的应用程序。uboot是一个通用的裸机程序,为了适应各种芯片,必须要对uboot官方源码进行修改,我们这里采用打补丁的方式进行修改uboot源码。使用oflash烧写u-boot.bin,烧写完成后上电的一瞬间按下空格键就会进入uboot。set [环境变量名称] [环境变量的值] 可以设置环境变量。+具体的指令,可以显示出指令的用法。
2024-07-07 16:14:53
293
原创 rv1126 imx307修改驱动使能图像垂直反转180度
修改imx307驱动代码加入这一句代码,直接写死,这样拍出来的照片就使垂直翻转180度的了。修改,3007地址的bit0为1。查看imx307芯片手册。
2024-05-28 17:03:27
648
原创 RV1126 ext4 img格式的文件系统制作
(10)修改开发板/etc/fstab文件,挂载文件系统,执行以下命令即可。(9)执行resize2fs -M media.img调整大小。(1)制作镜像文件,用dd工具创建12G大小空的镜像文件。在media目录中有lost+found说明就挂载上了。(11)修改SDK中的parameter.txt。(6)往media添加要添加的内容。(8)检查和修复media.img。(5)挂载空的media.img。(2)可以查看制作的镜像。根据具体情况调整分区即可。(3)格式化镜像文件。
2024-02-04 16:24:41
394
原创 重定位(一)段的概念引入
NOR FLASH的特点:可以像内存一样的读,但不能像内存一样的写,必须通过特定的指令来写,那么问题来了,如果程序中含有需要更改的全局变量或静态变量,他们存储在NOR上我们直接修改是无效的(局部变量存储在栈中,也就是内存中,可随时改变他的初始值),那我们想要修改全局变量或局部变量该怎么办呢?这就引入了重定位机制,当程序是NAND启动时,2440会把前4K的代码拷贝到SRAM中运行(由硬件完成拷贝),然后CPU从0地址开始运行(0地址对应的是SRAM)。bss段存放初值为0和没有初值的全局变量。
2024-01-21 22:49:11
942
原创 gcc的编译过程
如果在链接时指定了-nostdlib选项时,在系统上编译会出错,因为这个选项无法链接启动文件和libc库,通常在编译裸机代码、bootloader、内核文件时添加该选项,因为这些文件的运行是完全不需要依赖系统的。(1)动态链接: 动态链接是链接动态库,在程序执行时才去找这些库中的内容,编译出来的可执行文件体积小,但是在运行可执行程序时,在该环境下必须要有相应的动态库。也可以直接 gcc -c xxx.c -o xxx.o ,gcc会对.c文件默认进行预处理,-c选项可同时进行编译和汇编操作。
2023-12-12 22:04:14
211
原创 Tengine 边缘AI计算框架移植RV1126(包括opencv的交叉编译)
编译opencv是为了,在编译Tengine时指定OpenCVConfig.cmake,以便寻找特定的opencv动态库01.从github拉取opencv源代码02.在虚拟机安装cmake04.解压opencv源码,并进入文件05.新建文件ax620a.toolchain.cmake配置交叉编译工具链06.创建build文件夹并配置cmake07.编译并安装查看在build目录下是否存在OpenCVConfig.cmake文件。
2023-10-14 23:06:35
1398
2
原创 NUC980webServer开发
1. 把驱动文件源码放在linux源码的drivers/net/wireless/realtek/rtlwifi/目录下,并且驱动文件源码目录更名为rtl8189。3.进入上级目录drivers/net/wireless/realtek/rtlwifi并打开Makefile。2.进入drivers/net/wireless/realtek/rtlwifi/rtl8189目录。3.移植hostapd相关工具到/sbin目录下 ,移植配置文件到/etc目录下。2.拷贝openssl相关库到/lib目录下。
2023-09-07 16:51:33
942
1
原创 计算文件系统分区的大小
f_bsizef_frsizef_blocksf_bfreef_bavailf_filesf_ffreef_favailf_fsidf_flagf_namemax在使用statvfs函数获取文件系统信息时,可以通过访问statvfs结构体的成员来获取所需的信息。例如,可以获取文件系统的总块数,可以获取文件系统的剩余块数。
2023-08-22 09:36:11
577
原创 goahead5.1.1移植arm Linux开发板
链接:https://pan.baidu.com/s/1JH60KeTF3AoAhbb1dMIWnQ提取码:1111。
2023-08-21 14:37:16
1067
1
原创 libcurl库
libcurl是一个跨平台的网络协议库,支持http、https,ftp,telnet等应用层协议。libcurl同样支持HTTPS证书授权,HTTP POST,HTTP PUT,FTP上传,HTTP基本表单上传,大力cookies和用户认证。
2023-03-21 16:33:59
3002
原创 网络知识(四)Http协议
(2)对于GET请求方式,浏览器把http header和data一同发送出去,服务器响应200代表发送成功。(3)对于POST请求,浏览器先发一个header,服务器响应100 continue ,浏览器再发送data ,服务器响应200。主要的响应数据,在浏览器的主体区域显示的数据都是响应主体(对于C语言而言拿的就是ASCII码或者是字符串)get 请求是没有请求主体的,get数据是在 请求行的url上进行传递到。(4)get 请求页面后退时,不产生影响(因为有缓存)
2023-03-20 20:26:00
119
原创 网络知识(三)socket、Tcp、Http之间的区别和联系
socket就是套接字,是网络通信的基石,是支持TCP/IP通信的基本操作单元。socket对程序员来说就是对Tcp/ip的封装,因为无法直接操控TCP/ip来进行通信。socket是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。(其实就是bind绑定)
2023-03-19 22:28:29
345
1
原创 网络知识(二)三次握手、四次挥手
三次握手发生在TCP连接的过程当中。通过TCP的连接,使上层网络的数据传输建立在“无差别的网络上”。在建立连接时,服务器处于被动状态。TCP一共有6个标志位,常见的有四个标志位含义SYN建立连接ACK响应确认结束RST重置四次挥手发生在TCP client与server断开连接的过程中。在断开时需要客户端和服务端总共发送4个包以确认连接的断开。在 socket 编程中,这一过程由客户端或服务端任一方执行close来触发。
2023-03-19 20:50:27
128
原创 网络知识(一)OSI网络模型
TCP/IP协议族并不包含物理层和数据链路层,因此它不能独立完成整个计算机网络系统的功能,必须与许多其他的协议协同工作。OSI七层模型是一个理想化的概念模型,每一层都能提供抽象的良好的数据接口。TCP/IP协议被分为四个概念层,其中的三层对应于OSI参考模型的相应层。
2023-03-19 19:09:16
115
原创 orangepiZero2智能家居(三)添加火灾、socket、语音模块
火灾检测模块大致与灯光模块相同。不同点:火灾模块要读取引脚状态pinMode要把output 改为input不用打开和关闭。
2023-03-19 14:10:53
116
原创 orangepiZero2智能家居(二)主流程设计和灯光代码编写
其余的灯的代码编写与浴室灯几乎一样,改改名称就好了,在mainPro中添相关的调试信息即可。
2023-03-17 20:36:12
189
原创 orangepiZero2智能家居(一)程序设计思路
设计模式是代码经验的总结,代码的稳定性高,拓展性强。是一系列的编程思想,一共23种模式。设计模式的目标是提高代码的可读性、稳定性、重用性、拓展性。工厂模式是设计模式的一种。算法并不是设计模式,只是解决问题的一种方法。设计模式描述了紧密结合的类与对象。类是一种用户自定义的数据类型。在C语言中结构体可以充当类。对象是类的一种实现,int age;int sex;//成员属性//成员方法dog cat都是一种类的对象。工厂模式是常用的设计模式之一。
2023-03-17 15:46:39
500
原创 LDV7 语音识别模块开发
本模块实际原理为 1 片 STC11 单片机+1 片 LD3320 组合形成的一款语音识别模块,语音识别部分已写好驱动程序,用于只需要对 STC 单片机进行编程加入自己的识别语句和控制程序即可,语音识别部分无需理会和做编程处理。对此用户只需要在提供的源程序基础上做单片机的编程应用即可,本模块具备 1 个 5V TTL 串口和 16 个单片机 IO 口的引出,可与外部单片机进行通信交互信息亦可控制继电器等设备。
2023-03-14 23:13:11
598
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人