文章目录
官方发布版本下载
源码:
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