ffmpeg
一世豁然
Windows/Liunx 音频视频、音视频算法、流媒体开发
展开
-
FFmpeg一些感想
用了ffmpeg这么多年,感觉其就是一个开源库的集合体。ffmpeg包含的八个库:1、libswscale(视频像素数据格式转换)2、libswresample(音频采样数据格式转换)3、libpostproc(后加工)4、libavutil(工具库)5、libavformat(封装格式处理)6、libavfilter(滤波特效处理)7、libavdevice(各种设备...原创 2019-05-14 12:45:26 · 1616 阅读 · 1 评论 -
FFMPEG学习【libavutil】:数据结构(二)
一、AVFrameAVFrame是引用计数的原始多媒体数据的抽象。一)、模块描述其他帧属性的标志。#define AV_FRAME_FLAG_CORRUPT (1 帧数据可能被破坏,例如,由于解码错误。#define AV_FRAME_FLAG_DISCARD (翻译 2017-07-21 10:06:56 · 1377 阅读 · 0 评论 -
FFMPEG学习【libswscale】
颜色转换和缩放库。返回LIBSWSCALE_VERSION_INT常量。一、数据结构struct SwsVector{double * coeff;// 指向系数列表的指针int length; //向量中的系数数量}struct SwsFilter{SwsV翻译 2017-07-30 11:17:03 · 1498 阅读 · 0 评论 -
FFMPEG学习【libpostproc】
视频后处理库。一、宏#define PP_QUALITY_MAX 6 #define PP_CPU_CAPS_MMX 0x80000000 #define PP_CPU_CAPS_MMX2 0x20000000 #define翻译 2017-07-30 10:32:38 · 6287 阅读 · 0 评论 -
FFMPEG学习【libswresample】
一、函数const AVClass * swr_get_class (void)获取 SwrContext的AVClass。二、选项常数这些常量用于lswr的AVOptions接口。enum SwrDitherType { SWR_DITHER_NONE = 0, SWR_DI翻译 2017-07-29 16:42:59 · 7790 阅读 · 1 评论 -
FFMPEG学习【libavutil】:String Manipulation
一、宏#define AV_ESCAPE_FLAG_WHITESPACE (1 考虑空间特别,甚至在字符串的中间逃避他们。#define AV_ESCAPE_FLAG_STRICT (1 仅转义指定的特殊字符。#define AV_UTF8翻译 2017-07-17 09:13:46 · 1358 阅读 · 2 评论 -
FFMPEG学习【libavutil】:Crypto and Hashing(五)
一、Adler-32一)、函数unsigned long av_adler32_update (unsigned long adler, const uint8_t *buf, unsigned int len) av_pure计算缓冲区的Adler32校验和。参数:adler:初始校验和值 buf:指向输入缓冲区的指针翻译 2017-07-07 08:17:23 · 714 阅读 · 0 评论 -
FFMPEG学习【libavformat】:核心函数
查询libavformat功能,分配核心结构等函数一、函数unsigned avformat_version (void)返回LIBAVFORMAT_VERSION_INT常量。const char * avformat_configuration (void)返回lib翻译 2017-06-15 09:28:48 · 1531 阅读 · 0 评论 -
FFMPEG学习【libavformat】:Public Metadata API
dfgsrg翻译 2017-06-15 08:59:07 · 1107 阅读 · 0 评论 -
FFMPEG学习【libavutil】:Mathematics
使用时间戳和时基的数学实用程序。一、模块AVRational有理数计算二、宏#define ff_ctz ff_ctz_c #define ff_ctzll ff_ctzll_c #define ff_clz ff_clz_c翻译 2017-07-15 11:20:31 · 602 阅读 · 0 评论 -
FFMPEG学习【libavformat】:I/O Read/Write
一、头文件avio.h二、目录列表目录列表API使得可以在远程服务器上列出文件。一些可能的用例:1、一个“打开文件”对话框可以从远程位置选择文件,2、递归媒体查找器,为播放器提供播放所有文件从给定目录的能力。一)、打开一个目录首先,需要通过调用与URL一起提供的avio_open_dir()翻译 2017-06-14 14:42:58 · 676 阅读 · 0 评论 -
FFMPEG学习【libavformat】:Muxing
MUXER以AVPackets的形式获取编码数据,并以指定的容器格式将其写入文件或其他输出字节。一、数据结构struct AVOutputFormat{}翻译 2017-06-14 14:34:57 · 1277 阅读 · 0 评论 -
FFMPEG学习【libavformat】:Demuxing
Demuxers读取一个媒体文件并将其分割成数据块(数据包)。分组包含属于单个基本流的一个或多个编码帧。 在lavf API中,此过程由用于打开文件的avformat_open_input()函数表示,av_read_frame()用于读取单个数据包,最后是avformat_close_input(),该文件执行清理。一、数据结构st翻译 2017-06-14 09:21:34 · 2833 阅读 · 0 评论 -
FFMPEG学习【libavutil】:Memory Management(一)
一、宏对齐帮助宏用于声明对齐变量。一)、宏#define DECLARE_ALIGNED(n, t, v) t __attribute__ ((aligned (n))) v声明在内存中对齐的变量。DECLARE_ALIGNED(16, uint16_t, aligned_int) = 42;DECLARE_AL翻译 2017-07-18 10:39:41 · 1034 阅读 · 0 评论 -
FFMPEG学习【libavutil】:Memory Management(二)
负责分配,释放和复制内存的功能。一、函数void * av_malloc (size_t size) av_malloc_attrib 1(1)分配一个适合所有存储器访问的定向存储块(包括CPU上可用的向量)。void * av_mallocz (size_t size) av_mall翻译 2017-07-18 14:10:56 · 878 阅读 · 0 评论 -
FFMPEG学习【libavutil】:数据结构(三)
AVOptions提供了一个通用的系统来声明任意结构(“对象”)上的选项。一、模块一)、Evaluating option strings这组函数可用于评估选项字符串并从中获取数字。它们与av_opt_set()执行相同的操作,除了将结果写入到调用者提供的指针中。参数:obj:一个结构体,其第一个元素是指向AVClass的指针。 o:要评估字符串的选翻译 2017-07-23 10:25:39 · 894 阅读 · 0 评论 -
36款顶级的开源音频/视频应用程序
本博客转载于:http://os.51cto.com/art/201604/509584.htm我们所处的这个世界无处不充斥着媒体,拥有一大批顶级的音频/视频工具确实派得上用场。修剪文件、编辑视频、最大化音频――我们需要满足社交媒体流的传播需求,而公司总是需要音频/视频内容,以便与用户进行最有效的沟通。本文介绍的这些音频/视频应用程序有望大大节省用户的成本。下列开源应用程序可取代价格昂贵的商用音频...转载 2018-02-28 19:57:51 · 2029 阅读 · 0 评论 -
FFMPEG学习【组件文档——音频重采样器】
一、描述FFmpeg重采样器为libswresample库音频重采样实用程序提供了一个高级接口。 特别地,它允许执行音频重采样,音频通道布局再匹配,以及转换音频格式和打包布局。翻译 2017-08-30 14:27:45 · 1669 阅读 · 0 评论 -
FFMPEG学习【组件文档——视频缩放和像素格式转换器】
一、描述FFmpeg rescaler为libswscale库图像转换实用程序提供了一个高级界面。 特别地,它允许执行图像重新缩放和像素格式转换。二、缩放选项视频缩放器支持以下命名选项。可以通过在FFmpeg工具中指定-option值来设置选项。 对于编程使用,可以在SwsContext选项或libavutil / opt.h API中显式设置它们。翻译 2017-08-30 11:07:57 · 1188 阅读 · 0 评论 -
FFMPEG学习【组件文档——实用程序(Utilities)】
一、描述本文档描述了libavutil库提供的一些通用功能和实用程序。二、语法本节介绍了FFmpeg库和工具所使用的语法和格式。一)、引用和转义FFmpeg采用以下引用和转义机制,除非明确指定。 应用以下规则:1)、'''和'\'是特殊字符(分别用于引用和转义)。 除了它们之外,还可能有其他特殊字符取决于使用转义和引用的具体语法。2)翻译 2017-08-30 10:53:40 · 994 阅读 · 0 评论 -
FFMPEG学习【libavutil】:音频相关(三)
一、Audio sample formats音频采样格式列举和相关便利功能。一)、枚举音频采样格式1、由样本格式描述的数据始终是本机端序列。 样本值可以由本机C类型表示,因此即使是常见的原始音频数据格式,也缺少签名的24位采样格式。2、浮点格式基于满量程范围[-1.0,1.0]。 超出该范围的任何值都超出了完整的音量。3、在av_samples_fi翻译 2017-07-29 10:40:12 · 699 阅读 · 0 评论 -
FFMPEG学习【libavutil】:音频相关(二)
一、Audio channel layouts一)、宏#define AV_CH_LAYOUT_MONO (AV_CH_FRONT_CENTER)#define AV_CH_LAYOUT_STEREO (AV_CH_FRONT_LEFT|AV_CH_FRONT_RIGHT)翻译 2017-07-29 10:05:46 · 1331 阅读 · 0 评论 -
FFMPEG学习【ffplay工具】
一、概要ffplay [options] [input_url]二、描述FFplay是使用FFmpeg库和SDL库的非常简单便携的媒体播放器。 它主要用作各种FFmpeg API的测试平台。三、选项所有数值选项(如果没有另外规定)接受一个表示数字的字符串作为输入,后面可以跟着SI单位前缀之一,例如:'K','M'或'G'。翻译 2017-08-05 20:29:13 · 1477 阅读 · 0 评论 -
FFMPEG学习【ffmpeg工具】
一、概要ffmpeg [global_options] {[input_file_options] -i input_url} ... {[output_file_options] output_url} ...二、描述ffmpeg是一个非常快的视频和音频转换器,也可以从现场音频/视频源获取。 它还可以在任意采样率之间进行转换,并使用高质量的多相滤波器即时调整视翻译 2017-08-05 14:00:46 · 9456 阅读 · 0 评论 -
FFMPEG学习【libavutil】:音频相关(一)
一、音频FIFO缓冲区一)、函数void av_audio_fifo_free (AVAudioFifo *af)释放AVAudioFifo。AVAudioFifo * av_audio_fifo_alloc (enum AVSampleFormat sample_fmt, int channels翻译 2017-07-25 10:26:38 · 2395 阅读 · 0 评论 -
FFMPEG学习【libavutil】:视频相关
一、显示变换矩阵函数显示变换矩阵指定应适用于视频帧以进行正确预处理的仿射变换。它与存储在ISO / IEC 14496-12容器格式中的矩阵兼容。数据是一个3x3矩阵,表示为9元素数组: | a b u |(a, b, u, c, d, v, x, y, w) -> | c d v |翻译 2017-07-24 09:42:44 · 884 阅读 · 0 评论 -
FFMPEG学习【libavutil】:数据结构(一)
一、AvBufferAVBuffer是用于引用计数数据缓冲区的API。这个API有两个核心对象 - AVBuffer和AVBufferRef。 AVBuffer表示数据缓冲区本身; 它是不透明的,并不意味着直接由调用者访问,而只能通过AVBufferRef。 然而,呼叫者可以例如 比较两个AVBuffer指针,以检查两个不同的引用是否描述相同的数据缓冲区。 AVBufferRef表示对翻译 2017-07-20 07:58:39 · 1068 阅读 · 0 评论 -
FFMPEG学习【libavutil】:数据结构(四)
一、AVDictionary简单键:值存储。字典用于存储键:值对。 要创建一个AVDictionary,只需将一个NULL指针的地址传递给av_dict_set()。 NULL可以用作空字典,无论何处需要指向AVDictionary的指针。 使用av_dict_get()来检索一个条目或迭代所有条目,最后使用av_dict_free()来释放字典及其所有内容。AVDiction翻译 2017-07-23 17:11:48 · 1037 阅读 · 0 评论 -
FFMPEG学习【libavutil】:Crypto and Hashing(四)
一、TWOFISH一)、函数struct AVTWOFISH * av_twofish_alloc (void)分配AVTWOFISH上下文要释放结构体:av_free(ptr)int av_twofish_init (struct AVTWOFISH *ctx, const uint8_t *ke翻译 2017-07-05 09:45:54 · 483 阅读 · 0 评论 -
FFMPEG学习【libavutil】:Crypto and Hashing(三)
一、LZO一)、宏#define AV_LZO_INPUT_PADDING 8#define AV_LZO_OUTPUT_PADDING 12二)、函数int av_lzo1x_decode (void *out, int *outlen,翻译 2017-07-04 10:50:43 · 759 阅读 · 0 评论 -
FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:VDA
一、文件vda.h公共libavcodec VDA头文件。二、数据结构struct vda_context{VDADecoder decoder;VDA解码器对象。编码:未使用。解码:通过libavcodec设置/取消。CVPixelBufferRef cv_buffer;包含当前图像数据的Core Video像素缓冲翻译 2017-05-09 20:45:09 · 2668 阅读 · 0 评论 -
FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:VA API Decoding
一、文件vaapi.h公共libavcodec VA API头。二、翻译 2017-05-09 17:07:23 · 1125 阅读 · 0 评论 -
FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:DXVA2
一、文件dxva2.h公共libavcodec DXVA2有文件。二、数据结构struct dxva_context{ IDirectXVideoDecoder * decoder; //DXVA2解码器对象。 const DXVA2_ConfigPictureDecode * cfg; //DXVA2配置用来创建解码器。 unsigned翻译 2017-05-08 15:12:14 · 1937 阅读 · 0 评论 -
FFMPEG学习【libavcodec】:编解码器:硬件加速器桥:Direct3D11
一、数据结构struct AVD3D11VAContext{ ID3D11VideoDecoder * decoder; //D3D11解码器对象。 ID3D11VideoContext * video_context; //D3D11视频上下文 D3D11_VIDEO_DECODER_CONFIG * cfg //D3D11配置用于创建解码器。 unsi翻译 2017-05-08 15:01:22 · 5853 阅读 · 0 评论 -
FFMPEG学习【libavcodec】:发送/接收编码和解码API概述
avcodec_send_packet()/ avcodec_receive_frame()/ avcodec_send_frame()/ avcodec_receive_packet()函数提供了一个输入和输出的编码/解码API。API与编码/解码和音频/视频非常相似,工作原理如下:1、像往常一样设置和打开AVCodecContext。2、发送有效输入: 1)翻译 2017-05-15 14:23:05 · 14417 阅读 · 0 评论 -
FFMPEG学习【libavcodec】:编码
一、数据结构struct RcOverride{int start_frame;int end_frame;int qscale;float quality_factor;}二、宏#define AV_INPUT_BUFFER_MIN_SIZE 16384最小编码缓冲区大小:用于在头文件写入期间避免一些检翻译 2017-05-05 21:49:56 · 1887 阅读 · 0 评论 -
FFMPEG学习【libavcodec】:解码
一、模块Frame Parsing二、宏#define AV_INPUT_BUFFER_PADDING_SIZE 32注释:在输入比特流结尾的要求附加分配字节的数量上进行解码。这主要是因为一些优化的比特流读取器一次读取32位或64位,并且可以读取结束字节之外。注意:如果附加字节的前23位不为0,则损坏的MPEG比特流可能会导致重读和segfau翻译 2017-05-02 14:42:08 · 3144 阅读 · 0 评论 -
FFMPEG学习【libavcodec】:解码:帧解析
一、数据结构struct AVCodecParserContextstruct AVCodecParser二、枚举enum AVPictureStructure { AV_PICTURE_STRUCTURE_UNKNOWN, AV_PICTURE_STRUCTURE_TOP_FIELD, AV_PICTURE_STRUCTURE_BOTTOM_FIE翻译 2017-05-02 16:19:54 · 1273 阅读 · 0 评论 -
FFmpeg 3.0 计算视频时长
本博客转载于:http://www.jianshu.com/p/66b13b2b29791、问题:AVFormatContext和AVStream都有duration: int64_t字段,调用av_dump_format()打印的多媒体文件时长是怎么算出来的呢?2、av_dump_format输出示例 Metadata: major_brand转载 2017-02-16 09:11:49 · 3720 阅读 · 0 评论 -
I,P,B帧和PTS,DTS的关系
本博客转载于:http://www.cnblogs.com/yinxiangpei/p/3890462.html基本概念:I frame :帧内编码帧 又称intra picture,I 帧通常是每个 GOP(MPEG 所使用的一种视频压缩技术)的第一个帧,经过适度地压缩,做为随机访问的参考点,可以当成图象。I帧可以看成是一个图像经过压缩后的产物。P frame转载 2017-02-16 09:05:27 · 476 阅读 · 0 评论