ffmpeg学习之路·序章

写在前面:笔者大约在半年前接触ffmpeg,有效学习时长也不算太长。看过雷博士关于ffmpeg的总结,很详细,收获颇丰。如果他是从一个已经建立起ffmpeg使用体系的大神角度概括介绍的话,那么我这一系列则是从一个小白的角度,和大家一起学习,总结。

00.ffmpeg是做什么用的?

所有学习音视频处理的朋友们,肯定都绕不开ffmpeg的学习,甚至是搞内容创作的剪视频大神们,也会接触到一些ffmpeg的使用。ffmpeg不是一套编程语言,也不是一个软件,一个系统。对于剪视频以及搭建视频平台的人来说,ffmpeg是一款音视频编解码工具;而对于学习、开发、优化ffmpeg的人来说,它则是一组音视频编解码开发套件
总而言之,它是一款开源的、以c语言为编程语言的、帮助人们对音视频编解码进行处理的一套工具。

01.ffmpeg的基本组成

ffmpeg框架基本组成包括avformat,avcodec,avfilter,avdevice,avutil,swresample和swscale。这里主要介绍前三个部分。

  1. AVFormat - 封装模块
    该模块目前已经实现了多媒体领域中绝大多数媒体封装格式(如MP4, FLV, TS, RTMP等等),包括封装和解封装。
  2. AVCodec - 编解码模块
    该模块目前已经实现了多媒体领域中绝大多数编解码格式(如自带的MPEG4, AAC, MJPEG…以及第三方的H.264/AVC, H.265/HEVC, AVS2,AVS3…)
  3. AVFilter - 滤镜模块
    该模块提供了多种处理框架对视频进行加减字幕、切割、快进等等滤镜处理。

02.ffmpeg的使用

如果是把ffmpeg当作一个音视频编解码工具,且所需的功能已经集成在ffmpeg里的话,是可以直接在命令行工具中使用ffmpeg的可执行文件,对音视频进行相应的处理的。
常用的三个工具为编解码工具ffmpeg, 播放器ffplay, 多媒体分析器ffprobe

举个简单的例子(在命令行中输入)

./ffmpeg -i input.mp4 output.avi   //----将封装格式从MP4转成avi
./ffplay output.mp4  //----播放output
./ffprobe -show_streams output.mp4  //----查看MP4文件容器中流的信息

p.s.建议:装了git的朋友可以在bush中写命令,使用cmd的朋友建议装一个小插件,在路径下按住shift再右键可以直接打开cmd。(插件放评论区自取)

03.ffmpeg 的编译与安装

ffmpeg在官网中提供了可以编译好的可执行文件,所以如果仅把它作为音视频编解码工具进行使用的话,按照自己电脑的系统下载相应的文件,然后配置环境就可以用了。
如果是使用其中的api,或者进行进一步的开发优化的话,需要下载源码。(后续有时间会专门开一章介绍ffmpeg在windows以及linux平台下的配置)

你可能感兴趣的:(ffmpeg)