摘要:1、refcounted_frames说明 在接口 avcodec_decode_video2 的注释中,有关于 refcounted_frames 的详细说明:(1)当 AVCodecContext.refcounted_frames 被设置为1,该 AVFrame 被引用计数,返回的引用属于调用
阅读全文
随笔分类 - ffmpeg、ffplay
摘要:一句话:解码时,当AVCodecContext的refcounted_frames字段为0,则frame的分配与释放由ffmpeg内部本身控制。ide 那么使用是要注意不要破坏picture的数据指针。this 依据:spa AVCodecContext指针 /** * If non-zero, t
阅读全文
摘要:总结了一下AVPacket与AVFrame中拷贝和释放相关操作。这里我理解在AVFrame与AVPacket传递流转的过程中并不会去每次创建和拷贝音视频数据,音视频数据被存储在AVBuffer中,而AVFrame与AVPacket在流转时进行浅拷贝,只有调用其对应unref时,会减少AVBuffer
阅读全文
摘要:我一直在尝试复制一个 AVFrame,就像 ffmpeg: make a copy from a decoded frame (AVFrame) 中的回答一样.但是,我似乎无法从 av_frame_copy() 获得正返回码。这基本上是我在做什么: AVFrame *copyFrame = NULL
阅读全文
摘要:/***********ffmpeg学习笔记*******************/ AVFormatContext主要存储视音频封装格式中包含的信息;AVInputFormat存储输入视音频使用的封装格式。每种视音频封装格式都对应一个AVInputFormat 结构。每个AVStream存储一个视
阅读全文
摘要:AVFrame里面有data[4]和linesize[4]其中data是一个指向指针的指针(二级、二维指针),也就是指向视频数据缓冲区的首地址,而data[0]~data[3]是一级指针,可以用如下的图来表示: data -->xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
阅读全文
摘要:总结了一下AVPacket与AVFrame中拷贝和释放相关操作。这里我理解在AVFrame与AVPacket传递流转的过程中并不会去每次创建和拷贝音视频数据,音视频数据被存储在AVBuffer中,而AVFrame与AVPacket在流转时进行浅拷贝,只有调用其对应unref时,会减少AVBuffer
阅读全文
摘要:AVFrame结构体内有很多成员变量,我们肯定不可能都分析,只关心我们需要的,从实际应用场景出发,用到avframe只要有4个场景,1,init,2,decode,3 encode 4,free 从decode说起,decode涉及的函数是avcodec_decode_video2(),这个函数代码
阅读全文
摘要:我们知道平时使用AVFrame这个数据结构时,首先需要调用av_frame_alloc()对其进行初始化,初始化后的数据里data数组和buf数组都是空的,也就是说初始化后不会填充一个默认图像数据(毕竟初始化时不需要知道图片的任何信息)。 我平时使用的AVframe填充数据的方式为av_image_
阅读全文
摘要:H264码流分两种组织方式,一种是AnnexB格式,一种是AVCC格式。 首先要了解的是H.264编码规范只是规定了如何编码,并没有规定以何种方式来排列编码后的数据。就如同AES算法只是规定如何加密一组数据,并没有强制规定如果分组。H.264规范没有规定如何组织数据,但是在附录B中提供了一种可选方案
阅读全文
摘要:FFMPEG转码器在封装成FLV或者MP4的时候,会用到h264_mp4toannexb、aac_adtstoasc这两个filter。老版本的bsf使用需要特别注意,一个不小心,就造成的内存泄漏,不容易察觉。 在阅读ffmpeg.3.2.2的代码过程中,发现ffmpeg使用bsf用了新的方法,所以
阅读全文
摘要:改demo程序,调用ffmpeg API,获取rtsp的音视频流,打印每一包的ts,验证是否同步。 运行环境是linux //FFDecoder.h#pragma once //#define __STDC_CONSTANT_MACROS extern "C" { #include "libavco
阅读全文
摘要:本篇博客在雷神的结构体介绍基础上按自己的喜好整理的 后面根据自己工作中所需有所增改 AVStream 存储每一个视频/音频流信息的结构体 AVStream重要的变量如下 int index:标识该视频/音频流AVCodecContext *codec:指向该视频/音频流的AVCodecContext
阅读全文
摘要:1. 数据结构定义 1.1 相关基础概念 在阅读 AVFrame 数据结构之前,需要先了解与之相关的几个基础概念(此处只考虑视频相关): pixel_format:像素格式,图像像素在内存中的排列格式。一种像素格式包含有色彩空间、采样方式、存储模式、位深等信息。 bit_depth: 位深,指每个分
阅读全文
摘要:视频软件不是仅靠一个FFmpeg就能完成。FFmpeg只包括流的读写及编码解码,其他操作都得靠其他库来实现。比如播放视频需要界面库;播放声音需要播放声音的库或系统API等。所以这一块也是重中之重。下面我介绍几种常用FFmpeg与其他库交互方式。 将avframe与qt互转 AVFrame转QImag
阅读全文
摘要:回顾 什么是H.265? 本文在这里就不对H.265做介绍了。感兴趣的朋友可以看下面的文章了解详情。(第一篇是我们在2019年3月发布的文章,距今已有2年,时间过得真快)《Web端H.265播放器研发解密》[1] WebAssembly的发展 看了上面那篇2年前的文章应该清楚了浏览器对于H.265支
阅读全文
摘要:1.FFMPEG下载html 进入http://ffmpeg.org/download.html,若是下载源码,则在右下方:linux 若是在linux中,直接输入git clone https://git.ffmpeg.org/ffmpeg.git ffmpeg下载便可下载库到windows中,则
阅读全文
摘要:1.封装格式MPEG-4其中 MPEG-1 和 MPEG-2 是采用相同原理为基础的预测编码、变换编码、 熵编码及运动补偿等第一代数据压缩编码技术;MPEG-4(ISO/IEC 14496)则是基于第二代压缩编码技术制定的国际标准,它以视听媒体对象为基本单元,采用基于内容的压缩编码,实现数字视音频、
阅读全文
摘要:头文件位于 #include <libswresample/swresample.h> SwrContext经常使用函数以下所示 SwrContext *swr_alloc(void); //建立一个SwrContext,并设置为默认参数 struct SwrContext *swr_alloc_s
阅读全文
摘要:AVCodecContext AVCodecContext 结构表示程序运行的当前 Codec 使用的上下文,着重于全部 Codec 共有的属性(而且是在程序运行时才能肯定其值)和关联其余结构的字段。 extradata 和 extradata_size 两个成员表述了相应 Codec 使用的私有数
阅读全文