自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(115)
  • 资源 (3)

原创 工具网址收藏

linux函数API查询http://www.man7.org/linux/man-pages/index.html

2020-02-23 13:29:52 99

原创 linux下处理信号范例

最先处理信号是用signal函数简单处理的,但是我们需要做的是商业代码,下面的2个范例,基本涵盖了商业代码中信号的使用.信号中信号集的概念.目前的信号集一共有32个0000000000 0000000000 0000000000 000000000000 0000000000 0000000000 00规则:1.如果信号来了,就将对应的二进制位设置为1,当执行完信号函数后,对应...

2020-02-18 17:31:56 87

原创 linux 下创建守护进程以及守护进程和后台进程的区别

什么是守护进程?守护进程和后台进程的区别?如何创建守护进程?一:创建守护进程范例./** * 功能:创建一个守护进程 * * 守护进程编写规则: * (1)调用umask(0) --取消umask的功能 * umask是个函数,用来限制(屏蔽)一些文件权限的. * (2)fork()一个子进程出来,然后父进程退出;固定套路. * * 守护进程虽然可以通过终端启动,但...

2020-02-17 16:06:08 107

原创 FFmpeg实现h264 转mpeg1video 存储

需要实现的功能: 把h264文件进行解码,解码后然后进行mpeg1的编码. 这一步完成接下来再实现存储为ts,本篇代码实现了第一部分,注意事项:ffmpeg版本问题,今天2020.2.11的最新版本是ffmpeg 4.2.2,这个对mpeg1video的编码支持不行.使用ffmpeg sample encode_video.c会报:mpeg1video The encoder time...

2020-02-11 15:50:46 573

原创 类静态成员析构的技巧

问题来源:一个摄像头管理类,运行了单例模式,所以运行了静态成员,那么这个静态成员最后是如何进行析构的呢?#ifndef _VT_CAMERA_MANAGER_H_#define _VT_CAMERA_MANAGER_H_#include <string>#include <vector>#include "VTCamera.h"using namespac...

2020-01-14 17:29:29 135

原创 linux ubuntu 阿里云源: Address family not supported by protocol问题

首先说明,这个问题条件很固定:1.ubuntu18.042.使用的阿里云的源码问题出现的原因:1.recvfrom()int readSocket(int socket,unsigned char *buffer,unsigned bufferSize, struct sockaddr_in& fromAddress){ SOCKLEN_T...

2019-12-05 11:47:10 266

原创 ubuntu 18.04 下配置固定IP

参考文章,碰到问题请参考 :https://blog.csdn.net/Ljuice/article/details/87455839我的配置文件 :配置好后,执行 :netplan apply成功后终端没有任何输出,表示配置成功.配置成功,查看IP:...

2019-11-25 09:59:29 57

原创 linux 下检测内存泄漏

接下来整理下,如何在linux下检测内存泄漏.main.cpp#include <stdlib.h>int main(){ // 检测内存泄漏测试 // 下面的2行内存泄漏代码,如何检测出内存泄漏呢? char *p = new char [128]; malloc(200); // 1. 安装内存泄漏检测工具 - valg...

2019-11-22 11:34:53 64

原创 借助MFC工程进行内存泄漏分析

在我们的CPP文件中请加入下面几行代码:#include "stdafx.h"#ifdef _DEBUG#define _CRTDBG_MAP_ALLOC #include <stdlib.h> #include <crtdbg.h>#define free(p) _free_dbg(p, _NORMAL_BLOCK)#define ma...

2019-11-22 10:26:53 38

原创 linux 信号集测试范列

linux信号集测试工程:#include <unistd.h>#include <iostream>#include <signal.h>#include <sys/types.h>#include <sys/syscall.h>#define gettid() syscall(SYS_gettid)#include &l...

2019-11-21 14:54:51 28

原创 linux 信号量编程测试

在理解信号量之前,有2个基本概念需要整理:一个是内核态,一个是用户态.用户态好理解就是我们自己的代码,内核态就是内核去帮我们做的事情,比如我调用了一个函数 :memcpy();在调用的时候,就由用户态切换到了内核态,当memcpy完成拷贝,返回的时候,就从内核态返回到了用户态.信号量也是同样的道理:当我们收到信号的时候,本质上是从内核态突然的切入到了用户态,那么现在问题来了。当我们捕捉...

2019-11-21 10:15:33 31

原创 ubuntu 18.04 下安装和使用MySQL数据库

api 文档:https://dev.mysql.com/doc/refman/8.0/en/c-api.html安装mysql直接使用官方提供的二进制安装包进行安装https://dev.mysql.com/doc/refman/8.0/en/getting-mysql.html根据自己的操作系统选择安装包 ,同时也可以下载对应的各种语言的mysql库,比如C/C++/NET/Node...

2019-11-01 16:04:20 212

原创 sudo apt-get install安装的程序如何删除

记录一个小笔记.当我们使用sudo apt-get install mysql-sever,安装某个应用程序后,如何删除呢?1.sudo apt-get remove mysql-server2.sudo apt-get autoremove注意两个命令一个也不能少哦!...

2019-11-01 15:39:21 614

原创 linux 下编译exosip 库

1.安装mxml源码下载地址:https://github.com/michaelrsweet/mxml.git编译:prefix后面只能跟绝对路径:./configure --prefix=/mnt/d/work/company-work/exosip/mxml/buildmakemake install编译出来的结果:安装exosip/osip源码下载地址:http...

2019-10-29 17:02:25 314

原创 ffmpeg命令行使用笔记

从mp4文件中提取出264文件并且存储起来:注意是直接提取,不是提取后解码,再重新编码.ffmpeg -i baseline.mp4 -codec copy -bsf: h264_mp4toannexb -f h264 av.264-i 2018.mp4: 是输入的MP4文件-codec copy: 从mp4中拷贝-bsf: h264_mp4toannexb: 从mp4拷贝到annex...

2019-10-28 17:35:18 40

原创 RTP/RTCP协议详细介绍

借鉴资料和源码:RTCP资料:http://www4.cs.fau.de/Projects/JRTP/pmt/node82.html源码:live555 源码

2019-10-16 10:59:41 60

原创 计算机中是如何表示负数的? -原码/补码基本概念

首先说碰到的问题:最近在做媒体服务器,碰到了一个问题,我们媒体传输过程中,一般是来接收RTP包,RTP包有一个seq number, 范围是从[0-65536],当超过65536的时候,包序号接着从0开始进行传输(这种情况我们称之为 wrap-out).发生wrap-out后,会产生负数,但是存在干扰!-- 这个干扰就是UDP传输过程中的序号乱序.负数在计算中是如何表示的?int a = ...

2019-10-15 11:22:00 91

原创 C++ 字节对齐

为什么需要字节对齐?

2019-10-14 11:29:32 64

原创 Linux下的程序调试经验总结

首先千万不要抵触,这个东西就是看起来麻烦,但是经常用的命令其实也就那么几个,今天我们以我工作中碰到的实际例子为列,进行简单的操作说明.在某个固定的文件中添加断点定位到某个断点,逐行往下移动进入到某个函数,然后再函数内移动推出打印变量和类的信息显示调用堆栈gdb调试准备工作安装gdbapt-get install gdb调试之前请在编译选项中增加-g选项的支持:gcc -g...

2019-10-09 11:14:09 37

原创 无符号类型越界的问题

当无符号数越界后,底层是如何处理的?typedef unsigned short u_int16_t;u_int16_t s1 = 65535;u_int16_t s2 = s1 + 1; //我肯定会越界s2 = 0;u_int16_t s1 = 65535;u_int16_t s2 = s1 + 100; //我肯定会越界s2 = 99;也就是当越界后,重新开始从0开始计算...

2019-09-20 09:51:03 68

原创 Linux服务器编程,从服务器内分配一个全局唯一的可用的端口号

最近在项目中做RTP/RTCP的收包功能,需求是这样的:需要再媒体服务器这边生成一个rtp/rtcp端口,用来接收监控设备传递过来的rtp/rtcp包。你们生成这个端口,就需要满足2个条件:1.端口号必须唯一2.端口号还要可用最开始方案:第一种方案:从1000开始,每次加2个,检测这个是否可用,怎么检测,直接bind()判断是否成功.第二种方案:让系统自动帮我们分配一个端口.废话...

2019-09-12 19:02:06 84

原创 linux 线程池基础 ---线程锁 ,条件变量

我们在做服务器的时候,必然会涉及到一个基础的概念,这个概念就是线程池,但是线程池,又涉及到两个最基本的概念:线程锁/条件变量编译脚本:g++ -o thread threadtest.cpp -lpthreadthreadtest.cpp#include <pthread.h>#include <iostream>#include <unistd.h&...

2019-09-06 10:50:01 58 1

原创 git 上传文件超过100M,删除后,再次git add/commit/push后还是报同样的问题如何解决?

问题描述 :最开始上传了一个100M的文件,然后把大文件删除后,再执行操作:git addgit commitgit push然后提示如下的错误:真是十分的操蛋!!!网上参考了很多文章,基本没有解决的,,瞎JB乱写。故障产生的原因是有以前的记录,我们需要删除调以前的记录.1.git log– 查看素有的记录:2.git rebase -i 58312bd-i 后面越早...

2019-08-29 16:16:09 130

原创 MFC下 OPENGL程序范例 --- opengl3.0 shader programing

这个程序足足整了一天一夜,太崩溃了,废话不多说了,直接告诉大家怎么搞,然后上传我自己整理好的工程.效果 :把YUV图像渲染出来,使用opengl shader.参考文章:1.创建基本流程https://www.codeguru.com/cpp/cpp/cpp_mfc/tutorials/article.php/c10975/Setting-Up-OpenGL-in-an-MFC-Con...

2019-08-29 12:29:32 87

原创 QT URL Encode /Decode

今天碰到的一个问题是 :在注册表里注册了我自己的应用程序,然后网页打开exe。<a href="player:admin|E10ADC3949BA59ABBE56E057F20F883E|192.168.1.112|42010506011328616690">采用类似的方案通过网页调用我自己的播放器:但是后面的内容进行URL编码 :| 会转码为: %7C也就是命令行传入参...

2019-08-27 13:54:40 96

原创 windows下构建linux子系统 xshell无法连接的问题

具体的是参考:https://www.cnblogs.com/lonelyxmas/p/9914483.html应该不是端口占用的问题,直接改动配置文件就可以.解决方案如下:安装sshsudo apt intsall openssh-server openssh-client备份sshd配置文件sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_co...

2019-08-25 12:07:27 122

原创 RTP 数据穿透问题测试-----

本人一贯风格,先怀疑,在测试。在前面的一片文章中:https://blog.csdn.net/zhangkai19890929/article/details/100031823因为是服务器先发送的RTP数据包,但是我很好奇的是,服务器因为是主动发的RTP包,由于防火墙的缘故,服务器主动发送的RTP包到底是怎么到达播放端的呢?为此我做了两组实验:第一组实验,防火墙对网络应用程序的影响....

2019-08-23 15:02:49 332

原创 linux下live555 rtspserver搭建 ,服务器主动发送RTP包穿透问题

live555的源码其实作为学习代码是相当不错的,今天搭建这个服务器程序主要是为了测试:测试什么呢?在客户端发送SDP后,客户端会告诉你,往我的哪个端口发送数据RTP/RTCP端口.那么现在问题来了:正常情况下,是必须客户端先给服务器发送数据了,这样服务器才能给设备发送数据。只有这样路由器才不会被数据进行拦截.但是RTP包服务器先主动发送给客户端的? 这些数据难道不会直接被路由器给屏蔽...

2019-08-23 10:23:05 229

原创 小测试:全局对象是在入口函数main之前初始化,还是在之后

测试目的如题:为此自己亲自写了一个小demo:#include <iostream>using namespace std;class myApp{public: myApp() { cout << "myapp constructor" << endl; } ~myApp() { }};myApp theApp;i...

2019-08-17 22:29:30 134

原创 代码库--基于QT的OPENGL渲染YUV

昨天花了一天的时间来整理这块的业务,因为自己做QT的时间也不长.上来我们就直接说重点了:首先在pro文件中,我们必须指定使用opengl库:QT += openglLIBS += -L./libs -lopengl32在QT中我是直接创建了一个控件,让这个控件继承QOpenGLWidget。同时还必须继承QOpenGLFunctions,这样我们就可以使用: op...

2019-08-16 08:37:29 509

原创 IO文件描述符在创建子进程后的几点猜测!

在我们写linux服务器的时候,fork()子进程那是相当容易会碰到的,但是最近碰到了一个问题:场景描述:在主进程中处理通信协议,如果用户要加入一个不存在的房间,那么我们就会fork()一个子进程,然后所以的协议,我们都放到子进程中去处理,那么父进程也就可以中断了.这个时候:父进程的socket,我们在子进程中绝对不会用到.然后父进程可以关闭这个socket.问题来了???我们是否需...

2019-08-10 14:35:53 23

原创 网络编程-用户态缓冲区和内核态缓冲区读取的测试!

今天要说下自己碰到的问题!主要是今天在设计信令传输协议,这个传输协议呢?–不用说,大家都知道用TCP/UDP。我们设计结构体的时候,通常是按照如下的格式进行设计的:typedef struct{ K_U16INT type; K_U32INT len;//不包括头文件长度} K_COMMON_HEADER;type + len 这样的数据格式来进行设计,TCP传输的时候我, 我...

2019-08-05 15:37:23 226

原创 linux pipe用法 -- 进程之间消息传递

linux中进程之间传递消息,有signal信号传递,这个这个局限性比较大,说白了就是传递一些数字,那么如果我们要在进程之间传递更复杂的消息呢?比如文本字符串或者一些特殊的二进制消息结构体呢?可以借助socket,来互相传递数据,但是这种方式非首选,我们有更简单的用法,那就是pipe来实现进程之间传递消息.pipe主要就是用来解决进程之间通讯的。首先我们来了解下,pipe是如何干活的?ma...

2019-07-25 10:39:15 143

原创 linux网络编程之IO复用-epoll用法

上一篇文章中,我们讲解了select的用法和弊端.https://blog.csdn.net/zhangkai19890929/article/details/95165596select的最大弊端就是:就是每次都要遍历整个数据,来知道这个数组里到底哪些sockfd可以读写,这样的效率会导致我们处理高并发的瓶颈C10K(client 10k,也就是最大处理并发数量为10000)所以linu...

2019-07-12 13:48:46 65 1

原创 代码片段---使用ffmpeg从h264文件中提取出一帧一帧数据

d盘有一个test.264文件,我们需要从这个h264文件中提取出一帧一帧的数据,所以直接采用ffmpeg来做。#include <iostream>#include <stdio.h>#include <string.h>#include <errno.h>#ifdef __cplusplusextern "C" {#endif#...

2019-07-09 15:19:50 1879 1

原创 linux网络编程之IO复用-select用法

首先补点基础概念,什么是IO复用?IO复用是解决什么问题的?前面我们介绍了阻塞和非阻塞的用法,如果用着两种模式去做高并发,那么我们会怎么做?—没有任何解,我们只能用多进程,多线程的方式来做 .下面我们来看看伪代码:阻塞的:while(1){int cfd = accept();pthread_create(thread_func,cfd); //每来一个用户连接那么就需要开启一个线程...

2019-07-09 10:14:45 111

原创 音视频中的码率单位kbps

平时工作学习中,真的忽略了很多细节,比如码率这个单位。在我们看迅雷下载中,我们经常看到的单位KB/S。但是实际上我们做计算机开发,特别是网络传输使用的是:kbps.核心观点: 1mb 和 1MB ,这可是两个完全不同体量的数据,一定要弄明白.1Byte = 8 bits1B/s = 8bits/s,这种写法我们一般表示的是 1Bps = 8 bps,ps就是per seconds.1m...

2019-07-04 11:12:35 917

原创 关于音频采样率,音频帧率,每次采集多少字节的理解!

首先要理解一些音频处理的信息:采样率/位深度/通道数.采样率:以秒为单位,每秒采集多少声音数据的频率.位深度:上面我们说的采样率,每次会采集一次声音数据,这一次的声音数据的大小,既然是位深度,那么单位肯定是位了.通道数:和硬件参数有关,采集声音源的设备有几个.OK,举个例子:采样率48000,位深度 16bit ,通道数2知道这三个参数,那么基本我们就知道了设备1秒内可以采集到...

2019-06-27 14:07:13 5926

原创 linux c++ 网络测试-- 阻塞测试

首先说下问题的疑惑点在哪里?1.客户端用户不发数据,服务器阻塞udp socket ,recvfrom函数是否会一直阻塞?来,我们来写一端代码,方便我们测试,— 一定要多写代码,再简单都要写,理解和你认为你理解了,这之间的鸿沟,看似简单,实则非常深,而且不自己写一遍,心里真的是很没底的.#include <sys/types.h> #include <s...

2019-06-17 11:47:34 180 2

原创 linux vscode 构建调试环境

linux下的开发环境,包括调试什么的,学习成本不低呀,无法像我们在windows下面那样,有visual studio这种核武器!但是幸运的是,我们有vs code.下载地址:https://code.visualstudio.com/接下来给大家讲解一下,如何构建debug调试环境:...

2019-06-12 09:42:11 1392

MFCOpenglSample.zip

使用MFC配置OPENGL开发环境,编译shader,DEMO是直接提取YUV然后渲染出来,可以用在播放器里面,具体的可以参考本人的博客.

2019-08-29

ios libjpeg .a静态库

本来想免费提供给大家下载的,但是这给最少的资源分都是1分.

2019-01-02

android获取摄像头预览--基于webrtc android

基于webrtc-android,获取预览数据并且进行显示的一个demo,基于博客文章: https://blog.csdn.net/zhangkai19890929/article/details/82344751

2018-09-03

空空如也

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