文章目录
- 一.FFMPEG介绍
- FFMPEG组成
- 二.Windows10下FFMPEG安装
- 三.FFMPEG的使用
- 1.关键指令
一.FFMPEG介绍
FFmpeg是一套可以用来记录、转换数字音频、视频,并能将其转化为流的开源计算机程序。采用LGPL或GPL许可证。它提供了录制、转换以及流化音视频的完整解决方案。它包含了非常先进的音频/视频编解码库libavcodec,为了保证高可移植性和编解码质量,libavcodec里很多code都是从头开发的。
FFmpeg在Linux平台下开发,但它同样也可以在其它操作系统环境中编译运行,包括Windows、Mac OS X等。这个项目最早由Fabrice Bellard发起,2004年至2015年间由Michael Niedermayer主要负责维护。许多FFmpeg的开发人员都来自MPlayer项目,而且当前FFmpeg也是放在MPlayer项目组的服务器上。项目的名称来自MPEG视频编码标准,前面的"FF"代表"Fast Forward"。 FFmpeg编码库可以使用GPU加速。
FFMPEG组成
- libavformat:用于各种音视频封装格式的生成和解析,包括获取解码所需信息以生成解码上下文结构和读取音视频帧等功能;
- libavcodec:用于各种类型声音/图像编解码;
- libavutil:包含一些公共的工具函数;
- libswscale:用于视频场景比例缩放、色彩映射转换;
- libpostproc:用于后期效果处理;
- ffmpeg:该项目提供的一个工具,可用于格式转换、解码或电视卡即时编码等;
- ffsever:一个 HTTP 多媒体即时广播串流服务器;
- ffplay:是一个简单的播放器,使用ffmpeg 库解析和解码,通过SDL显示;
二.Windows10下FFMPEG安装
- FFMPEG官网下载FFMPEG:https://www.ffmpeg.org/download.html
- 选择下载版本,选择带full.build版本的
- 解压下载出的文件,并拷贝到C盘下,防止误删
- 拷贝文件夹下的bin目录路径
- 右键我的电脑,选择属性
- 选择高级系统设置
- 按以下方式添加环境变量
- 键盘win键+r打开运行窗口,输入cmd打开命令行,输入ffmpeg -version,显示如下说明安装成功
三.FFMPEG的使用
1.关键指令
-
查看FFmpeg支持的编码器
ffmpeg configure -encoders
-
查看FFmpeg支持的解码器
ffmpeg configure -decoders
-
查看FFmpeg支持的通信协议
ffmpeg configure -protocols
-
查看FFmpeg所支持的音视频编码格式、文件封装格式与流媒体传输协议
ffmpeg configure --help
-
播放视频
ffplay input.mp4 ffplay -autoexit input.mp4
-
设置视频的屏幕高宽比
ffmpeg -i input.mp4 -aspect 16:9 output.mp4 通常使用的宽高比是: 16:9 4:3 16:10 5:4 2:21:1 2:35:1 2:39:1
-
编码格式转换
# MPEG4编码转成H264编码 ffmpeg -i input.mp4 -strict -2 -vcodec h264 output.mp4
# H264编码转成MPEG4编码 ffmpeg -i input.mp4 -strict -2 -vcodec mpeg4 output.mp4
-
压缩视频
ffmpeg -i 2020.mp4 -vcodec h264 -vf scale=640:-2 -threads 4 2020_conv.mp4 ffmpeg -i 1579251906.mp4 -strict -2 -vcodec h264 1579251906_output.mp4
#参数说明 -i 2020.mp4 :指定输入文件 -vcodec h264 :指定编码格式(copy表示按原来格式) -vf scale=640:-2 改变视频分辨率,缩放到640px宽,高度的-2是考虑到libx264要求高度是偶数, 所以设置成-2,让软件自动计算得出一个接近等比例的偶数高 -threads 4 : 运算核数 -s 1280x720 : 设置输出文件的分辨率,w*h -b:v : 输出文件的码率,一般500k左右即可,人眼看不到明显的闪烁,这个是与视频大小最直接相关的 -preset : 指定输出的视频质量,会影响文件的生成速度,有以下几个可用的值 ultrafast, superfast, veryfast, faster, fast, medium, slow, slower, veryslow。与 veryslow相比,placebo以极高的编码时间为代价,只换取了大概1%的视频质量提升。这是一种收益递 减准则:slow 与 medium相比提升了5%~10%;slower 与 slow相比提升了5%;veryslow 与 slower相比提升了3%。针对特定类型的源 内容(比如电影、动画等),还可以使用-tune参数进行特别的优化。 -an : 去除音频流 -vn : 去除视频流 -c:a : 指定音频编码器 -c:v : 指定视频编码器,libx264,libx265,H.262,H.264,H.265。 libx264:最流行的开源 H.264 编码器 NVENC:基于 NVIDIA GPU 的 H.264 编码器 libx265:开源的 HEVC 编码器 libvpx:谷歌的 VP8 和 VP9 编码器 libaom:AV1 编码器 -re : 以源文件固有帧率发送数据 -minrate 964K -maxrate 3856K -bufsize 2000K : 指定码率最小为964K,最大为3856K,缓冲区大小为 2000K