自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(62)
  • 资源 (3)
  • 收藏
  • 关注

原创 网络流媒体-RTSP

1、RTSP概述rtsp属于应用层流媒体协议,常见的形式是rtsp以rtp和rtcp为封包形式,在传输层协议udp上进行流媒体传输的。有个之前理解过的rtp与rtcp的基础之后,rtsp就很好理解了。总结一点,rtsp里面的数据包是以rtp和rtcp的形式进行封装的,rtsp的作用在于建立会话连接,控制数据等提供给用户的一些操作和方法。就好比在一个工厂里面,员工只需要负责如何制作产品,如何控制...

2019-10-15 14:01:05 1463

原创 glfw的编译

关于glfw在编译过程中,遇到过很多问题,这里简单记录一下。1.下载源码git clone https://github.com/glfw/glfw.git2.安装X11yum search的时候你会发现有很多,这里选择libx11-devel.i686还是libx11-devel.x86_64,这点很重要,因为如果和你的机器不匹配会导致编译不过。[root@localho...

2019-11-16 23:18:23 2241

原创 网络流媒体-RTP与RTCP

1、RTP与RTCP概述RTP与RTCP协议本来不属于我们常见的流媒体协议,类似rtmp,rtsp,hls,webrtc等,但是很多的流媒体协议又是在这两个协议之上的额,比如rtsp和webtrc这两个下层就是rtp与rtcp协议的。这两个协议在四层模型中我们仍把他们归属到应用层协议中,因为这两个协议的实现代码均是由我们用户自己完成,一个包含RTP完整的流媒体协议封装应是类似user data...

2019-10-14 13:44:02 612

原创 网络流媒体-RTMP

1、RTMP协议概述在流媒体协议概述中,我们知道rtmp协议属于应用层协议,下层传输层协议使用的是TCP协议(其实还可以是UDP的,只不过我好像没看到)。在每学习一种协议的时候,我们首先要清楚协议封装,在我的理解中流媒体的所有协议均可看成与常见的flv,ts一样把我们需要的数据(音视频等)进行包装的一种封装格式,只不过流媒体的这种封账用于网络传输,flv,ts封装用于本地存储,作用不一样而已。...

2019-10-12 15:56:28 678 1

原创 流媒体协议概述

0、preview在了解流媒体协议之前,不得不了解基本计算机网络知识。TCP/IP协议族的上层协议是通过封装来使用下层协议的,我们的用户数据通过一层一层的向下进行封装。在链路层还加上了尾部信息。各层作用:数据链路层:如何控制介质的访问(wifi,有线等),如何确保介质通常。例:A要给B寄快递,那么选择空运还是陆运,选择后并且确保能够路或者航线是通的。网络层(IP):负责计算机之...

2019-10-11 20:20:22 767

原创 C/C++学习笔记-CMake教程(2)-CMakelists通用模板

CMake是一个用来管理项目工程的一个工具,使用CMake来编译项目,可以避免使用一些集成环境所带来的麻烦,但是作为入门级选手编写CMake还是有点吃力的。所以选择了一个比较通用的CMakelists.txt模板,大多数项目都可以在上面修改和扩展。这是一个rtmpDownload项目的CMakelists.txt,因此需要修改的工程名,如果增加了so库,在最后还需要连接so库(这里连接的是rt...

2019-02-16 17:05:27 557 1

原创 GitHub本地仓库的建立与远程仓库的上传(同步)

github是一个很实用的代码管理工具,代码的管理我们不仅限于本地代码的管理,为了做好备份与下载,我们还需要将本地代码上传到远程仓库进行备份管理。在代码的上传前提是你已经进行ssh key绑定了,具体绑定方法见博客GitHub的SSH的绑定 。第一步:git服务器上建立远程仓库。我们如果想要把本地代码上传到远程,那么远程就必须有一个与之相同的仓库。所以,我们首先要在远程建立一个远程仓库。下...

2019-02-16 15:22:31 397 2

原创 GitHub的SSH的绑定

github是一个基于git的高效的代码管理平台,方便我们下载和上传代码。那么,这样就会有一个问题:我们自己的远程仓库别人是不是同样可以上传修改代码,显然是不行的。于是就有本节的SSH Key的绑定,通俗的讲,每台机器都可以生成自己的ssh key,然后将生成的ssh key绑定到远程的git服务器(可以理解为git页面上)。这样一来,就是有绑定了ssh key的本地机器才能够上传修改代码。绑...

2019-02-16 14:29:39 1381 1

原创 心得-C/C++学习过程的小技巧

C/C++学习小技巧在码代码过程中,会遇到很多问题,在此记录自己在学习过程中遇到的“坑”。1、不要在函数中返回局部变量a.C/C++能返回static修饰的局部变量(因为在静态存储区)b.C/C++能返回用 new 创建的局部变量(因为在堆空间)c.C/C++能返回指向常量的指针,但不能返回指向普通局部变量的指针,否则返回的是乱码(因为后者创建在栈空间)d.C/C++能返回...

2018-12-09 22:49:16 240

原创 音视频学习-h264裸流的解析

 h264的解析代码,来自雷神的博客//============================================================================// Name : H264PARSER.cpp// Author : ss// Version :// Copyright : Your copyright...

2018-11-29 05:51:59 5894

原创 音视频学习-annexb与MP4之间的转换

 Annexb转MP4目前感觉上,annexb转MP4的场景似乎不太多,但不排除某些特定场景。所以贴出下面代码。/*annexbBuf:输入annexb类型的数据AvccBuffer:输出MP4或者AVCC的数据length:输入数据的总长度*/int AnnexbToMp4(char *annexbBuf,char *AvccBuffer,int length){ int ...

2018-11-29 03:35:19 5632

原创 音视频学习-h264的NALU结构分析

h264码流结构:h264码流也称之为“裸流”,其数据是由一个个NAL单元(NALU)连接起来的,因此要想解析h264就得弄明白NALU的结构。                        NALU标准:forbidden_zero_bit :禁止位,初始为0,当网络发现NAL单元有比特错误时可设置该比特为1,以便接收方纠错或丢掉该单元。nal_ref_idc:重要级别,...

2018-11-29 03:13:34 4837 1

原创 音视频学习-总述

音视频学习目录这段时间,在公司里面主要接触了关于处理直播时移的问题,遇到很多困难和问题,目前仍在学习和解决中。但是,我觉得还是应该多多总结自己的问题,才会有收获。目录:视频:1、h264的NALU结构分析2、h264裸流的解析3、h265的NALU结构分析4、h265裸流的解析音频:1、AAC帧结构2、AAC的流解析...各种格式的封装:1、封装...

2018-11-29 02:21:57 488

原创 音视频编解码之h264码流封装flv

//TODO

2018-10-01 17:13:35 663

原创 Eclipse-导入带makefile或者Cmakelists工程

目前很多的项目都有cmakelists来对项目进行管理,掌握如何导入CMakelists工程在日常的开发中还是很有必要的。 这是一个CMakeLists工程,然后新建一个build文件夹,在build文件夹里面cmake ..这个工程,生成makefile。在eclipse中新建工程,File->new->Makefile Project with Existing Cod...

2018-09-20 18:46:55 2839

原创 心得-工程结构规范

在刚入职的时间里面,接触到了很多以前前辈写得代码,有十分规范的代码,也有结构比较混乱的项目,当然大部分的代码都是极其规范的,作为一个局外人来看这份代码的时候,深刻地知道,规范代码对自己和对他人的重要性。1、目录结构工程结构是十分重要的,清晰明确的工程结构能够让你对整个项目有个整体的认识。以下便是我自己在写项目的时候经常用到结构目录。 ...

2018-09-20 18:15:34 234

原创 Linux-shell

//TODO

2018-09-20 18:13:33 173

原创 Linux-基本命令(持续不定期记录)

kill //TODO

2018-09-20 18:10:38 154

原创 Linux-vim的使用

什么是vim?Vim是从 vi 发展出来的一个文本编辑器。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。简单的来说, vi 是老式的字处理器,不过功能已经很齐全了,但是还是有可以进步的地方。 vim 则可以说是程序开发者的一项很好用的工具。连 vim 的官方网站 (http://www.vim.org) 自己也说 vim 是一个程序开发工具而不是文字处理软件。vim...

2018-09-18 19:09:00 161

原创 C/C++学习笔记-rapidjson的简单使用

rapidjson是什么,为什么选择rapidjson?  Answer:rapidjson 是一个 C++ 的 JSON 解析器及生成器 。rapidjson不依赖第三方库,而且只包含头文件,使用方便简单。rapidjson如何安装?Answer:rapidjson 的安装很简单,因为只包含头文件可用,且不依赖第三方库因此。我们只需把头文件下载下来就可以用。文件下载地址:https://...

2018-09-13 17:00:38 12840

原创 每天一句git

当远程没有对应的分支时,在local 创建分支,并push到远程。 [root@localhost XX]# git push origin newbranchesname /*如果仅仅使用git push的话在远程是看不到该分支的,因为远程本来就没有这个分支。所以需要origin /newbranchesname*/   ...

2018-09-03 09:48:06 153

原创 C/C++学习笔记-移位操作获取字节

//TODO

2018-08-28 15:04:49 959

原创 golang学习-安装环境

go下载地址:https://golang.google.cn/dl/ 下载完毕后,将压缩包进行解压,解压到usr/local文件夹下面。tar -C /usr/local -xzf go1.4.linux-amd64.tar.gz 配置环境:通过修改.bashrc文件:vim ~/.bashrc //在最后一行添上:export PATH=$PATH:/usr/loc...

2018-08-20 18:33:07 263

原创 C/C++学习笔记-linux下tree命令

├── Debug│   ├── makefile│   ├── objects.mk│   ├── sources.mk│   ├── src│   │   ├── subdir.mk│   │   ├── testcases.d│   │   ├── testcases.o│   │   ├── test.d│   │   └── test.o│   └── test├─...

2018-08-17 15:07:32 280

原创 C/C++学习笔记-CMake教程

在Linux的开发环境下,大多数个的就是CMake和make来对编译继进行管理。但是对于很多像我这样的新手来说。makefile规则过于复杂。有个同事说,这两个的关系就像是汇编语言和C++语言一样,我觉得比喻得十分贴切。本文就CMake的学习做一个笔记。简单的helloworld首先我们在工作目录上新建一个helloworld.cpp的文件,然后再新建一个CMakeLists.txt的文件...

2018-08-17 09:12:20 1519

原创 C/C++学习笔记-eclipseCDT打开git项目不能用问题

问题:在eclipse cdt中import github的远程项目,操作是import ->Git/projects from git ->Clone URI导入的项目可以switch branch, 但就是不能打开函数的声明,实际上eclipse的一切快捷键都不能用了我看了下导入项目的preference,发现连c++ build选项都没有,觉得问题可能在于导入的项目没...

2018-08-15 14:48:22 302

原创 C/C++学习笔记-string(增删改查)

查:功能:在字符串中查找某个字符或字符串。函数:find(str,pos),rfind(str,pos),find_first_of(str,pos),find_last_of(str,pos)。         参数:str,要查找的字符或字符串;pos,查找的起始位置。std::string str = "abc123abc456";/* str=| a | b | c...

2018-08-14 13:56:40 683

原创 C/C++学习笔记-terminate called without an active exception

错误:程序没有输出结果,进程僵死。这个错误是在程序运行的时候出现的,编译阶段没有任何错误原因就是std::thread在main()结束的时候,被销毁了。解决方案:调用join或者detach...

2018-08-13 15:25:58 20447

原创 C/C++学习笔记-eclipse不支持C++11问题

//TODO#include <iostream>#include <thread>std::thread::id main_thread_id = std::this_thread::get_id();void hello(){ std::cout << "Hello Concurrent World\n"; if (main...

2018-08-09 17:04:36 2086

原创 C/C++学习笔记-开发环境

Eclipse+CDT 目前不知道为啥要用eclipse,总是给人感觉笨笨的。在eclipse上新建c++项目,步骤:第一步:主要有3点,项目名称,项目类型(project type),编译器(tool chains)。编译器这里分了两种,要注意选择,第一种cross GCC是常说的交叉编译,但是,我们主要选择第二种Linux GCC。中间的内容设置简单明了,最后一步显示了...

2018-08-09 16:05:55 236

原创 C/C++学习笔记-读文件

读写文件在日常写代码中,是经常用到的。这里介绍两种,基于C的和基于C++的文件操作,个人常用C的文件操作,因为有人做过测试,基于C的效率高一点。具体没去比较过。基于C的文件操作#include    <stdio.h>1、fopen(filename,mode);解释:功能:打开一个文件流;参数filename:文件的名字; 参数mode:打开方式,r只读、r+可读可写...

2018-08-09 10:59:42 240

原创 C/C++学习笔记-多线程

多线程之std::threadstd::thread 是c++11里面新特性,特点在于能够简单方便的使用多线程,如果你用std::thread报错,那么很大可能是你的编译器不支持c++11,请参看另一片//============================================================================// Name ...

2018-08-09 10:57:44 203

转载 谈谈RGB、YUY2、YUYV、YVYU、UYVY、AYUV

该博客转载自http://blog.csdn.net/u014260892/article/details/518837231) YUV 4:4:4 YUV三个信道的抽样率相同,因此在生成的图像里,每个象素的三个分量信息完整(每个分量通常8比特),经过8比特量化之后,未经压缩的每个像素占用3个字节。 下面的四个像素为: [Y0 U0 V0] [Y1 U1 V1] [Y2 U2 V2]

2017-12-15 18:49:14 1114

原创 C/C++学习笔记-数组和指针

——————学习使人进步1、指针和const限定符主要从两个方向来说明const指针和const对象,一是const修饰的指针和非const修饰的指针。二是const修饰的对象和非const修饰的对象。代码: const int *ptr; //或int const * ptr;这里只说明被const限定的指针, 特点:a,指针所指向的对象必须为常量,不能被...

2017-12-07 21:07:44 205

原创 C/C++学习笔记-标准库类型

——————警告自己,当你在年纪轻轻就无所事事的时候,那么你就“危险”了。上坡路是很累的,当你觉得轻松的时候,那么你便是在走下坡路。出自《沃兹基索德》个1、string类型区别于java里面的String,首先大小写不一样。习惯java语言格式的时候需要注意。使用步骤:        a:引入头文件//注意用尖括号,因为属于系统头文件,区别于c的头文件,没有后缀“.h”;

2017-12-06 16:54:44 227

原创 C/C++学习笔记-开篇

——————故不积跬步,无以至千里;不积小流,无以成江海 。出自于荀子《劝学篇》因为之前一直用的是JAVA,由于某种原因,本人打今天起开始学习C++。自己给自己一个开篇,其主要目的在于瞎扯,为什么说是笔记而不是总结,是因为自己大头开始学习,不能像写其他技术博客一样十分宏观,给大家一个学习框架,这个系列只记录自己的学习问题,一般为基本知识点,很基础的。供自己学习使用。从今天起,每一篇博客都有

2017-12-06 16:12:47 210

原创 Java学习笔记_线程池

我们为什么需要线程池?因为对于处理多请求的时候,往往会采用多线程来进行处理,但是线程太多的话往往操作起来比较麻烦。说以采用线程池来多多线程进行统一有效的管理。

2017-07-24 19:11:17 226

转载 get和post编码方式

1、Get是用来从服务器上获得数据,而Post是用来向服务器上传递数据。 2、Get将表单中数据的按照variable=value的形式,添加到action所指向的URL后面,并且两者使用“?”连接,而各个变量之间使用“&”连接;Post是将表单中的数据放在form的数据体中,按照变量和值相对应的方式,传递到action所指向URL。 3、Get是不安全的,因为在传输过程,数据被放在请求的

2017-07-11 18:47:30 1751

转载 强引用、弱引用、软引用、虚引用的理解

1、强引用(StrongReference)         强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。如下:Object o=new Object();   //  强引用当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。如果不使用时,要通过如下方

2017-06-30 08:39:08 262

原创 1、hash法

1、hash法1、1 哈希函数的常用构造方法a、 直接寻址法直接寻址法,就是将关键字和关键字的线性表达作为哈希值。h(key) = key 或 h(key) = a x key + b.b、取模法选取一个p,h(key) = key mod p,p一般取哈希长度c、折叠法例如:key=12360324711202065,哈希表长度为1000,则应把关键字分成3位一段,在

2017-06-20 17:08:32 281

Elecard.rar

ElecardStreamAnalyzer是一个专业小巧的视频码流分析工具。对264,265等均可进行分析

2019-10-12

AVS2标准协议.pdf

目前流行的avs2编码标准协议,AVS2采用了混合编码框架,整个编码过程包括帧内预测、帧间预测、变换量化、反量化反变换、环路滤波和熵编码等模块。

2019-10-12

cmake详细教程

简单到复杂的cmake编写教程,适合刚入们的新手。cmake 已经开发了 5,6 年的时间,如果没有 KDE4,也许不会有人或者 Linux 发行版 本重视 cmake,因为除了 Kitware 似乎没有人使用它。通过 KDE4

2018-08-20

空空如也

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

TA关注的人

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