文章目录


官方发布版本下载

源码:

​http://www.ffmpeg.org/releases/​

FFMPEG

一、获取视频信息

ffmpeg -i video.avi //查看本地的视频信息

ffmpeg ffprobe 查看视频文件编码格式

ffprobe test.avi -show_streams -select_streams v -print_format json

二、分离视频音频流

分离视频流

ffmpeg -i test.mp4 -vcodec copy -an deroy.mp4

分离音频流

ffmpeg -i test.mp4 -acodec copy -vn deroy2.mp4

去掉视频中的音频

ffmpeg -i input.mp4 -an output.mp4

三、视频编码格式转换

将一个视频的编码是h264的转换成MPEG4

ffmpeg -i test.mp4 -vcodec mpeg4 output.mp4

相反也一样

ffmpeg -i output.mp4 -vcodec h264 test.mp4

查看支持的编码器(也就是-vcodec后面可以接的参数):

ffmpeg -codecs

YUV转其他

ffmpeg -s 1280*720 -pix_fmt yuv420p -i test.yuv -vcodec mpeg4 output.avi

h264 1080 720

四、✏️视频转码

ffmpeg -i test.avi -vcodec h264 -f mp4 test.mp4 //avi转mp4

直接转
ffmpeg -i test.mp4 test.mkv

ffmpeg -i test.mp4 output.avi //mp4 转 avi
ffmpeg -i test.mp4 -b:v 640k output.flv //mp4 转 flv

ffmpeg -i test.avi -vcodec h264 -an -f m4v test.264 //转码为码流原始文件

查看支持的封装格式(也就是-f后面可以接的参数):

ffmpeg -formats

ffmpeg -i test.mp4 -pix_fmt yuv420p test.yuv

五、过滤器的使用

为视频添加logo

左上角

ffmpeg -i test.mp4 -i test.jpg -filter_complex overlay logo.mp4

右上角:

ffmpeg -i test.mp4 -i test.jpg -filter_complex overlay=W-w logo.mp4 

左下角:

ffmpeg -i test.mp4 -i test.jpg -filter_complex overlay=0:H-h logo.mp4

右下角:

ffmpeg -i test.mp4 -i test.jpg -filter_complex overlay=W-w:H-h logo.mp4

六、视频剪辑

ffmpeg -ss 0:0:00 -t 0:0:02 -i test.avi -vcodec copy -acodec copy test_5s.avi

七、修改分辨率

ffmpeg -i test.mp4 -vf scale=640:360 video_640.mp4 -hide_banner

仅需要使用-vf scale = 640:360以新的所需分辨率(640:360)指示缩放视频滤波器 。要考虑:

如果540不写,写成-1,即scale=800:-1, 那也是可以的,ffmpeg会通知缩放滤镜在输出时保持原始的宽高比。

ffmpeg -i test.mp4 -vf scale=640:-1 output.mp4

我们可以指出我们想要的任何分辨率,但生成的视频将始终具有相同的宽高比。也就是说,它不会扭曲图像,如果视频的宽高比为16:9,它将保持视频的16:9宽高比。该程序将调整生成的视频,使其符合我们给出的分辨率。


重要

查看支持的封装格式(也就是-f后面可以接的参数):

ffmpeg -formats

查看支持的滤镜(也就是-vf后面可以接的参数):

ffmpeg -filters

下面的命令查看 FFmpeg 支持的容器。


$ ffmpeg -formats


下面的命令可以查看 FFmpeg 已安装的编码器。


$ ffmpeg -encoders


下面的命令可以查看 FFmpeg 支持的编码格式,视频编码和音频编码都在内。


$ ffmpeg -codecs


常用参数说明:

命令格式:

ffmpeg -i [输入文件名] [参数选项] -f [格式] [输出文件]

ffmpeg [[options][`-i’ input_file]]… {[options] output_file}…

(1) h264: 表示输出的是h264的视频裸流

(2) mp4: 表示输出的是mp4的视频

(3)mpegts: 表示ts视频流

主要参数:

-i 设定输入流

-f 设定输出格式

-ss 开始时间

视频参数:

-b 设定视频流量,默认为200Kbit/s

-r 设定帧速率,默认为25

-s 设定画面的宽与高

-aspect 设定画面的比例

-vn 不处理视频

-vcodec 设定视频编解码器,未设定时则使用与输入流相同的编解码器,一般后面加copy表示拷贝

音频参数:

-ar 设定采样率

-ac 设定声音的Channel数

-acodec 设定声音编解码器,未设定时则使用与输入流相同的编解码器,一般后面加copy表示拷贝

-an 不处理音频

ffplay

指定解码方式播放文件

ffplay -f h264 raw.h264

播放yuv数据

ffplay -video_size 704x576 -i test.yuv

ffplay -video_size 2560x1920 -i test.yuv

阮一峰

​http://www.ruanyifeng.com/blog/2020/01/ffmpeg.html​