![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
技术
阿木小呆呆
这个作者很懒,什么都没留下…
展开
-
根据年月日计算当天是周几,以及当月有几周,当天属于第几周
根据年月日计算当天是周几,以及当月有几周,当天属于第几周原创 2022-04-06 14:48:13 · 553 阅读 · 0 评论 -
printf 封装打印
#define __TIME_ struct timeval tv; struct tm *ptm;gettimeofday(&tv, NULL);ptm = localtime(&tv.tv_sec);#define __TIME_MS__ ptm->tm_year + 1900,ptm->tm_mon + 1,ptm->tm_mday,ptm->tm_hour,ptm->tm_min,ptm->tm_sec,tv.tv_usec#define de原创 2022-03-07 15:02:21 · 384 阅读 · 0 评论 -
GB35114 A级过检
最近公司要求支持GB35114 A级过检,折腾了两周,终于验证通过,在此记录一下,方便以后自己查看。GB35114 A级过检单向认证,设备需要发送签名信息给服务器验证签名信息的组装注意事项:a) 按照GB协议规则组装待签名的字符串.b) 对组装好的字符串进行sm3杂凑算法,这里使用sm3杂凑算法时要使用设备自己的公钥,用户id是1234567812345678,长度为16.c) 对32字节sm3杂凑值进行签名,使用设备私钥.d) 对签名算出来的 r和s值进行ans.1(der)编码.e)原创 2021-09-22 14:07:39 · 2494 阅读 · 3 评论 -
rtp负载mp3音频
最近有客户要求在进行rtsp拉流时希望音频是mp3,而我们常规支持的只有常用的g711a,u这些。所以开始查找资料进行探索,目前rtp负载mp3有两种方式,一种是 rfc3119文档描述的方法把音频数据累积,然后提取出ADU数据作为一帧音频数据通过rtp发送出去,第二种就是 rfc2250文档描述的在每帧音频头前再加4个字节的头,两种方法的差异性在我看来是rfc2250文档描述的方法较简单,实现比较容易,rfc3119文档描述的方法较麻烦,优点是丢包后带来的音频解码影响相对较小. 经过两周的折腾,终于把..原创 2021-09-22 09:47:09 · 1050 阅读 · 0 评论 -
交叉编译S3库
s3库是用于亚马逊云存储的访问接口封装库,可以直接使用其封装好的接口去访问云存服务器,实现上传和下载文件。下载libS3源码,解压后进入其中,打开GNUmake文件,修改编译器。1. 根据依赖关系先编译好libcurl,libxml2,openss两个库 2.修改makefile 替换成自己的编译器 修改如下# GNUmakefile## Copyright 2008 Bryan Ischo <bryan@ischo.com>## This file is part of原创 2021-05-17 19:48:23 · 539 阅读 · 0 评论 -
关于ffmpeg 指令使用
mp3文件转g711a: ffmpeg -i audio.mp3 -acodec pcm_alaw -f alaw -ac 1 -ar 8000 -vn g711a.pcmbat脚本拉取rtsp流存为mp4:@echo ===============start test ===============:loop@echo testingffmpeg -rtsp_transport tcp -i rtsp://192.168.2.33/snl/live/1/1/ -y -an -ss 1..原创 2021-04-27 15:39:01 · 896 阅读 · 0 评论 -
linux下sd挂载
查看驱动是否识别了sd卡~ # cat /proc/partitions major minor #blocks name 31 0 256 mtdblock0 31 1 3072 mtdblock1 31 2 10752 mtdblock2 31 3 64 mtdblock3 31 4 1024 mtdblock4 31原创 2021-03-24 09:46:11 · 481 阅读 · 1 评论 -
简单日志记录模块
typedef struct _protocol_log{ int m_flag; /*已使用*/ char m_log_str[STR_LEN_256]; /*日志信息*/ struct _protocol_log *m_next;}protocol_log_t;typedef struct{ int m_log_num; protocol_log_t *m_log_list_head;}log_list_t;/****.原创 2020-12-21 17:35:41 · 211 阅读 · 0 评论 -
内存记录模块,记录所有使用的内存,实时查看哪里出现了内存泄漏
在大型项目开发时使用这个模块实时监控内存使用情况,解决出现内存泄漏时不容易定位的问题文件:MemoryManage.h#ifndef _MEMORYMANAGE_H_#define _MEMORYMANAGE_H_#include <stdio.h>#include <stdlib.h>#include <string.h> #define MAX_NODE_NUM (15)#define FILE_NAME_STR (原创 2020-08-26 09:55:59 · 318 阅读 · 0 评论 -
固定内存的队列+curl发送文件和https消息
为了节省内存,写了一个固定内存不限长度的队列,原理是最开始申请一片大的内存,后面队列使用的内存都从大内存中取得。解决了频繁申请内存的问题和控制队列使用内存大小的问题。文件: ydzj_cloud_queue.h#ifndef _CLOUD_QUEUE_H_#define _CLOUD_QUEUE_H_#include "ydzj_cloud_common.h"#include "sys/sys_pthread.h"typedef enum queue_mode{ BLOCK_MODE =原创 2020-08-26 09:50:54 · 191 阅读 · 0 评论 -
ps封装h264和h265
最近完成了ps封装h264和h265视频。文件: ydzj_cloud_package_ps.cpp#include "ydzj_cloud_package_ps.h"#include "ydzj_cloud_common.h"int create_ps_header(char *p_data, uint32 n_dts, uint32 n_bit_rate){ //时间戳需要处理,27 MHz,dts ms uint32 n_scr_ext = 0; uint32 n_scr_base原创 2020-08-26 09:17:25 · 964 阅读 · 1 评论 -
H264码流的 ps封装
1、写在开始之前: 最近因为新工作要维护别人留下的GB模块代码,先熟悉了流程,然后也试着封装了下ps流,结果也能通过测试正常预览了,当然,其中开发读文档的头疼,预览花屏,卡帧的事情都有遇到,当时慢慢的看文档,整理逻辑,也就都顺利解决了,下面把大致的一些流程代码贴出来分享下。既然是对接国标,自然少不了通读它的标准文档和相关的RFC文档了!具体的我就不说了,可以用百度google下的。注意:因为是GB要求ps封装后再加上rtp头的格式来的, 所以下面代码中我也加上了rtp头,如果不需...转载 2020-08-07 08:44:54 · 2130 阅读 · 4 评论 -
H264 视频流rtp打包之我理解
H264视频流一般关键帧都会有 00 00 00 01 sps + 00 00 00 01 pps, sps:是以 67 开头的数据 一般是 [00 00 00 01 67 42 A0 1E 23 56 0E 2F … ]pps:是以68开头的 一般是【00 00 00 01 68 CE 3C 80】若是一帧数据的长度小于MTU,则可以一包就发送完,直接在数据前面加12字节的RTP头就可以了FA原创 2017-04-02 17:07:21 · 1488 阅读 · 1 评论 -
十六进制数据原样转换成字符串
把16进制数据原样转成字符串。比如0XAB 0X45 0X D5 0XEE 转换成 “AB45D5EE”void Sdk_Int2Char(int p_nNum, char *p_Ch){ if(p_nNum <= 9) { *p_Ch = p_nNum + '0'; } else { /*0 - 9 是十个数*/ *p_Ch = (p_nNum -10)...原创 2018-09-20 16:56:01 · 15826 阅读 · 0 评论 -
openssl 指令使用心得
工作中用到的一些指令 记录一下,方便以后用创建私匙:openssl genrsa -out rsa_private.key 2048创建公匙:openssl rsa -in rsa_private.key -pubout -out rsa_public.key进行摘要,其中摘要算法可以指定此处指定sha512摘要算法openssl dgst -sha512 file.txt ...原创 2018-09-21 10:20:15 · 566 阅读 · 0 评论 -
curl使用方法
curl命令是一个利用URL规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称curl为下载工具。作为一款强力工具,curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies、认证、从指定偏移处下载部分文件、用户代理字符串、限速、文件大小、进度条等特征。做网页处理流程和数据检索自动化,curl可以祝一臂之力。语法cu...转载 2018-09-21 15:09:50 · 1301 阅读 · 0 评论 -
c语言实现签名和签名验证
#include <openssl/rsa.h>#include <openssl/pem.h>#include <openssl/err.h>#include <openssl/sha.h> #include <openssl/crypto.h>void print_Hash(unsigned char *md, int ...原创 2018-11-08 15:57:01 · 8483 阅读 · 11 评论 -
base64编解码
以前写的编解码代码现在在项目中用上了,改了一些问题,由于以前的博客现在貌似不好修改了,所以重发一次#include <stdio.h>#include <stdlib.h>#include <string.h>#include <assert.h>#define SN_SUCCESS (0)#define SN_ERROR...原创 2018-11-26 10:33:26 · 647 阅读 · 0 评论 -
内存开销记录模块
利用hash表来记录 在程序中malloc和free内存的情况MemoryManage.h#ifndef _MEMORYMANAGE_H_#define _MEMORYMANAGE_H_#include <stdio.h>#include <stdlib.h>#include <string.h> #define MAX_NODE_NUM ...原创 2018-12-07 19:17:49 · 236 阅读 · 0 评论 -
shell 命令一些应用
find -name *.sh | xargs dos2unix 这里是把find 找到的文件作为参数 传给 dos2unix 指令 ,xargs 在这里起到的作用是接收find的返回值传入dos2unix作为参数相信到这里应该都知道xargs的作用了,那么我们看看xargs还有一些有用的选项:1. -d 选项默认情况下xargs将其标准输入中的内容以空白(包括空格、Tab、回车换行...原创 2019-01-11 18:55:45 · 455 阅读 · 0 评论 -
搭建samba服务
-- 你知道什么是天才的诀窍吗? 那就是永远只做一件事。Linux中samba服务器的搭建 使用的vmware12虚拟机安装的centos6.8和物理机上的windows10,实现在windows10 上访问CentOs上的samba服务。一、先查看系统中是否安装有samba服务相关的软件包。 查看到我的linux中没有安装samba相关的软件包,接下来进行安装...转载 2019-01-18 11:39:03 · 167 阅读 · 0 评论 -
各种开源库交叉编译
#交叉编译openssl库./config no-asm no-shared --prefix=/test/openssl-1.0.1u/Demo (--prefix=/usr/local)然后修改makefile文件 把CC=gcc 改为CC= arm-hisiv600-linux-gcc,然后make ,make install,这里编的是静态库,如果要编动态库则把no-share...原创 2019-01-10 10:53:13 · 1506 阅读 · 1 评论 -
HTTPS 建立连接过程
SSL协议通信过程(1) 浏览器发送一个连接请求给服务器;服务器将自己的证书(包含服务器公钥S_PuKey)、对称加密算法种类及其他相关信息返回客户端;(2) 客户端浏览器检查服务器传送到CA证书是否由自己信赖的CA中心签发。若是,执行4步;否则,给客户一个警告信息:询问是否继续访问。(3) 客户端浏览器比较证书里的信息,如证书有效期、服务器域名和公钥S_PK,与服务器传回的信息是否...转载 2019-02-20 15:54:58 · 982 阅读 · 0 评论 -
shell脚本判断包含关系
Shell脚本中判断字符串包含的集中方式2018年08月29日 13:44:49 季检察官 阅读数:173 1.字段 grep:案例: str1="abcdefgh"str2="def"result=$(echo $str1 | grep "${str2}")if [[ "$result" != "" ]]then echo "包含"else ech...转载 2019-03-18 19:15:35 · 2024 阅读 · 0 评论 -
交叉编译 微软物联网SDK (azure-iot-sdk-c)
因工作需要移植微软的物联网SDK,通过文档交叉编译出了sdk库,在此记录下编译方法.1. 先下载 SDK (azure-iot-sdk-c: https://github.com/Azure/azure-iot-sdk-c/tree/2018-09-11),有一点要提示下,我在下载SDK时最开始选择的是 DownLoad ZIP,这样下载下来的SDK不完整有很多依赖的文件夹内容都下载不下来,后...原创 2018-09-20 11:25:50 · 2776 阅读 · 1 评论 -
openssl签名
#include <string.h>#include <openssl/rsa.h>#include <openssl/pem.h>#include <openssl/err.h>#include <openssl/sha.h> #include <openssl/crypto.h> #include <...转载 2018-09-25 18:58:30 · 1153 阅读 · 0 评论 -
搭建jabberd2服务器
由于公司项目需要,安排我对jabberd2服务器进行搭建,搭建环境是海思的hi3516,在此记录我此次搭建遇到的难题和解决方法。1.下载编译jabberd2所需库 解压,进行交叉编译,我这里放上我在对这些库源码进行编译时用到的指令(主要是jabberd2和mysql交叉编译时遇到一些小麻烦)./configure CC=arm-hisiv600-linux-gcc-4.9.4 --p...原创 2018-04-03 11:25:31 · 888 阅读 · 1 评论 -
用C写onvif服务端遇到问题1
由于gsoap占用空间太大,所以公司决定用c来重写onvif服务端,在才开始做设备发现discovery时就遇到了一个问题,花了我两天时间才分析清楚. 问题现象是,我这边的服务端收到了onvif_test_tool 发送probe消息,并且按照要求组装了xml消息回复给了测试工具端但是测试工具却一直搜索不到我这台设备,通过抓包分析以及和以前gsoap回复的xml消息...原创 2018-03-20 11:31:15 · 372 阅读 · 0 评论 -
PackBit 压缩编解码方式小记
今天工作遇到这种压缩方式,没看太懂,所以就自己查了资料对packbit编码有了个大概的了解,在此记录下来,留给以后的自己!PackBits是一种快速,简单的无损压缩方案,用于数据的运行长度编码。苹果公司在Macintosh电脑上推出了MacPaint版本的PackBits格式。这种压缩方案是可以在TIFF文件中使用的压缩类型之一。TGA文件也使用这种RLE压缩方案,但将数据流视为像素而原创 2018-01-11 13:56:35 · 2972 阅读 · 0 评论 -
做onvif时遇到设置osd的问题
<?xml version="1.0" encoding="UTF-8"?><soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:tt="http://www.onvif.org/ver10/schema"原创 2017-04-17 10:28:23 · 5032 阅读 · 4 评论 -
sip笔记
对于 eXosip, 其处理过程如下: 1)eXosip_init (初始化) | v 2)eXosip_listen_addr (监听sip端口) | v 3)eXosip_register_build_initial_register (构建一个re原创 2017-04-02 17:25:32 · 764 阅读 · 1 评论 -
使用GSOAP的笔记
/下载GSOAP//编译GSOAP/一、 开发环境linux操作系统版本:Ubuntu 14.04 LTS linux编译环境:TI交叉编译器arm-arago-linux-gnueabi-g++gsoap软件包:gsoap_2.8.26.zip二、编译编译gsoap2.1.配置编译环境xxx@Ubuntu:~/gsoap-2.8./configure−−prefix=./configure --p原创 2017-04-02 17:19:58 · 692 阅读 · 0 评论 -
onvif rtsp收流后解析遇到的问题
下午把rtsp收流的代码全部写完了,可是测试发现保存的流用暴风影音播放有大量花屏,于是意识到可能解析视频数据时没解析对 分片打包基本样式: (rtsp head 4字节)+(rtp head 12字节)+(2字节 7c 85)1. 收到的rtsp 包 包头会有 24 00 两个直接的标识符,再后面是当前包的数据长度,一共四个字节H264视频流FA-U分片打包的解包方法: 1.RTP包头一般是原创 2017-04-02 15:21:43 · 1114 阅读 · 0 评论 -
PS封装H264码流
H264的PS封装 一个完整的ps包封装: PSheader + PS system header + PS system Map + PES header + h264 data因为一般视频数据都是采用rtp打包发送,所以这里我就把ps封装和rtp封装放在一起讲 1. 视频关键帧的封装 RTP + PSheader + PS system header + PS system原创 2017-03-04 09:52:26 · 10090 阅读 · 1 评论 -
base64编码和解码
写了个base64编解码程序,由于是自己写着玩的,所以写的比较随意,功能已经测试过了,都很正常。#include &lt;stdio.h&gt;#include &lt;stdlib.h&gt;#include &lt;string.h&gt;#include &lt;assert.h&gt;static int ZJF_Mail_int2char_FUN(int a){原创 2016-08-11 19:36:06 · 280 阅读 · 0 评论 -
c语言实现录音功能
写了个录音功能的小程序,给大家分享下,测试环境为ubuntu(Linux version 2.6.32-24-generic (buildd@rothera) (gcc version 4.4.3 (Ubuntu 4.4.3-4ubuntu5) ) #39-Ubuntu SMP Wed Jul 28 06:07:29 UTC 2010)<main.h>#ifndef _MAIN_H_#defi原创 2016-08-11 11:21:00 · 8599 阅读 · 2 评论 -
c语言写的发送邮件
突然对用c实现发送邮件有了兴趣,抽时间写了个小程序,亲测可以实现用新浪邮箱发送邮件,若用qq邮箱发送邮件的话密码哪里需要填的是qq邮箱的授权码,在设置–>账户下面查看。#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <errno.h>#include原创 2016-08-11 11:06:45 · 3486 阅读 · 1 评论 -
使用telnet发送邮件
通过Telnet实践,能够大大加深对TCP/IP协议栈的理解。这里,选取应用层的SMTP协议,通过Telnet,创建一个向任何接收方发送电子邮件的简单邮件客户。这里,选取常用的两个邮箱(qq邮箱、gmail),首先创建一个与smtp.qq.com的TCP连接(这里需要身份验证),然后使用SMTP协议与邮件服务器进行交谈,经该邮件服务器(一个QQ邮箱)向某接收方(一个gmail邮箱)能够一个电子邮件报转载 2016-08-10 17:10:29 · 5025 阅读 · 2 评论 -
签名、加密、证书的基本原理和理解
数据传输安全的要满足的要求:消息的发送方能够确定消息只有预期的接收方可以解密(不保证第三方无法获得,但保证第三方无法解密)。消息的接收方可以确定消息是由谁发送的(消息的接收方可以确定消息的发送方)。消息的接收方可以确定消息在途中没有被篡改过(必须确认消息的完整性)。对称加密网络的数据传输从发送方发出到接收方接收到,要经过数个节点才能到达目的地,在这个过程中难免会被别有用心的人监听(现在常用的网络数...转载 2018-04-11 17:10:12 · 6749 阅读 · 2 评论 -
perl 交叉编译
编译前的准备源码包:perl-5.22.4.tar.gz 交叉编译补丁包:perl-5.10.0-cross-0.1.tar.gz解压 perl-5.22.4.tar.gz 在x86上进行./configure.gnu 和make 得到一个 generate_uudmap 可执行文件,保存备用开始编译:解压 perl-5.22.4.tar.gz,perl-5.10.0-cross...原创 2018-04-04 18:51:02 · 2574 阅读 · 0 评论