DoubleLi

qq: 517712484 wx: ldbgliet

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
  4737 随笔 :: 2 文章 :: 541 评论 :: 1614万 阅读
< 2025年2月 >
26 27 28 29 30 31 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 1
2 3 4 5 6 7 8

01 2022 档案

摘要:使用gprof2dot和graphivz生成程序运行调用图 gprof2dot是一个将gprof生成的输出转换为dot脚本的工具。通过给定一个gprof的输出文件,将其转换为生成程序调用图的dot脚本。dot脚本可以生成图像来进行查看。 1、下载gprof2dot工具# gprof2dot工具由Jo 阅读全文
posted @ 2022-01-29 18:17 DoubleLi 阅读(583) 评论(0) 推荐(0) 编辑

摘要:专栏导读 本专栏第一篇文章「专栏开篇」列出了专栏的完整目录,按目录顺序阅读,有助于你的理解。 前言 doxygen 也可以生成函数调用关系图,但 doxygen 能做的远不止于此,它是一款优秀的文档自动生成工具。它可以将代码中的注释转换成帮助文档(注释格式要符合 doxygen 要求才行,FFmpe 阅读全文
posted @ 2022-01-29 18:05 DoubleLi 阅读(5788) 评论(0) 推荐(0) 编辑

摘要:1. 已知数据个数 题设让先输入数据个数,再另起一行,每隔一个空格输入一个整数。程序如下: int N;int nArr[100];cin>>N; //如果是C语言,这里就是scanf("%d",&N)for(int i=0;i<N;i++){ cin>>nArr[i]; //每遇到空格读入一个流i 阅读全文
posted @ 2022-01-28 14:36 DoubleLi 阅读(698) 评论(0) 推荐(0) 编辑

摘要:最近在做题时发现了这样一个问题,有些题目的数据是以单行给出的,比如(2 3 -92 234 275 -7)这样的数列,用cin读取不太方便(cin一般以换行结束一个数据的输入),所以常规做法是将之转化为字符串再行处理,但是在已知数列长度的情况下可以用以下方法读取; 已知长度为N for(i=0;i< 阅读全文
posted @ 2022-01-28 14:35 DoubleLi 阅读(1412) 评论(0) 推荐(0) 编辑

摘要:首先,能用的函数有很多,比如cin.get(), cin.getline(), gets(),getchar(), getline(),但是,经过检验发现都不方便。原因很明显,他们要求的参数不是字符串就是char*,用起来很麻烦。以下是我自己探索到的方法:1.数组法。 int arr[20]; in 阅读全文
posted @ 2022-01-28 14:34 DoubleLi 阅读(152) 评论(0) 推荐(0) 编辑

摘要:学C++的时候,这几个输入函数弄的有点迷糊;这里做个小结,为了自己复习,也希望对后来者能有所帮助,如果有差错的地方还请各位多多指教(本文所有程序均通过VC 6.0运行) 1、cin2、cin.get()3、cin.getline()4、getline()5、gets()6、getchar() 附:c 阅读全文
posted @ 2022-01-28 14:33 DoubleLi 阅读(125) 评论(0) 推荐(0) 编辑

摘要:顺序容器:容器中的元素是有顺序的,按位置存储。 关联容器:按元素的值来存储。 一、顺序容器 不同顺序容器的性能比较: vetcor string 便于随机访问元素,list forward_list 便于增删元素。deque 在两端增删元素较快。每个容器都有一个头文件,还有默认的构造函数。#incl 阅读全文
posted @ 2022-01-27 18:35 DoubleLi 阅读(288) 评论(0) 推荐(0) 编辑

摘要:概要 目录1 红黑树的介绍2 红黑树的应用3 红黑树的时间复杂度和相关证明4 红黑树的基本操作(一) 左旋和右旋5 红黑树的基本操作(二) 添加6 红黑树的基本操作(三) 删除 作者:Sky Wang 于 2013-08-08 概述:R-B Tree,又称为“红黑树”。本文参考了《算法导论》中红黑树 阅读全文
posted @ 2022-01-27 18:29 DoubleLi 阅读(36) 评论(0) 推荐(0) 编辑

摘要:总结了一下AVPacket与AVFrame中拷贝和释放相关操作。这里我理解在AVFrame与AVPacket传递流转的过程中并不会去每次创建和拷贝音视频数据,音视频数据被存储在AVBuffer中,而AVFrame与AVPacket在流转时进行浅拷贝,只有调用其对应unref时,会减少AVBuffer 阅读全文
posted @ 2022-01-25 18:07 DoubleLi 阅读(491) 评论(0) 推荐(0) 编辑

摘要:AVFrame结构体内有很多成员变量,我们肯定不可能都分析,只关心我们需要的,从实际应用场景出发,用到avframe只要有4个场景,1,init,2,decode,3 encode 4,free 从decode说起,decode涉及的函数是avcodec_decode_video2(),这个函数代码 阅读全文
posted @ 2022-01-25 17:45 DoubleLi 阅读(608) 评论(0) 推荐(0) 编辑

摘要:我们知道平时使用AVFrame这个数据结构时,首先需要调用av_frame_alloc()对其进行初始化,初始化后的数据里data数组和buf数组都是空的,也就是说初始化后不会填充一个默认图像数据(毕竟初始化时不需要知道图片的任何信息)。 我平时使用的AVframe填充数据的方式为av_image_ 阅读全文
posted @ 2022-01-25 17:41 DoubleLi 阅读(1029) 评论(0) 推荐(1) 编辑

摘要:H264码流分两种组织方式,一种是AnnexB格式,一种是AVCC格式。 首先要了解的是H.264编码规范只是规定了如何编码,并没有规定以何种方式来排列编码后的数据。就如同AES算法只是规定如何加密一组数据,并没有强制规定如果分组。H.264规范没有规定如何组织数据,但是在附录B中提供了一种可选方案 阅读全文
posted @ 2022-01-24 17:56 DoubleLi 阅读(1737) 评论(0) 推荐(0) 编辑

摘要:H.264的两种打包/封装方法:字节流AnnexB格式 AVCC格式放用于网络发送时,要封装成RTP格式 1、AnnexB格式 用于实时播放 处于H264文档附录B(Annex-B Byte stream format)中 开始前缀(00000001或000001)+NALU数据 绝大部分编码器的默 阅读全文
posted @ 2022-01-24 17:47 DoubleLi 阅读(2751) 评论(0) 推荐(1) 编辑

摘要:FFMPEG转码器在封装成FLV或者MP4的时候,会用到h264_mp4toannexb、aac_adtstoasc这两个filter。老版本的bsf使用需要特别注意,一个不小心,就造成的内存泄漏,不容易察觉。 在阅读ffmpeg.3.2.2的代码过程中,发现ffmpeg使用bsf用了新的方法,所以 阅读全文
posted @ 2022-01-24 17:39 DoubleLi 阅读(810) 评论(0) 推荐(0) 编辑

摘要:本文需要读者对H.264流有一定的了解才可以理解2种格式差异。 首先要理解的是没有标准的H.264基本流格式。文档中的确包含了一个Annex,特别是描述了一种可能的格式Annex B格式,但是这个并不是一个必须要求的格式。标准文档中指定了视频怎样编码成独立的包,但是这些包是怎样存储和传输的却是开放的 阅读全文
posted @ 2022-01-24 17:34 DoubleLi 阅读(1239) 评论(0) 推荐(0) 编辑

摘要:引言 目前 H.264 流行的包装方式有两种,一种叫做 AnnexB,一种叫做 avcC。对于这两种格式,各家的支持程度也不太一样,例如,Android 硬解码 MediaCodec 只接受 AnnexB 格式的数据,而 Apple 的 VideoToolBox,只支持 avcC 的格式。所以这就需 阅读全文
posted @ 2022-01-24 17:22 DoubleLi 阅读(972) 评论(0) 推荐(0) 编辑

摘要:前言 在使用协程并发处理某些任务时, 其并发数量往往因为各种因素的限制不能无限的增大. 例如网络请求、数据库查询等等。从运行效率角度考虑,在相关服务可以负载的前提下(限制最大并发数),尽可能高的并发。本文就这个问题探寻一下解决方案和实现。共两种思路,一是使用带缓冲的通道实现,二是使用锁实现。 一、使 阅读全文
posted @ 2022-01-24 14:23 DoubleLi 阅读(426) 评论(0) 推荐(0) 编辑

摘要:锁 互斥锁 由标准库代码包sync中的Mutex结构体类型代表,sync.Mutex类型(确切地说,是*sync.Mutex类型)只有两个公开方法——Lock和Unlock。顾名思义,前者被用于锁定当前的互斥量,而后者则被用来对当前的互斥量进行解锁。 package main import ( "s 阅读全文
posted @ 2022-01-24 11:43 DoubleLi 阅读(169) 评论(0) 推荐(0) 编辑

摘要:一、c++11中的智能指针数组创建 在c++11中引入了智能指针这个概念,这个非常好,但是有一个问题显然被忘记了,如何动态创建智能指针数组,在c++11中没有提供直接的函数。换句话说,创建智能指针的make_shared,不支持创建数组。那在c++11中如何创建一个智能指针数组呢?只能自己封装或者变 阅读全文
posted @ 2022-01-21 17:39 DoubleLi 阅读(809) 评论(0) 推荐(0) 编辑

摘要:一,内存 静态内存,栈内存,堆内存 ①静态内存 存储局部static对象和类的static对象以及定义在任何函数之外的变量 ②栈内存 栈内存用于保存定义在函数体内非static对象。 ③堆内存 运行需要创建时,才申请的内存空间,只有当程序结束时,才回收,也就是说我们如果不需要这个对象时,我们必须手动 阅读全文
posted @ 2022-01-21 17:36 DoubleLi 阅读(1632) 评论(0) 推荐(0) 编辑

摘要://OK, pointer to int 999 std::shared_ptr<int> sp(new int(999)); template< typename T > struct array_deleter { void operator ()( T const * p) { delete[ 阅读全文
posted @ 2022-01-21 17:33 DoubleLi 阅读(293) 评论(0) 推荐(1) 编辑

摘要:引子智能指针在帮助C++程序员管理动态内存方面可谓神兵利器,但是在有些情况下我们想要对数组进行动态内存管理就会发现一个问题 咦?shared_ptr 在默认情况下是不能指向数组的,那是为什么呢。 原因是因为我们的 shared_ptr 默认的删除器是使用 Delete 对智能指针中的对象进行删除,而 阅读全文
posted @ 2022-01-21 17:26 DoubleLi 阅读(582) 评论(0) 推荐(0) 编辑

摘要:改demo程序,调用ffmpeg API,获取rtsp的音视频流,打印每一包的ts,验证是否同步。 运行环境是linux //FFDecoder.h#pragma once //#define __STDC_CONSTANT_MACROS extern "C" { #include "libavco 阅读全文
posted @ 2022-01-21 11:15 DoubleLi 阅读(564) 评论(0) 推荐(0) 编辑

摘要:本篇博客在雷神的结构体介绍基础上按自己的喜好整理的 后面根据自己工作中所需有所增改 AVStream 存储每一个视频/音频流信息的结构体 AVStream重要的变量如下 int index:标识该视频/音频流AVCodecContext *codec:指向该视频/音频流的AVCodecContext 阅读全文
posted @ 2022-01-21 11:09 DoubleLi 阅读(144) 评论(0) 推荐(0) 编辑

摘要:一、前言写一个用到指针的程序时,被拷贝、赋值、析构函数坑了一波,网上查相关博客,发现关于拷贝、赋值构造函数调用时机大多都有错误,因此决定自己总结撸一发博客。 A (A& a); //拷贝构造函数A (const A& a); //拷贝构造函数A& operator= (const A& a); // 阅读全文
posted @ 2022-01-21 09:57 DoubleLi 阅读(162) 评论(0) 推荐(0) 编辑

摘要:一、前言 写一个用到指针的程序时,被拷贝、赋值、析构函数坑了一波,网上查相关博客,发现关于拷贝、赋值构造函数调用时机大多都有错误,因此决定自己总结撸一发博客。 A (A& a); //拷贝构造函数 A (const A& a); //拷贝构造函数 A& operator= (const A& a); 阅读全文
posted @ 2022-01-20 18:07 DoubleLi 阅读(255) 评论(0) 推荐(0) 编辑

摘要:1. 数据结构定义 1.1 相关基础概念 在阅读 AVFrame 数据结构之前,需要先了解与之相关的几个基础概念(此处只考虑视频相关): pixel_format:像素格式,图像像素在内存中的排列格式。一种像素格式包含有色彩空间、采样方式、存储模式、位深等信息。 bit_depth: 位深,指每个分 阅读全文
posted @ 2022-01-20 15:37 DoubleLi 阅读(117) 评论(0) 推荐(0) 编辑

摘要:视频软件不是仅靠一个FFmpeg就能完成。FFmpeg只包括流的读写及编码解码,其他操作都得靠其他库来实现。比如播放视频需要界面库;播放声音需要播放声音的库或系统API等。所以这一块也是重中之重。下面我介绍几种常用FFmpeg与其他库交互方式。 将avframe与qt互转 AVFrame转QImag 阅读全文
posted @ 2022-01-20 15:29 DoubleLi 阅读(489) 评论(0) 推荐(0) 编辑

摘要:回顾 什么是H.265? 本文在这里就不对H.265做介绍了。感兴趣的朋友可以看下面的文章了解详情。(第一篇是我们在2019年3月发布的文章,距今已有2年,时间过得真快)《Web端H.265播放器研发解密》[1] WebAssembly的发展 看了上面那篇2年前的文章应该清楚了浏览器对于H.265支 阅读全文
posted @ 2022-01-20 15:24 DoubleLi 阅读(1300) 评论(0) 推荐(1) 编辑

摘要:1.FFMPEG下载html 进入http://ffmpeg.org/download.html,若是下载源码,则在右下方:linux 若是在linux中,直接输入git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg下载便可下载库到windows中,则 阅读全文
posted @ 2022-01-20 11:51 DoubleLi 阅读(559) 评论(0) 推荐(0) 编辑

摘要:1.封装格式MPEG-4其中 MPEG-1 和 MPEG-2 是采用相同原理为基础的预测编码、变换编码、 熵编码及运动补偿等第一代数据压缩编码技术;MPEG-4(ISO/IEC 14496)则是基于第二代压缩编码技术制定的国际标准,它以视听媒体对象为基本单元,采用基于内容的压缩编码,实现数字视音频、 阅读全文
posted @ 2022-01-20 11:50 DoubleLi 阅读(127) 评论(0) 推荐(0) 编辑

摘要:头文件位于 #include <libswresample/swresample.h> SwrContext经常使用函数以下所示 SwrContext *swr_alloc(void); //建立一个SwrContext,并设置为默认参数 struct SwrContext *swr_alloc_s 阅读全文
posted @ 2022-01-20 11:49 DoubleLi 阅读(192) 评论(0) 推荐(0) 编辑

摘要:AVCodecContext AVCodecContext 结构表示程序运行的当前 Codec 使用的上下文,着重于全部 Codec 共有的属性(而且是在程序运行时才能肯定其值)和关联其余结构的字段。 extradata 和 extradata_size 两个成员表述了相应 Codec 使用的私有数 阅读全文
posted @ 2022-01-20 11:48 DoubleLi 阅读(158) 评论(0) 推荐(0) 编辑

摘要:AVStream和AVCodecParameters 说明: AVStream 结构表示当前媒体流的上下文,着重于全部媒体流共有的属性(而且是在程序运行时才能肯定其值)和关联其余结构的字段。 其中codecpar成员里存储了当前音视频媒体使用的编解码器信息; priv_data 成员关联解析各个具体 阅读全文
posted @ 2022-01-20 11:46 DoubleLi 阅读(334) 评论(0) 推荐(0) 编辑

摘要:AVFormatContext: 用来存储视音频封装格式(flv,mp4,rmvb,avi)中包含的全部信息 不少函数都要用到它做为参数。ide AVFormatContext结构体以下所示(显示部分红员,后续深刻添加):函数 typedef struct AVFormatContext { con 阅读全文
posted @ 2022-01-20 11:43 DoubleLi 阅读(148) 评论(0) 推荐(0) 编辑

摘要:1.使用注意api AVPacket须要用户经过av_packet_allc()建立好空间后.才能供给fimpeg进行获取解码前帧数据,因为解码前帧数据大小是不固定的(好比I帧数据量最大)因此ffmpeg会在AVPacket的成员里动态进行建立空间. 而且咱们每一次使用完AVPacket后(再次调用 阅读全文
posted @ 2022-01-20 11:41 DoubleLi 阅读(435) 评论(0) 推荐(0) 编辑

摘要:在ffmpeg中,解码前的数据结构体为AVPacket(参考:3.AVPacket使用),而解码后的数据为AVFrame(视频的YUV, RGB, 音频的PCM,数据量更大)html 1.AVFrame介绍数组 AVFrame必须使用av_frame_alloc()来分配。注意,这只是分配AVFra 阅读全文
posted @ 2022-01-20 11:40 DoubleLi 阅读(151) 评论(0) 推荐(0) 编辑

摘要:最近发现了ffmpeg有个网页版的文档,分享给大家:ffmpeg文档,查询起来看是挺方便的。现在才发现,是不是有点太晚了? 之前都是直接看源码上的注释,反过来想想,那些注释写的也都听清晰易懂的哈(自我安慰)。 AVFrame AVFrame结构体描述了解码后的(原始)音频或视频数据。 AVFrame 阅读全文
posted @ 2022-01-20 11:27 DoubleLi 阅读(470) 评论(0) 推荐(0) 编辑

摘要:ffmpeg、ffplay 自己学习记录,方便以后查看。 ffmpeg关键结构体类型: 1)解协议 AVIOContext,URLProtocol,URLContext主要存储视音频使用的协议的类型以及状态。URLProtocol存储输入视音频使用的封装格式。 每种协议都对应一个URLProtoco 阅读全文
posted @ 2022-01-20 11:21 DoubleLi 阅读(126) 评论(0) 推荐(0) 编辑

摘要:一、分布式架构介绍 (一)什么是分布式系统 分布式系统指一个硬件或软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递进行通信和协调的系统。 通俗的理解,分布式系统就是一个业务拆分成多个子业务,分布在不同的服务器节点,共同构成的系统称为分布式系统,同一个分布式系统中的服务器节点在空间部署上是可 阅读全文
posted @ 2022-01-19 16:16 DoubleLi 阅读(635) 评论(0) 推荐(0) 编辑

摘要:第一章 必知必会 1.1 RAII 先分配资源,再操作,任意一步出错需要回收资源。 避免冗余代码方式: goto语句(不推荐) do...while(0)循环(现有代码中大量存在) RAII(推荐) 在构造函数中申请资源,在析构中释放。对于多线程中锁的获取与释放,可充分利用器特性,避免每次返回都需要 阅读全文
posted @ 2022-01-19 10:19 DoubleLi 阅读(269) 评论(0) 推荐(0) 编辑

摘要:MQ(消息队列)是跨进程通信的方式之一,可理解为异步rpc,上游系统对调用结果的态度往往是重要不紧急。使用消息队列有以下好处:业务解耦、流量削峰、灵活扩展。接下来介绍消息中间件Kafka。 Kafka是什么? Kafka是一个分布式的消息引擎。具有以下特征 能够发布和订阅消息流(类似于消息队列) 以 阅读全文
posted @ 2022-01-17 15:42 DoubleLi 阅读(243) 评论(0) 推荐(0) 编辑

摘要:Pinpoint 是什么 Pinpoint是一款全链路分析工具,提供了无侵入式的调用链监控、方法执行详情查看、应用状态信息监控等功能。基于GoogleDapper论文进行的实现,与另一款开源的全链路分析工具Zipkin类似,但相比Zipkin提供了无侵入式、代码维度的监控等更多的特性。 Pinpoi 阅读全文
posted @ 2022-01-14 11:30 DoubleLi 阅读(294) 评论(0) 推荐(0) 编辑

摘要:前言 “为什么拖了怎么久才发文?” 为了让大家更容易「看得见」 TCP,我搭建不少测试环境,并且数据包抓很多次,花费了不少时间,才抓到比较容易分析的数据包。 接下来丢包、乱序、超时重传、快速重传、选择性确认、流量控制等等 TCP 的特性,都能「一览无余」。 没错,我把 TCP 的"衣服扒光"了,就为 阅读全文
posted @ 2022-01-14 10:15 DoubleLi 阅读(196) 评论(0) 推荐(0) 编辑

摘要:前言 不管面试 Java 、C/C++、Python 等开发岗位, TCP 的知识点可以说是必问的了。 任 TCP 虐我千百遍,我仍待 TCP 如初恋。 遥想小林当年校招时常因 TCP 面试题被刷,真是又爱又恨…. 过去不会没关系,今天就让我们来消除这份恐惧,微笑着勇敢的面对它吧! 所以小林整理了关 阅读全文
posted @ 2022-01-13 19:47 DoubleLi 阅读(112) 评论(0) 推荐(0) 编辑

摘要:前言 前一篇「硬不硬你说了算!近 40 张图解被问千百遍的 TCP 三次握手和四次挥手面试题」得到了很多读者的认可,在此特别感谢你们的认可,大家都暖暖的。 来了,今天又来图解 TCP 了,小林可能会迟到,但不会缺席。 迟到的原因,主要是 TCP 巨复杂,它为了保证可靠性,用了巨多的机制来保证,真是个 阅读全文
posted @ 2022-01-13 19:46 DoubleLi 阅读(221) 评论(0) 推荐(0) 编辑

摘要:一、介绍 在ffmpeg中,每帧都会存在一个pts用来表示该帧图像在视频流中的位置。而在多路流(比如视频、音频)时,往往需要进行多媒体的同步,使得画面和声音同步,这时便需要使用两者的pts来做同步。那么pts是如何计算得到的呢,如何使用它做同步呢? 1.1 时间基转换 ffmpeg中时间存在一个基, 阅读全文
posted @ 2022-01-12 10:56 DoubleLi 阅读(424) 评论(0) 推荐(0) 编辑

摘要:(1)Ffmpeg中的DTS 和 PTS H264里有两种时间戳:DTS(Decoding Time Stamp)和PTS(Presentation Time Stamp)。 顾名思义,前者是解码的时间,后者是显示的时间。要仔细理解这两个概念,需要先了解FFmpeg中的packet和frame的概念 阅读全文
posted @ 2022-01-12 10:40 DoubleLi 阅读(722) 评论(0) 推荐(0) 编辑

摘要:套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术。一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术。常用的代理技术分为正向代理、反向代理和透明代理。本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家 阅读全文
posted @ 2022-01-11 17:58 DoubleLi 阅读(538) 评论(0) 推荐(0) 编辑

摘要:1、选择mobaX的terminal 2、然后我们就可以同时操作三台虚拟机,例如一起输入source /etc/profile来更新环境变量 单击退出 阅读全文
posted @ 2022-01-11 17:12 DoubleLi 阅读(882) 评论(0) 推荐(0) 编辑

摘要:linux ssh执行命令 It is common to execute commands on many nodes/hosts via SSH for managing a cluster of Linux servers. On Linux, there are many choices f 阅读全文
posted @ 2022-01-11 17:09 DoubleLi 阅读(1323) 评论(0) 推荐(0) 编辑

摘要:前言 我们上网用的IP并不一定是本机网卡的IP地址,由于公网IP地址稀少,国内绝大多数电脑上网,一般都是通过拨号或者端口映射。多个内网地址映射到一个公网地址来实现上网的。 目录 1.查看本机网卡ip 2.查看本机外网ip上网ip 3.路由跟踪查询上网-网关ip 查看本机网卡IP Windows 查看 阅读全文
posted @ 2022-01-11 15:14 DoubleLi 阅读(413) 评论(0) 推荐(0) 编辑

摘要:定义下面是两者在ffmpeg中的定义 AV_PIX_FMT_YUV420P, ///< planar YUV 4:2:0, 12bpp, (1 Cr & Cb sample per 2x2 Y samples) AV_PIX_FMT_YUVJ420P, ///< planar YUV 4:2:0, 阅读全文
posted @ 2022-01-05 17:18 DoubleLi 阅读(1513) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示