FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。它包括了领先的音/视频编码库libavcodec等。
libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构
和读取音视频帧等功能;
libavcodec:用于各种类型声音/图像编解码;
libavutil:包含一些公共的工具函数;
libswscale:用于视频场景比例缩放、色彩映射转换;
libpostproc:用于后期效果处理;
ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
ffsever:一个 HTTP 多媒体即时广播串流服务器;
ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;
常用功能
个人在实际工作中,主要用ffmpeg实现以下功能:
1.H264流的解码。目前我们生活中接触到的大部分网络相机视频流都是H264流或者H265流,由于H264流是压缩流,我们要进行算法分析,必须对H263流进行解码,将其转换为一帧帧的RGB或者YUV图像;
2.H264流的编码。我们有时需要将处理好的图像帧压缩成H264视频流,这就需要用ffmpeg的编码功能。
注意:
1.ffmpeg是开源库,我们可以从ffmpeg官网下载其源码;
http://www.ffmpeg.org/download.html
2.ffmpeg不仅支持CPU解码,也支持GPU解码。目前测试成功的案例是通过ffmpeg和CUDA,实现40路1080P视频的同时解码;
3.如果要重新编译ffmpeg库,可以使用CMake软件,结合网上的教程,一步一步实现Opencv库的编译工作。