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

07 2021 档案

摘要:内容简介:最近在做与OpenCV有关的项目,需要参考OpenCV源码的实现。起初在VS中手动查看OpenCV源码,发现简单的函数能够很快整理出该函数的层次调用关系,但是遇到一些复杂的函数时,一层一层的往下查看一会儿脑袋就大了。并且,在查看源码的过程中,发现很多底层的函数都会被重复调用,因此把函数的层 阅读全文
posted @ 2021-07-30 15:25 DoubleLi 阅读(669) 评论(0) 推荐(0) 编辑

摘要:在AVPacket中有两个比较相近的函数av_packet_free和av_free_packet,在看api的时候有些迷茫,不知道如何使用,之后特意看了一下源码,在此记录一下 不多说,直接上源码 //av_free_packet其实就是清空pkt中data以及buf的内容,并没有把pkt的指针清空 阅读全文
posted @ 2021-07-29 14:39 DoubleLi 阅读(1912) 评论(0) 推荐(0) 编辑

摘要:函数功能: 打开一个文件 函数原型:FILE * fopen(const char * path,const char * mode); 相关函数:open,fclose,fopen_s,_wfopen 所需库: <stdio.h> 返回值: 文件顺利打开后,指向该流的文件指针就会被返回。若果文件打 阅读全文
posted @ 2021-07-29 11:07 DoubleLi 阅读(899) 评论(0) 推荐(0) 编辑

摘要:from:https://zhuanlan.zhihu.com/p/23606669 本文是我的《FFMPEG Tips》系列的第三篇文章,上篇文章 介绍了如何提取整个音视频码流的媒体信息,包括:封装格式、编码格式、视频的分辨率、帧率、码率、音频的采样率、位宽、通道数等等,而本文则关注得更细一点,看 阅读全文
posted @ 2021-07-28 16:39 DoubleLi 阅读(1022) 评论(0) 推荐(0) 编辑

摘要:ffmpeg推流降低延迟的优化一.针对编码器上下文的参数配置AVCodecContext *vc = NULL; // AV_CODEC_FLAG_GLOBAL_HEADER -- 将全局头文件放在引渡文件中,而不是每个关键帧中。 //AV_CODEC_FLAG_LOW_DELAY --较低延迟 v 阅读全文
posted @ 2021-07-28 16:33 DoubleLi 阅读(3631) 评论(0) 推荐(0) 编辑

摘要:最新使用 FFmpeg 进行 H264 的编码时,发现视频编码有延迟,不是实时编码,进过一番研究发现,只要在调用 avcodec_open2 函数 打开编码器时,设置 AVDictionary 参数即可,关键代码如下: avcodec_open2函数: int avcodec_open2(AVCod 阅读全文
posted @ 2021-07-28 16:31 DoubleLi 阅读(1421) 评论(0) 推荐(1) 编辑

摘要:FFMPEG关于推流端降低延迟调节(一) 本文所写的是调节推流端降低延迟能调节的一些方案,有不足请补充,其他端方向类似,例如降低采集缓存,减少编码时间等等,如有需要请参考。本文以windows推流端为例做解释。 1:减少采集缓存 av_dict_set(&p_device_options,"rtbu 阅读全文
posted @ 2021-07-28 16:23 DoubleLi 阅读(2184) 评论(0) 推荐(0) 编辑

摘要:from:http://lib.csdn.net/article/57/40941?knId=1586 近日在做一个分布式转码服务器,解码器是采用开源的ffmpeg,在开发的过程中遇到一个问题:编码延迟多大5、6秒钟,也就是最初编码的几十帧并不能马上取出,而我们的要求是实时编码!虽然我对视频编码方面 阅读全文
posted @ 2021-07-28 16:20 DoubleLi 阅读(644) 评论(0) 推荐(0) 编辑

摘要:av_dict_set(&optionsDict, "rtsp_transport", "udp", 0); av_dict_set(&optionsDict, "stimeout", "200000", 0); av_dict_set(&optionsDict, "fflags", "nobuff 阅读全文
posted @ 2021-07-28 15:57 DoubleLi 阅读(1422) 评论(0) 推荐(0) 编辑

摘要:不知大家有没有发现FFmpeg长时间解码会出现延时增大(特别是在丢包的情况下)?如果在播放本地文件,这个问题是没有影响的。但是如果播放的是实时流,则图像的延时就越来越大。本人是做安防监控的,很多招标项目对解码器的图像延时都有要求:不能高于250毫秒。所以,对实时性要求高的场合,要尽量降低图像的延时。 阅读全文
posted @ 2021-07-28 15:41 DoubleLi 阅读(3528) 评论(0) 推荐(0) 编辑

摘要:最左边的线不一定是当前分支,每条线的颜色和后面标签颜色一致,从标签名字和当前分支名比对看哪条线是当前分支。 最左边线好像是最近一次提交所在的分支即哪个分支最后一次提交时间最近,就在最左边。 sourceTree图解116.png 小白点圆圈表示当前分支的最后一次提交。同时后面的提交注释是粗体显示。 阅读全文
posted @ 2021-07-26 11:55 DoubleLi 阅读(912) 评论(0) 推荐(0) 编辑

摘要:这是基于FFMPEG的视频编码器,可以将yuv视频元数据编码成h264压缩编码数据。主要是记录一下自己学习FFMPEG时总结的视频编码流程。ffmpeg版本:ffmpeg-4.2.2libx264版本:x264-snapshot-20191023-2245-stable 流程图 简单介绍下各个函数的 阅读全文
posted @ 2021-07-23 11:56 DoubleLi 阅读(378) 评论(0) 推荐(0) 编辑

摘要:VFrame可以被解釋為一個AVPicture來填充 data 和 linesize 欄位。 填充這些欄位最簡單的方法是使用 avpicture_fill 函數。 要填充AVFrame和V 緩衝區的Y,它取決於輸入數據和想要使用框架( 要寫入 AVFrame ) 。 或者保留副本) 。 如果緩衝區足 阅读全文
posted @ 2021-07-23 11:49 DoubleLi 阅读(218) 评论(0) 推荐(0) 编辑

摘要:AVPacket 结构体解释AVBUffer/ref *buf : AVPacket采用的是引用计数,每次 AVPacket的时候把引用加一。 int64_t pts 显示时间, 计算方法 pts * num/den) int64_t dts 解码时间 因为b帧 有前后依赖帧率,先解码可能后显示,所 阅读全文
posted @ 2021-07-22 10:43 DoubleLi 阅读(407) 评论(0) 推荐(0) 编辑

摘要:FFMPEG官网给出了FFMPEG 滤镜使用的实例,它是将视频中的像素点替换成字符,然后从终端输出。我在该实例的基础上稍微的做了修改,使它能够保存滤镜处理过后的文件。在上代码之前先明白几个概念: Filter:代表单个filter FilterPad:代表一个filter的输入或输出端口,每个fil 阅读全文
posted @ 2021-07-21 18:30 DoubleLi 阅读(803) 评论(0) 推荐(0) 编辑

摘要:一、FFmpeg filter简介 FFmpeg中的libavfilter提供了一整套的基于filter的机制。filter本身是一个插件的形式,可以快速的组装需要的效果。比如下面的filter,可以实现视频的水平镜像效果。ffplay.exe sample.rmvb -vf hflip FFmpe 阅读全文
posted @ 2021-07-21 18:29 DoubleLi 阅读(629) 评论(0) 推荐(0) 编辑

摘要:1、概述此例子用ffmpeg的filter实现视频scale。2、代码 /** * 最简单的基于FFmpeg的AVFilter例子(scale) * * 缪国凯(MK) * 821486004@qq.com * * http://blog.csdn.net/dancing_night * * 本程序 阅读全文
posted @ 2021-07-21 18:28 DoubleLi 阅读(492) 评论(0) 推荐(0) 编辑

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

摘要:本节主要讲AVPacket中的数据解码到AVFrame中的过程。 前置知识点 1.FFmpeg数据结构简介 AVFormatContext:封装格式上下文结构体,也是统领全局的结构体,保存了视频文件封装格式相关信息 AVInputFormat:每种封装格式对应一个该结构体 AVStream:视频文件 阅读全文
posted @ 2021-07-21 18:01 DoubleLi 阅读(1026) 评论(0) 推荐(0) 编辑

摘要:目录 一、AVFrame结构体的定义 二、AVFrame相关的函数 2.1 av_frame_alloc() 2.2 avpicture_fill() 2.3 av_frame_free() 2.4 av_frame_ref() 2.5 av_frame_clone() AVFrame中存储的是经过 阅读全文
posted @ 2021-07-21 18:00 DoubleLi 阅读(1325) 评论(0) 推荐(0) 编辑

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

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

摘要:ffmpeg4.2.2-avpicture_fill()的使用心得1. avpicture_fill()的声明/** * @deprecated use av_image_fill_arrays() instead. */attribute_deprecatedint avpicture_fill( 阅读全文
posted @ 2021-07-21 17:22 DoubleLi 阅读(1069) 评论(0) 推荐(1) 编辑

摘要:1. 视频播放器基本原理 下图引用自“雷霄骅,视音频编解码技术零基础学习方法”,因原图太小,看不太清楚,故重新制作了一张图片。 如下内容引用自“雷霄骅,视音频编解码技术零基础学习方法”: 解协议 将流媒体协议的数据,解析为标准的相应的封装格式数据。视音频在网络上传播的时候,常常采用各种流媒体协议,例 阅读全文
posted @ 2021-07-21 17:14 DoubleLi 阅读(683) 评论(0) 推荐(0) 编辑

摘要:ffmpeg中已经实现了使用dxva加速解码部分代码。但是要整合在自己的播放器中dxva相关管理代码没有实现。 以下笔者带大家去实现一个基于dxva的加速解码器。 由于文笔不好,主要以代码来说话,望见谅。 一:ffmpeg中实现的dxva解码相关代码介绍 ffmpeg已经实现了h264 h263 m 阅读全文
posted @ 2021-07-21 17:11 DoubleLi 阅读(586) 评论(0) 推荐(0) 编辑

摘要:索引地址:系列教程索引地址 上一篇:FFmpeg4入门系列教程5:解码视频流过程 上一篇介绍了解码的基本流程,获取了视频帧数,但是没有视频每一帧数据的解码操作。 我们从视频中取出每一帧进行操作,我们已经分配了AVFrame内存,当我们转换它颜色空间时仍然需要一个位置来放置原始数据。我们使用av_im 阅读全文
posted @ 2021-07-21 17:00 DoubleLi 阅读(478) 评论(0) 推荐(0) 编辑

摘要:0 引言 FFmpeg使用很久了,一直没有认真看过FFmpeg内部源码所提供的各种机制和功能。本文的主要目标是能够初步总结FFmpeg的avutil中所提供的功能。从FFmpeg官网的文档-libavutil来看,avutil主要有一下几种功能(顺序做了重排): 数学函数 字符串操作 内存管理相关 阅读全文
posted @ 2021-07-21 16:35 DoubleLi 阅读(390) 评论(0) 推荐(0) 编辑

摘要:鼎鼎大名的FFmpeg不用多作介绍,基本是音视频技术必备的基础库之一,提供了强大的音视频处理方案。本文记录FFmpeg的一些基本知识,基于4.0.2,有时间会慢慢增改。(PS:可能有错误) FFmpeg最常用的结构体 解协议(http,rtsp,rtmp,mms) 协议(文件)操作的顶层结构是AVI 阅读全文
posted @ 2021-07-21 15:44 DoubleLi 阅读(452) 评论(0) 推荐(0) 编辑

摘要:更新记录(2014.7.24): 1.为了使本文更通俗易懂,更新了部分内容,将例子改为从内存中打开。 2.增加了将数据输出到内存的方法。 从内存中读取数据 ffmpeg一般情况下支持打开一个本地文件,例如“C:\test.avi” 或者是一个流媒体协议的URL,例如“rtmp://222.31.64 阅读全文
posted @ 2021-07-21 14:31 DoubleLi 阅读(1108) 评论(0) 推荐(1) 编辑

摘要:文章目录I . FFMPEG AVFrame 图像数据帧处理 前置操作II . FFMPEG 解码 AVPacket 数据到 AVFrame 流程III. FFMPEG 解码前后的图像格式IV . FFMPEG 获取 SwsContextV . FFMPEG 初始化图像数据存储内存VI . FFMP 阅读全文
posted @ 2021-07-21 11:45 DoubleLi 阅读(1615) 评论(0) 推荐(0) 编辑

摘要:前言 AVPacket是ffmpeg常用的结构体,位于libavcodec/avcodec.h中,它用于表示一帧压缩的视频或者多帧压缩的音频,使用了引用计数机制来管理内存 AVPacket结构体分析 常用函数 AVPacket使用方式 AVPacket结构体分析 如下为源码中关于AVPacket的描 阅读全文
posted @ 2021-07-21 11:24 DoubleLi 阅读(1976) 评论(0) 推荐(0) 编辑

摘要:前言 ffmpeg实现了软件解码,以及导入libx264等外部库实现软编码。同时它还对各个平台的硬编解码也进行了封装,提供了统一的调用接口。本文目的就是通过实现硬遍解码h264了解这些流程和接口 视频硬解码相关流程 image.png 视频硬编码相关流程 image.png 视频硬编解码相关函数及结 阅读全文
posted @ 2021-07-21 11:14 DoubleLi 阅读(2889) 评论(0) 推荐(0) 编辑

摘要:前言 1、视频缩放是指将视频放大或者缩小,放大或者缩小对应着不同的缩放算法,每一种算法性能和效果也不一致。视频缩小也是很常见的需求,各个点播平台基本上都会提供不同分辨率(超清1080P,高清720P,标清360P)的视频资源以适应用户不同网络条件的需求。2、视频像素格式转换;安卓平台碎片化的特性,安 阅读全文
posted @ 2021-07-21 11:09 DoubleLi 阅读(1092) 评论(0) 推荐(0) 编辑

摘要:前言 AVFrame 位于libavutil/frame.h中,AVpacket一样,是FFmpeg中很重要的结构体。它用于表示未压缩的音视频数据(编码前或者解码后),使用了引用计数机制来管理内存 源码 首先是源码部分(基于ffmpeg版本为4.2),已去掉注释部分 typedef struct A 阅读全文
posted @ 2021-07-21 10:53 DoubleLi 阅读(1104) 评论(0) 推荐(0) 编辑

摘要:1.第一种 m_pFrameVideoOut = av_frame_alloc(); m_pFrameVideoOut->format = AV_PIX_FMT_BGR24; m_pFrameVideoOut->width = m_VideoCodecCtx->width; m_pFrameVide 阅读全文
posted @ 2021-07-20 10:49 DoubleLi 阅读(405) 评论(0) 推荐(1) 编辑

摘要:从上图中可以看出 AVPacket 和 AVFrame 是存储音视频解码前后数据的重要结构体,我们使用 av_read_frame 将解封装后的数据存入 AVPacket,将 avcodec_receive_frame() 函数将解码后的数据存入AVFrame,这部分必定会涉及到内存的分配和释放问题 阅读全文
posted @ 2021-07-19 16:46 DoubleLi 阅读(225) 评论(0) 推荐(1) 编辑

摘要:[总结]FFMPEG 视音频编解码零基础学习方法 架构图 FFMPEG+SDL 的视频播放器 最简单的基于 FFMPEG+SDL 的视频播放器 ver2 (采用 SDL2.0) FFmpeg 解码一个视频流程: FFmpeg解码一个视频流程 SDL2.0 显示 YUV 的流程: SDL2.0显示YU 阅读全文
posted @ 2021-07-13 16:28 DoubleLi 阅读(840) 评论(0) 推荐(0) 编辑

摘要:一、FFmpeg filter简介 FFmpeg中的libavfilter提供了一整套的基于filter的机制。filter本身是一个插件的形式,可以快速的组装需要的效果。比如下面的filter,可以实现视频的水平镜像效果。ffplay.exe sample.rmvb -vf hflip FFmpe 阅读全文
posted @ 2021-07-12 17:52 DoubleLi 阅读(364) 评论(0) 推荐(0) 编辑

摘要:参考连接:https://blog.csdn.net/zy_workjob/article/details/104400805?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7E 阅读全文
posted @ 2021-07-02 16:34 DoubleLi 阅读(239) 评论(0) 推荐(0) 编辑

摘要:在之前的内容中,有学习总结基本操作、修改撤回、分支 branch、贮藏 stash 、标签 tag 以及部分远程操作。 涉及了 Git 的几个工作区,工作目录、暂存区、本地仓库 以及 远程仓库他们之间的用 Git 操作的关系可总结如下图: 从本期开始进入Git 的进一步学习 本想先介绍下远程仓库的, 阅读全文
posted @ 2021-07-02 16:17 DoubleLi 阅读(1234) 评论(1) 推荐(1) 编辑

摘要:最近在一个学习小组里学习AI的课程,我们所有的学习资料和homework都放在gitlab上。今天一个小队友从gitlab上load仓库的时候问起了这个问题,正好在此总结记录一下,仅供参考。 1.git clone git clone顾名思义就是将其他仓库克隆到本地,包括被clone仓库的版本变化。 阅读全文
posted @ 2021-07-02 16:00 DoubleLi 阅读(235) 评论(0) 推荐(0) 编辑

摘要:有时会遇到一种很特殊的调试需求,对当前正在运行的其它进程进行调试(正是我今天遇到的情形)。这种情况有可能发生在那些无法直接在调试器中运行的进程身上,例如有的进程 只能在系统启动时运行。另外如果需要对进程产生的子进程进行调试的话,也只能采用这种方式。GDB可以对正在执行的程序进行调度,它允许开发人员中 阅读全文
posted @ 2021-07-02 10:20 DoubleLi 阅读(1425) 评论(0) 推荐(0) 编辑

摘要:用GDB调试程序(完全手册) http://blog.chinaunix.net/u2/87718/showart_1726531.html 查看源程序一、显示源代码 GDB 可以打印出所调试程序的源代码,当然,在程序编译时一定要加上-g的参数,把源程序信息编译到执行文件中。不然就看不到源程序了。当 阅读全文
posted @ 2021-07-02 10:17 DoubleLi 阅读(772) 评论(0) 推荐(0) 编辑

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