FFmpeg学习(一) —— 简介

     

简介

     FFmpeg既是一款音视频编解码工具,也是音视频编解码开发套件,为开发者提供了丰富的音视频处理的调用接口。

     FFmpeg提供多种媒体格式的封装和解封装,包括多种音视频编码、多种协议的流媒体、多种色彩格式转换、多种采样率转换、多种码率转换等;FFmpeg框架提供多种丰富的插件模块,包含封装与解封装的插件、编码与解码的插件等。
     

基本组成

     FFmpeg框架的基本组成包含 AVFormat、 AVCodec、 AVFilter、AVDevice、 AVUtil等模块库。
     

  • AVFormt
         AVFormat中实现了目前多媒体领域中的绝大多数媒体封装格式,包括封装和解封装,如MP4、FV、KV、TS等文件封装格式,RTMP、RTSP、MMS、HLS等网络协议封装格式。
         FFmpeg是否支持某种媒体封装格式,取决于编译时是否包含了该格式的封装库。根据实际需求,可进行媒体封装格式的扩展,增加自己定制的封装格式,即在 Format中增加自己的封装处理模块。

  • AVCodec
         AVCodec中实现了目前多媒体领域绝大多数常用的编解码格式,既支持编码也支持解码。 AVCodec除了支持MPEG4、AAC、 MJPEG等自带的媒体编解码格式之外,还支持第三方的编解码器,如H.264(AVC)编码,需要使用x264编码器;H.265(HEVC)编码,需要使用x265编码器;MP3(mp3lame)编码,需要使用limp3lame编码器。如果希望增加自己的编码格式,或者硬件编解码,则需要在AVCodec中增加相应的编解码模块。

  • AVFilter
         AVFilter库提供了一个通用的音频、视频、字幕等滤镜处理框架。在AVFilter中,滤镜框架可以有多个输入和多个输出。

  • SWscale
         swscale是FFmpeg的视频图像转换计算模块。
         swscale模块提供了高级别的图像转换API,例如它允许进行图像缩放和像素格式转换,常见于将图像从1080p转换成720p或者480p等的缩放,或者将图像数据从YUV420P转换成YUYV,或者YUV转RGB等图像格式转换。

  • SWresample
         swresample是FFmpeg的音频转换计算模块。
         swresample模块提供了高级别的音频重采样API。例如它允许操作音频采样、音频通道布局转换与布局调整。
         

FFmpeg可执行程序

     FFmpeg静态开发包带有三个可执行程序:ffmpeg.exe、ffplay.exe、ffprobe.exe。

  • ffmpeg.exe
         转码应用程序。即音视频编解码。
         转码工作流程(如图):ffmpeg读取输入源,通过Demuxer将音视频包进行解封装,这个动作通过调用libavformat中的接口即可实现;接下来通过Decoder进行解码,将音视频通过Decoder解包成为YVU或者PCM这样的数据,Decoder通过 libavcodec中的接口即可实现;然后通过 Encoder将对应的数据进行编码,编码可以通过libavcodec中的接口来实现;接下来将编码后的音视频数据包通过Muxer进行封装。Muxer封装通过 libavformat中的接口即可实现,输出成为输出流。
    在这里插入图片描述

  • ffplay.exe
         音视频显示和播放相关的图像信息、音频的波形信息等应用程序。要想使用ffplay需要SDL2.0进行支撑。即音视频播放、可视化分析。

  • ffprobeexe
         多媒体分析工具。即音视频内容分析。

     

说明

暂时记录到此,续更。。

关注

微信公众号搜索"Qt_io_"或"Qt开发者中心"了解更多关于Qt、C++开发知识.。

笔者 - jxd

发布了43 篇原创文章 · 获赞 0 · 访问量 3017

猜你喜欢

转载自blog.csdn.net/automoblie0/article/details/100726270