ffmpeg探索系列一

ffmpeg整体框架


一,FFmpeg介绍

FFmpeg是一款音视频编解码工具,同时也是一组音视频编码开发套件,作为编码开发套件,它为开发者提供了丰富的音视频处理的调用接口。
如果我们研究学习音视频,FFmpeg是最好的切入项目,它基本上包含了音视频大部分知识。


二、FFmpeg整体结构

我们编译FFmpeg会得3个可执行文件,分别是ffplay,ffmpeg,ffprob。 ffplay主要用于播放音视频数据。ffmpeg:用于处理音视频数据。ffprob:用于分析音视频数据。而这3个可执行文件,主要是有7个部分功能组成。

在这里插入图片描述
AVFormat:文件格式和协议库,主要是对Protocol层、Demuxer、Muxer层进行了封装,我们可以使用它解析flv,MP4,hls等格式音视频数据。
AVCodec:编解码库,封装了Codec层相关功能,FFmpeg默认是不会添加像libx264、FDK-AAC等库的,正常的Codec都是有自己的License的,我们可以像加入插件一样,把这些code加入到ffmpeg,开发者只需要调用FFmpeg提供固定统一的接口。
AVFilter:音视频滤镜库,主要是提供音频和视频特效处理接口。
AVDevice:输入输出设备库,主要是与麦克风,摄像头,屏幕,喇叭硬件的数据采集或者输出数据。ffplay的播放音视频功能,就用到该模块,同时也需要SDL的预先编译,因为该设备模块播放声音与播放视频使用的都是SDL库。
SwrRessample:主要功能是对音频数据进行处理,可对音频数据进行修改,比如双声道单声道互相转换、pcm数据格式转换、不同采样率转换。
SWScale:主要功能是对视频数据进行处理,可以RGB与YUV互相转换,可以自由修改视频分辨率,获得标清,超清视频。
PostProc:音视频后期处理用到,AVFilter功能实现会依赖该模块相关接口。


二、FFmpeg播放器

ffmpeg最基本功能就是播放视频,下面是ffmpeg处理音视频大致流程。
在这里插入图片描述
第一步,FFmpeg会调用AVFormat相关函数,去读取音视频文件或者流地址。
第二步,FFmpeg调用解复用器,将相关的音视频流解析出一个一个packtc包,比如音视频流可能是flv或者MP4,通过解析获取H264,aac的分packet包。
第三步,调用AVcode模块,将包解析成frame,H264变成yuv420,aac变成pcm。
第四步,将获取到yuv,pcm数据进行处理,如变声,美颜之类。也可以直接输出到屏幕,喇叭。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值