FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。
它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
二、编解码基础知识
(1)封装格式所谓封装格式是指音视频的组合格式,例如最常见的封装格式有mp4、mp3、flv等。简单来说,我们平时接触到的带有后缀的音视频文件都是一种封装格式。
(2)编码格式以mp4为例,通常应该包含有视频和音频。视频的编码格式为YUV420P,音频的编码格式为PCM。再以YUV420编码格式为例。
我们知道通常图像的显示为RGB(红绿蓝三原色),在视频压缩的时候会首先将代表每一帧画面的RGB压缩为YUV,再按照关键帧(I帧),过渡帧(P帧或B帧)进行运算和编码。
解码的过程正好相反,解码器会读到I帧,并根据I帧运算和解码P帧以及B帧。并最终根据视频文件预设的FPS还原每一帧画面的RGB数据。
最后推送给显卡。所以通常我们说的编码过程就包括:画面采集、转码、编码再封装。
(3)视频解码和音频解码有什么区别FPS是图像领域中的定义,是指画面每秒传输帧数,通俗来讲就是指动画或视频的画面数。FPS太低画面会感觉闪烁不够连贯,FPS越高需要显卡性能越好。
一些高速摄像机的采集速度能够达到11000帧/秒,那么在播放这类影片的时候我们是否也需要以11000帧/秒播放呢?当然不是,通常我们会按照25帧/秒或者60帧/秒设定图像的FPS值。
但是由于视频存在关键帧和过渡帧的区别,关键帧保存了完整的画面而过渡帧只是保存了与前一帧画面的变化部分,需要通过关键帧计算获得。因此我们需要对每一帧都进行解码,即获取画面的YUV数据。
同时只对我们真正需要显示的画面进行转码,即将YUV数据转换成RGB数据,包括计算画面的宽高等。
(4)读取压缩数据/*之所以称为压缩数据主要是为了区分AVPacket和AVFrame两个结构体。
AVPacket表示一幅经过了关键帧或过渡帧编码后的画面,AVFrame表示一个AVPacket经过解码后的完整YUV画面*/
(6)视频转码// 720p输出标准/*这里需要解释一下outWidth * outHeight * 4计算理由:720p标准的视频画面包含720 * 480个像素点,每一个像素点包含了RGBA4类数据,每一类数据分别由1个byte即8个bit表示。
因此一幅完整画面所占的大小为outWidth * outHeight * 4。
1.1ffmpeg程序的使用
FFmpeg项目由以下几部分组成:
具体介绍说明原帖知乎链接:
https://zhuanlan.zhihu.com/p/89872960
现在教大家如何安装FFmpeg!
FFmpeg官网:https://ffmpeg.org/
看第一张图:
第二张图:
第三张图:
[color=]FFmpeg图片安装说明:
[color=]
到这里基本上就已经安装完毕了,也可以自行检查下
打开Win+R,填写CMD,打开CMD命令窗
填写:ffmpeg 回车键会提示以下就表示安装成功了
由于图片比较多,我使用的是图床外链添加的照片
由于官网下载速度是真的慢,毕竟镜像是在Github上。所以我已经下载好了,附上123云盘地址链接
https://www.123pan.com/s/3kv9-3lJ4.html
提取码:52PJ