FFmpeg使用手册 - FFmpeg 的基本组成

本文介绍了FFmpeg的基本组成,包括avformat、avcodec、avfilter、avdevices和utils。avformat涉及媒体文件封装,avcodec处理媒体编码,avfilter用于视频音频处理,avdevices涵盖输入输出设备,utils提供公共接口。此外,还详细讲解了libavfilter的filtergraph、libswscale的图像转换和libresample的音频转换功能。最后提到了FFmpeg的工具如ffmpeg、ffplay和ffprobe的用途。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 FFmpeg 的基本组成

FFmpeg 的基本组成包含Format、Codec、Filter、Devices、Utils等,结构如图:

AvFormats: 主要为媒体文件的封装格式,也可以称之为多媒体编码数据的容器,包含了音频数据,视频数据,字幕数据之类的容器;

AvCodecs:主要为媒体文件容器内的具体的数据对应的压缩方式,例如音频的aac压缩数据,音频的speex压缩数据,视频h264压缩数据等,或ASS字幕数据等;

AvFilters:主要为媒体的音频数据,视频数据进行渲染,例如多个视频文件视频数据前景与背景进行叠加、透明处理、音频重采样、音频合并等处理;

AvDevices:主要为媒体的播放输出设备,媒体的采集设备,例如音频采集设备,音频输出设备,视频的采集设备,视频的输出设备等;

Utils:主要为FFmpeg中的AVFormats,AVCodecs,AVFilters等所用到的公用的接口;

Swscale: 主要为FFmpeg中做缩放,rgb转yuv,混色计算等用的接口。

1.1 FFmpeg 的封装模块avformat

libavformat中实现了目前多媒体领域中的几乎所有封装格式,可以封装,可以解封装,根据需求不同,所支持的也有所不同,ffmpeg能否支持一种封装格式的视频的封装与解封装,完全取决于这个库,例如mp4、flv、mkv等容器的封装与解封装;又或者RTMP、RTSP、TCP、UDP等协议的封装与解封装;关于封装与解封装的操作,对CPU的消耗不会特别严重,因为封装与解封装不涉及到复杂的计算,更多的是I/O,如果希望增加自己定制的封装格式的话,需要在libavformat中增加自己的对应的format模块。通过代码的文件结构可以看得出来

1.2 FFmpeg 的编解码模块libavcodec

libavcodec中实现了目前多媒体领域几乎所有的编解码格式,可以编码,可以解码,不过有些编码需要使用第三方的编码器,例如H.264(AVC)编码需要使用x264编码器,H.265(HEVC)编码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值