ffmpeg常用命令

一、获取视频信息

二、分离视频音频流

三、视频转码相关

四、图像处理相关

五、视频方向处理相关

六、视频剪切相关

七、倒放音视频&加速视频&减速视频

八、视频拼接

这里全部以mp4文件为例子,介绍两种方法,如果不是mp4文件,可以尝试先转码为mp4后再拼接起来

1、将 mp4 先转码为 mpeg文件,mpeg是支持简单拼接的,然后再转回 mp4。

2、使用ts拼接

先将 mp4 转化为同样编码形式的 ts 流,因为 ts流是可以 concate 的,先把 mp4 封装成 ts ,然后 concate ts 流, 最后再把 ts 流转化为 mp4。

九、视频的合并

下面通过动手实现抖音合拍功能来演示命令行的使用,首先准备好两个文件input1和input2,都是用手机拍摄的,高度相同;

1、两个视频的合并(注意参数hstack代表是横向合并,也就是左右合并,横向合并的形象类比为“川”;如果是竖向合并,也就是上下合并,用参数vstack,竖向或者纵向合并的形象类比为“三”)

ffmpeg -i input1.mp4 -i input2.mp4 -lavfi hstack output.mp4

注意:经过此命令处理后的视频output.mp4只会保留input1的音频
2、提取视频中的音频并合并音频

3、把audio3.mp3文件合并到output.mp4中去

ffmpeg -i output.mp4 -i audio3.mp3 -c:v copy -c:a aac -strict experimental success.mp4

最后我们得到的success.mp4就是合拍视频,包含了两个视频的音频。

三个视频合并(input=3表示希望合并的视频的个数)

ffmpeg -i input1.mp4 -i input2.mp4 -i input3.mp4 -lavfi hstack=inputs=3 output.mp4
常用参数说明:

命令格式:
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 不处理音频