前言:在不同平台下安装FFmpeg

1、mac系统下安装ffmpeg。

打开terminal,运行:


brew install ffmpeg

安装完后,terminal中输入:ffmpeg,出现下面提示即安装成功。

ffmpeg怎么安装python ffmpeg的安装和使用教程_ffmpeg

2、window环境下安装ffmpeg.

进入FFmpeg官网

ffmpeg怎么安装python ffmpeg的安装和使用教程_ffmpeg命令_02

下载完后解压到一个地方。

配置环境变量,配置到bin目录即可。

ffmpeg怎么安装python ffmpeg的安装和使用教程_Android_03

配置好后,打开命令窗口。输入ffmpeg,出现如下信息即配置成功。

ffmpeg怎么安装python ffmpeg的安装和使用教程_ffmpeg_04

 

一:FFmpeg处理音视频的流程

ffmpeg怎么安装python ffmpeg的安装和使用教程_ffmpeg_05

 

二:FFmpeg处理音视频的命令。

1、基本信息查询。

-version                       显示版本

-demuxers                   显示可用的demuxers

-muxers                       显示可用的muxers

-devices                       显示可用的设备

-decoders                    显示可用的解码器

-encoders                    显示可用的编码器

-formats                       显示可用的格式

-protocols                    显示可用的协议

-filters                          显示可用的过滤器

-pix_fmts                     显示可用的像素格式

-sample_fmts              显示可用的采样格式

-layouts                       显示channel名称

-colors                         显示识别的颜色名称



示例:ffmpeg -version

2、录制命令

mac下的录制命令:(退出录制屏幕:control+c)

ffmpeg -f avfoundation -i 1 -r 30 out.mp4

-f:指定使用 avfoundation 采集数据

-i:指定从哪采集数据,他是一个文件索引号

-r:指定帧率

window下的录制命令:(退出录制屏幕:ctrl+c)

ffmpeg -f gdigrab -i desktop luping.mp4

-f:指定使用 gdigrab 采集数据

-i:指定从哪采集数据,他是一个文件索引号

2.2、播放yuv格式数据:

ffplay -s 3360x2100 -pix_fmt uyvy422 out.yuv

2.3、查看可用设备

mac系统下的命令:

ffmpeg -f avfoundation -list_devices true -i ""

2.4、录制音频

mac系统下的命令:

ffmpeg -f avfoundation -i :0 out.wav

:0  代表音频设备

3、分解与复用

3.1、多媒体格式转换

ffmpeg -i out.mp4 -vcodec copy -acodec copy out.flv

-i:输入文件

-vcodec :视频编码处理方式

-acodec:音频编码处理方式

copy:指明只拷贝,不做编解码

3.2、提取音频

ffmpeg -i out.mp4 -acodec copy -vn out.aac

vn:v 代表视频,n 代表 no 也就是无视频的意思。

3.3、提取视频

ffmpeg -i out.mp4 -acodec copy -an out.h264

an:  a 代表视频,n 代表 no 也就是无音频的意思。

3.4、视频和音频合成

ffmpeg -i out.h264 -i out.aac -vcodec copy -acodec copy muxer.mp4

4、提取原始数据

4.1、提取YUV数据

ffmpeg -i input.mp4 -an -c:v rawvideo -pixel_format yuv420p out.yuv

-c:v rawvideo   指定将视频转成原始数据

-pixel_format yuv420p   指定转换格式为yuv420p

ffplay -s wxh out.yuv

4.2、YUV转H264

ffmpeg -f rawvideo -pix_fmt yuv420p -s 320x240 -r 30 -i out.yuv -c:v libx264 -f rawvideo out.h264

4.3、提取PCM数据

ffmpeg -i out.mp4 -vn -ar 44100 -ac 2 -f s16le out.pcm

ffplay -ar 44100 -ac 2 -f s16le -i out.pcm

4.4、PCM转WAV

ffmpeg -f s16be -ar 8000 -ac 2 -acodec pcm_s16be -i input.raw output.wav

5、滤镜命令

ffmpeg可以使用libavfilter库中的过滤器处理原始音频和视频帧。 几个链式过滤器形成一个过滤器图形。 ffmpeg区分两种类型的过滤器图形:简单和复杂。

5.1、视频高度和宽度减小(默认是视频中心点)

ffmpeg -i out.mp4 -vf crop=in_w-200:in_h-200 -c:v libx264 -c:a copy crop.mp4

-vf:使用视频滤镜

crop:裁剪视频

in_w-200:宽度减小200

in_h-200:高度减小200

-c:v:视频编码器

-c:a:音频编码器

6、音视频的裁剪与合并

ffmpeg -i out.mp4 -ss 00:00:00 -t 10 out1.mp4

-ss 指定裁剪的开始时间,精确到秒

-t 被裁剪后的时长。

这种截取的好处是特别快,因为它不会对视频重新编码,直接截取相关时间,导出视频,但是这种方式会导致:如果视频结尾不是关键帧,那么视频最后就会出现一段空白。
ffmpeg -ss 00:00:00 -t 12 -accurate_seek -i input.mp4 -codec copy  -avoid_negative_ts 1 output.mp4

这样截取视频之后,空白视频是没有了,但是时间不会精确截取,它会找到下一个关键帧,补全这个视频,所以,导致连续分割的视频之间存在细微的交集。
ffmpeg -ss 00:00:00 -t 12 -i input.mp4  -c:v libx264 -c:a aac -strict experimental -b:a 98k output.mp4

避免关键帧的丢失并精确截取时间,需要重新编码视频。

视频拼接:

新建一个files.txt文件,其中加入(必须是单引号)

file 'input1.mp4'
file 'input3.mp4'
file 'input5.mp4'
ffmpeg -f concat -i files.txt -c copy output.mp4


这一行指令使用了-c copy,说明他只适用于视频切割产生的分段,被合并的视频必须是相同的参数!!!
如果你需要合并参数不同的视频,把-c copy去掉
或者自己写压制参数,
参考参数:
-c:v libx264 -crf 23 -profile:v high -level 5 -c:a aac -b:a 240k

7、视频转图片。

ffmpeg -i out.mp4 -r 1 -f image2 image-%3d.jpeg

8、图片转视频

ffmpeg -i image-%3d.jpeg images.mp4

9、视频转GIF

ffmpeg -i zhihui.mp4 -ss 00:00:00 -t 3 play.gif


00:00:00   开始时间,分别为 时:分:秒
-t 3 :代表时长为3秒,时间越长生成的gif越大

10、视频去水印

ffmpeg -i logo.mp4 -filter_complex "delogo=x=450:y=1100:w=268:h=178:show=0" delogo.mp4

-i:指定从哪采集数据

-filter_complex:指定要使用的滤镜

delogo:去水印的滤镜

x=:开始的x轴位置

y=:开始的y轴位置

w=:水印的宽度

h=:水印的高度

show=:是否有绿色的框(0:无框;1:有框)

11、视频裁剪(裁剪出一个矩形)

ffmpeg -i logo.mp4 -vf crop=200:400:200:400 crop.mp4

-vf:指定使用的滤镜

crop:视频裁剪滤镜

200:400:200:400   宽度:高度:x起始位置:y起始位置


等同于如下:
ffmpeg -i logo.mp4 -vf crop=w=200:h=400:x=200:y=400 crop.mp4

12、视频拉流

ffmpeg -i http://video01.youju.sohu.com/9f03c23c-5bb0-4946-b82a-947182d9dd362_0_0.mp4 meinv.mp4

13、视频转换格式

ffmpeg -y -i view_view.ifox -acodec copy video.mp4

view_view.ifox:原始视频格式
video.mp4:目标视频格式