自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(46)
  • 收藏
  • 关注

原创 17.使用avilib库:将h264格式的码流数据保存成AVI格式

目录一:下载:二:测试代码:三:转码的avi视频播放成功;一:下载:https://github.com/wyyrepo/avilib解压后得到如下文件:avilib.c avilib.h二:测试代码://*************h264转AVI格式********************HI_S32 SAMPLE_COMM_VENC_AVI(VENC_STREAM_S *stStream){ static avi_t *hAVIFile = NULL; static char

2021-02-22 23:41:03 1495 1

原创 43.linux下安装libxml2:测试解析xml格式文本数据

目录一:XML简介:二:编译:三:测试:四:移植:五:移植遇到的问题:参考文章:https://blog.csdn.net/qingzhuyuxian/article/details/82596386一:XML简介:XML 指可扩展标记语言(eXtensible Markup Language)。XML 被设计用来传输和存储数据。XML 很重要,也很容易学习。可扩展标记语言,标准通用标记语言的子集,简称XML。是一种用于标记电子文件使其具有结构性的标记语言。在电子计算机中,标记指计算机所能理

2021-01-28 06:44:59 394

原创 44.linux配置相关库的路径到环境变量

目录一:linux配置相关库的路径到环境变量:方法1.方法2:方法3:方法4:一:linux配置相关库的路径到环境变量:方法1.查看当前链接库的环境变量:echo $LD_LIBRARY_PATH添加路径:LD_LIBRARY_PATH=$LD_LIBRARY_PATH:/home/aston/huawei/pcre-8.39/install_lib/lib//重新初始化:source /etc/profile再次查看,成功;方法2:直接在/etc/profile文件的最后添加:

2021-01-27 23:02:48 358

原创 42.linux下安装pcre库:编程测试正则表达式

目录一:pcre简介:二:编译:三:遇到的问题:四:测试:五:移植到ARM:六:移植遇到的问题:一:pcre简介:PCRE(Perl Compatible Regular Expressions中文含义:perl语言兼容正则表达式)是一个用C语言编写的正则表达式函数库,由菲利普.海泽(Philip Hazel)编写。PCRE是一个轻量级的函数库,比Boost之类的正则表达式库小得多。PCRE十分易用,同时功能也很强大,性能超过了POSIX正则表达式库和一些经典的正则表达式库。二:编译:sudo ta

2021-01-27 22:58:14 940 1

原创 41.linux下安装zlib库:测试zlib的压缩数据功能

目录一:zlib简介:二:编译:三:测试:四:交叉编译:一:zlib简介:zlib是提供数据压缩用的函式库,由Jean-loup Gailly与Mark Adler所开发。二:编译:sudo tar -zxvf zlib-1.2.11.tar.gz -C .sudo chown -R aston zlib-1.2.11mkdir install_libsudo ./configure --prefix=/home/aston/huawei/zlib-1.2.11/install_libsud

2021-01-27 22:51:05 424 1

原创 40.linux下安装libiconv库:GB2312与UTF-8转码测试

目录一: libiconv库简介:二:下载:三:编译:四:测试:一: libiconv库简介:libiconv库为需要做转换的应用提供了一个iconv()的函数,以实现一个字符编码到另一个字符编码的转换。随着互联网时代的到来,通过互联网进行文字交流也逐渐增多:浏览外国的网站,这个时候字符编码的转换变得尤为重要。这带来了一个问题,就是许多字符在某一种编码方式中没有。为了解决这种混乱,Unicode的编码方式被建立。Unicode是一种超级编码包含了所有这些编码的字符集,因此一些新的文本格式像XML的默认

2021-01-25 00:51:28 679

原创 39.linux下安装libssh2:测试远程执行shell命令

目录一:libssh2介绍:二:安装:二:测试ssh2功能:远程执行主机shell命令:一:libssh2介绍:1.libssh2是一个C 函数库,用来实现SSH2协议。SSH2是一套安全通讯协议框架(早期的SSH1由于存在安全漏洞),基于SSH2协议的产品主要有openssh,putty,SSH Secure Shell Client等,这些都是开源的,但是这些代码非常难懂而且复杂,一个个函数深层次的调用很快就让人在C语言代码的海洋中迷失了方向,妄图通过从这些开源软件中抽取程序代码段来“组装”自己的

2021-01-24 10:25:49 2632

原创 38.linux下安装openssl:测试evp、md5加密解密

目录一:linux环境安装openssl库:二:编译安装到/home/aston/huawei/openssl-1.1.1d/install_lib文件夹:三:测试openssl加密功能:一:linux环境安装openssl库:1.OpenSSL(Open Secure Sockets Layer):是一个开放源代码的软件库包,应用程序可以使用这个包来进行安全通信,避免窃听,同时确认另一端连接者的身份。这个包广泛被应用在互联网的网页服务器上。2.源码下载:https://www.openssl.o

2021-01-24 10:12:01 1074

原创 37.linux安装libcurl库:和hfs搭建的的http服务器进行数据交互

参考博客:https://blog.csdn.net/qianghaohao目录一:下载并解压:三:测试:四:下载网页测试:五:设备不联网的情况下,虚拟机或开发板下载windows搭建的http服务器中的文件:一:下载并解压:1.下载:https://github.com/curl/2.解压:sudo tar -zxvf curl-7.66.0.tar.gz -C .二:编译:1.进入curl-7.66.0文件夹执行如下指令:sudo ./buildconf2.在该目录下创建inst

2021-01-23 18:15:52 638

原创 16.H264的网络传输RTP协议解析

一:RTP头协议头如下:

2020-12-31 12:02:27 1012

原创 35.top命令的使用和查看某个进程占用的系统内存大小

一:top指令查看CPU状态和内存使用状态:1.查看CPU占用率; %CPU上次更新到现在的CPU时间占用百分比2.查看内存占用率;%MEM进程使用的物理内存百分比3.RES:进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA(代码+程序使用的数据所占内存);二:查看某一个进程的物理内存占用状态:1.使用top -p 138562.查看进程的status文件:aston@ubuntu:~$ cat /proc/13856/status3.VmRSS就是物理

2020-12-30 17:09:17 8448

原创 34.Out of memory Kill process导致系统崩溃和kill进程

一:错误打印:1.关键打印:app.out invoked oom-killer: gfp_mask=0x200da, order=0, oom_adj=0, oom_score_adj=0Out of memory: Kill process 957 (app.out) score 524 or sacrifice childKilled process 957 (app.out) total-vm:67472kB, anon-rss:14496kB, file-rss:516kB2.全部打印

2020-12-30 15:44:48 1721

原创 33.找不到交叉编译工具链

一:提示错误:/bin/sh: arm-hisiv100nptl-linux-g++: command not found/bin/sh: arm-hisiv100nptl-linux-gcc: command not found/bin/sh: arm-hisiv100nptl-linux-g++: command not found/bin/sh: arm-hisiv100nptl-linux-gcc: command not found/bin/sh: arm-hisiv100nptl-li

2020-12-27 08:43:13 1066

原创 21.设备端使用tcpdump 抓包工具抓包

一:下载 libpcap-1.8.1.tar.gz 和 tcpdump-4.9.0.tar.gz工具:二:编译libpcap:1.解压并修改:root# tar -zxvf libpcap-1.8.1.tar.gzroot# cd libpcap-1.8.1/root# vi configure +5435#注释8行代码:5435 #add by lt 201703195436 #if test -z "$with_pcap" && test "$cross_compili

2020-12-27 08:33:38 237

原创 31.提示错误fopen_means Too many open files

一:打印提示fopen 出错:open_file_and_get_length:175 fopen /var/1608536431170.jpg errno = 24, means: Too many open files二:原因:1.Too many open files从字面意思来看,就是程序打开的文件数过多,不过这里的files不单是文件的意思,也包括打开的通讯连接(如socket),正在监听的端口等等;这个错误通常是打开的文件超过了系统限制。因为linux系统提供的文件描述符最多只有1

2020-12-27 08:13:25 621 1

原创 32.各种图片格式的文件头说明

一:.jpeg文件头标识 (2 bytes): 0XFF, 0XD8 (SOI)文件结束标识 (2 bytes): 0XFF, 0XD9 (EOI)用16进制打开.jpg的文件,即可看到头尾标识,如下所示:二:.png文件头标识 (8 bytes):0X89 0X50 0X4E 0X47 0X0D 0X0A 0X1A 0X0A三:.bmp文件头标识 (2 bytes):0X42 0X4D四:.gif文件头标识 (6 bytes)0X47 0X49 0X46 0X38 0X3

2020-12-27 08:09:20 7652

原创 第八章:6.二叉排序树

本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:所谓优势只不过是比别人多深入思考一点而已。二:二叉排序树的优势:*插入、删除的效率和实现元素查找的效率都很高,时间复杂度都为O(logN);三:二叉排序树的创建:当需要对集合{62, 88, 58, 47, 35, 73, 51, 99, 37, 93}做查找,我们则应该在创建此集合时就考虑二叉树结构,而且时排好序的二叉树:四:二叉排序树,又称二叉查找树。它或者是一棵空树,或者使具有以下性质的二叉树:1.若它的左子树不为空,

2020-12-19 22:48:55 408 1

原创 第八章:3.顺序查找表

本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:顺序查找(Sequential Search):又叫线性查找,是最基本的查找技术,它的查找过程是:从表中第一个(或最后一个)记录开始,逐个进行记录的关键字和给定值比较,若某个记录的关键字和给定的值相等,则查找成功,找到所查的记录;如果直到最后一个(或第一个)记录,其关键字和给定的值比较都不相等时,则表示表中没有所查的记录,查询不成功。二:设置“哨兵”编程技巧:1.无哨兵顺序查找:缺点是每次都要检查是否越界for(i=1;i<

2020-12-19 21:43:01 317 1

原创 第八章:2.查找概论

本篇文章参考的是《大话数据结构》,感谢作者程杰先生。第八章:2.查找概论:一:查找(Searching):就是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素。查找表(Search Table):是由同一类型的数据元素(或记录)构成的集合,如下图。关键字(Key):是数据元素中某个数据项的值,又称为键值,用它可以标识一个数据元素。也可以标识一个记录的某个数据项(字段),称之为关键码,如(1)和(2)所示。若此关键字可以唯一的标识一个记录,则称为主关键字(Primary K

2020-12-19 21:39:24 126 1

原创 第4章:3.栈的链式存储结构及其实现

本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:栈的链式存储结构,简称链栈,由于单链表有头指针,而栈顶指针也是必须的,所以让其合二为一即可;如下图,把栈顶放在单链表的头部。二:对于链栈来说,基本不存在栈满的情况,除非系统内存已经满了;对于空栈来说,链表原定义是头指针为空,那么链栈其实就是 top == NULL 的时候;三:链栈的结构代码;/* 链栈结构 */typedef struct StackNode{ SElemType data; struct St

2020-12-07 23:39:16 988

原创 第4章:2.两栈共享空间

本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:两栈共享同一空间,即数组,数组有两个端点,两个栈有两个栈底,让一个栈的栈底为数组的时段,即下标为0处,另一个栈的栈底为数组的末端,即数组长度n-1处,这样,两个栈如果增加元素,就是两个端点向中间延伸。二:如何判断栈满?1.普通情况下,当top1与top2见面时,为栈满,即 top1 + 1 = top2;2.极端情况,若栈2是空栈,栈1的top1等于n-1,就是栈1满了;当栈1为空时,top2等于0时,为栈2满。三:代码:/*

2020-12-06 11:41:35 541

原创 第4章:1.栈的定义及顺序栈

一:栈的定义:1.栈是限定仅在表尾进行插入和删除操作的线性表。栈顶:允许插入和删除的一端;栈底:不允许插入和删除的一端;空栈:不含有任何数据元素的栈;2.栈又称为后进先出(last in first out)的线性表,简称LIFO结构;栈的插入操作,叫做进栈(push),也称压栈,入栈;栈的删除操作,叫做出栈(pop),也称弹栈;二:栈的顺序存储结构及其实现:typedef int SElemType; /* SElemType类型根据实际情况而定,这里假设为int *//* 顺序栈

2020-12-06 11:16:30 270

原创 第3章:4.循环链表和双向链表

本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:循环链表:将单链表中终端节点的指针端由空指针改为指向头结点,就使整个单链表形成了一个环,这种头尾相接的单链表称为单循环链表,简称循环链表(circular linked list)。图示:二: 将下面两个单循环链表合并:过程如下:p = rearA->next; // 保存A表的头结点,即① rearA->next = rearB->next->next; //将本是指向B表的第一个节点(不是头结点)

2020-11-29 10:21:24 105

原创 第3章:3.静态链表

本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一.对于没有指针的语言怎么实现单链表的功能?有人想出来一个方法,用数组代替指针,来表示单链表。真是不得不佩服他们的智慧呀!二:数组描述的链表叫静态链表(另游标实现法):首先让数组的元素都是由两个数据域组成,data和cur。也就是说,数组的每一个下标对应一个data和一个cur。数据域data用来存放数据元素;而游标cur相当于单链表中的next指针,存放该元素的后继在数组中的下标。结构体表示如下:/* 线性表的静态链表存储结构 */t

2020-11-29 09:25:12 55

原创 第3章:2.线性表的链式存储结构(单链表)

本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:头指针与头结点的异同:头指针:*头指针是指链表指向第一个节点的指针,若链表有头结点,则是指向头结点的指针;*头指针具有标识作用,所以常用头指针冠以链表的名字;*无论链表是否为空。头指针是链表的必要元素。头结点:*头结点是为了操作的统一和方便而设立的,放在第一元素的节点之前,其数据域一般无意义(也可存放链表的长度)*有了头结点,对在第一元素节点前插入节点和删除结点,其操作与其他节点的操作就统一了。*头结点不一定是链表的必须要素。二

2020-11-29 09:00:10 245

原创 第3章:1.线性表的顺序存储结构(数组)

本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:线性表:零个或多个数据元素的优先序列。二:数组:随机存取数据;三:线性表的顺序存储结构优缺点:优点: *无需表示元素的逻辑关系而再开辟内存; *可以快速存取表中任意位置数据;缺点: *插入和删除需要操作大量元素; *当线性表长度变化较大时,难以确保存储空间的容量; *造成系统中大量碎片;四:线性表的链式存储:五:头指针与头结点的异同:代码:线性表的顺序存储结构的插入与删除#include <stdio.h>

2020-11-29 08:39:46 312

原创 第2章:算法

本篇文章参考的是《大话数据结构》,感谢作者程杰先生。一:算法的特性:有穷性;确定性;可行性;输入;输出;二:好的算法设计要求:正确性;可读性;健壮性;高低率:低存储;三:算法的时间复杂度(大O阶):O(n):线性阶O(1):常数阶O(n^2):平方阶O(log n):对数阶...

2020-11-29 08:28:30 67

原创 第1章:数据结构绪论

本篇文章参考的是《大话数据结构》,感谢作者程杰先生。尼采:“人们无法理解他没有经历过的事情”一图胜千言。一.基本概念和术语:1.数据:2.数据元素:3.数据项:4.数据对象:5.数据结构:...

2020-11-29 08:22:25 106

转载 19.TCP协议解析、tcpdump抓包分析三次握手和四次挥手

1.tcp报文格式:16 位源端口,16 位目的端口:数据从何而来,去向何方。32 位序号,32 位确认序号:和 TCP 的 ACK 机制有关,发送端给数据进行编号,接收端收到数据后确认收到哪些编号的数据。4 位报头长度:表示 TCP 的首部占用多少个 4 字节。6 个标志位:URG 紧急指针是否有效;ACK 确认号是否有效;PSH 提示接收端应用程序立刻从TCP缓冲区把数据读走;RST 复位标志,对方要求重新建立连接;SYN 同步标志,请求建立连接;FIN 结束标志,通知对方,

2020-05-31 16:32:27 1209

原创 11.从WireShark数据包中提取h264码流数据

一:安装插件:1.下载wireshark的插件:h264extractor-master.ziphttps://github.com/volvet/h264extractor2.解压后,将rtp_h264_extractor.lua和rtp_opus_extractor.lua两个文件放入到wireshark的安装目录,如下:“C:\Program Files\Wireshark\rtp_h264_extractor.lua”“C:\Program Files\Wireshark\rtp_opus

2020-05-18 23:13:21 2428

原创 18.linux系统编译时报错:error: conflicting types for

问题:linux系统编译时报错:error: conflicting types for2.可能的原因是:2.1.使用函数在函数声明之前:解决:将函数声明放在函数使用之前即可;2.2.函数声明与函数调用中的参数或返回值类型不一致;解决:修改参数类型,使之保持一致;2.3.头文件包含关系嵌套了;如:在test1.h中包含了test2.h,然后又在test2.h中包含了test1.h;解决:只能单向包含;...

2020-05-18 22:13:05 3209

原创 12.ubuntu下安装dlib

一:官网下载:http://dlib.net/二:1.首先在官网dlib官网下载最新版本的dlib由于dlib最初是一个C++库,要安装为python第三方库,要下载boost将C++ 编译为python,同时还要下载cmakesudo apt-get install libboost-python-dev cmake 2.安装:切换到setup.py同一级目录(安装到pytho...

2020-03-04 07:41:37 464

转载 10.AVFrame结构体

4.0 AVFrame 结构体typedef struct AVFrame {#define AV_NUM_DATA_POINTERS 8uint8_t *data[AV_NUM_DATA_POINTERS];int linesize[AV_NUM_DATA_POINTERS];uint8_t **extended_data;/**宽高 */int width, height;...

2020-02-27 07:17:55 362

原创 4.ffmpeg音视频文件处理基本流程

ffmpeg对一个媒体文件进行解码的主要流程是:1.解复用(Demux)视频文件的音频和视频都是分开进行压缩的,因为音频和视频的压缩算法不一样,所以解码也不一样,所以需要对音频和视频分别进行解码。虽然音频和视频是分别进行压缩的,但是为了传输过程的方便,降压所过的音频和视频捆绑在一起进行传输。所以解复用这一步就是将文件中捆绑的音频流和视频流分开来以方便后面分别对它们进行解码。2.解码...

2020-02-27 05:13:08 577

原创 12.AVCodecContext 结构体

AVCodecContext 结构体typedef struct AVCodecContext{ int bit_rate; int frame_number; //扩展数据,如 mov 格式中 audio trak 中 aac 格式中 esds 的附加解码信息。 unsigned char *extradata; //扩展数据的 size int extradata_...

2020-02-26 06:28:47 184

原创 11.AVCodec 结构体

AVCodec 结构体typedef struct AVCodec{ // 标示 Codec 的名字, 比如,"h264" "h263" 等。 const char *name; // 标示 Codec 的类型,有 video ,audio 等类型。 enum CodecType type; // 标示 Codec 的 ID,有 CODEC_ID_H264 等。 enum Code...

2020-02-26 06:26:29 293

原创 3.ffmpeg命令转换合成音视频文件示例

0.视频格式转换://将 .264格式转换成avi:ffmpeg -i test.264 test.avi --成功//将 .264格式转换成flv:ffmpeg -i test.264 test.flv --成功//将 .264格式转换成mp4:ffmpeg -i test.264 test.mp4 --成功//将 .264格式转换成mpg:ffmpeg -i test.2...

2020-02-23 07:52:13 713

原创 10.linux下安装libiconv库

1.解压库文件:官网下载:http://www.gnu.org/software/libiconv/解压:sudo tar -zxvf /mnt/hgfs/share/test/libiconv-1.16.tar.gz -C .cd libiconv-1.16/注意: 1.必须解压到linux原生目录下; 2.将文件属主改为当前用户: sudo chown -R aston ...

2020-02-03 09:23:35 588

原创 2.概率论的三大公理

公理一:0<=P(E)<=1公理二:P(S)=1公理三:对任一系列互不相容的事件E1,E2,…(即如果i!=j,则EiEj=NULL)有:

2020-01-19 23:42:45 4945

原创 2.h264的nalu单元解析:sps、pps、sei的概念

一.VCL和NAL的关系:1.H.264的功能分两层:VCL(Video Codeing Layer):视频编码层,负责的是视频内容的处理,重点在编解码算法;NAL(Network Abstraction Layer):网络抽象层,负责将编码后的数据以网络要求的格式进行打包和传输;2.H.264编码过程中的三种不同数据格式:(1)SODB(String of Data Bits)数据比特...

2019-12-24 06:58:59 7452 4

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除