ffmpeg命令

裁剪视频时间

# 裁剪视频并且重新编码
ffmpeg -ss 0.962 -i input.mp4 -preset slow -to 23.852  -c:v h264_nvenc -preset medium  -profile:v high  -y output.mp4

# 直接裁剪不进行重新编码(快速剪辑)
ffmpeg -ss 00:19:40 -i input.mp4 -preset slow -to 00:03:30  -c:v copy -c:a copy output.mp4

#裁剪掉末尾n秒可以直接这样写(slow直接写要裁剪掉末尾的秒数),这里加了-an,视频的音频会被去掉,不去掉不加就可以
ffmpeg  -i  input.mp4 -preset slow (5) -an  -c:v h264 -preset medium  -profile:v high  -y output.mp4

# -ss 开始时间(不填从0秒开始)
# -to 裁剪到的时间(不填裁剪到视频最后)
# -c:v: h264编码器h264_nvenc显卡进行h264编码,copy复制原始数据不重新编码

视频旋转

ffmpeg  -i input.mp4 -preset slow  -vf transpose=1 -c:v h264 -preset medium  -profile:v high  -y output.mp4

# transpose 1:旋转90度 2:旋转180度 3:旋转270度

裁剪视频尺寸

ffmpeg  -i input.mp4 -preset slow  -an  -c:v h264 -preset medium  -profile:v high -vf crop= iw*0.56 : ih*0.73 : iw*0.07 : ih*0.04 -y output.mp4

#     iw *(裁剪完之后视频宽度 / 原视频宽度) 
#    : ih * (裁剪完之后视频高度 / 原视频高度)
#    : iw * (最左边裁剪位置(左边裁剪线)距离原视频左边线长度 / 原视频宽度)
#    : ih * (最上边裁剪位置(上边裁剪线)距离原视频上边线的长度 / 原视频高度)

合并视频

# list_path.txt
    file 001.ts
    file 002.ts
    file 003.ts

# shell
 ffmpeg -f concat -safe 0 -i list_path.txt -c copy  -y output.ts

# 转码成mp4
ffmpeg -i output.ts -preset slow  -c:v h264 -preset medium  -profile:v high  -y new_output.mp4

截取封面

ffmpeg -ss 0 -i input.mp4 -frames:v 1 -y output.jpg

# 指定格式
ffmpeg -ss 0 -i input.mp4 -r 1 -frames:v 1 -an -f mjpeg output.jpg -y

压缩图片

# -q 压缩等级
ffmpeg -i input.jpg -q 10 output.jpg -y

压缩视频

ffmpeg -i .\douyin.mp4 -preset slow -pix_fmt yuv420p -c:v h264 -preset medium  -profile:v high -acodec aac -ar 44100 -crf 18 -vf "scale=-1:'min(1280,ih)'" 1280_18.mp4 -y
# 命令行参数-crf 视频质量控制
在优先保证画面质量(也不太在乎转码时间)的情况下,使用-crf参数来控制转码是比较适宜的。这个参数的取值范围为0——51,其中0为无损模式,数值越大,画质越差,生成的文件却越小。从主观上讲,18——28是一个合理的范围。18被认为是视觉无损的(从技术角度上看当然还是有损的),它的输出视频质量和输入视频相当。

-s vga: 指定分辨率, vga 代表 600*480

  --修改分辨率 720p
-vf scale=1280:720
-vf scale=1080:-1 修改宽为1080并保持宽高比

# 通过控制比特率来手动降低码率
# ffmpeg -i input.mp4 -preset slow -pix_fmt yuv420p -c:v h264 -preset medium  -profile:v high -acodec aac -ar 44100 -b:v 2000k -vf "scale=-1:'min(1280,ih)'" 1280_2000k.mp4 -y
-b:v bitrate:设定视频流的比特率,整数,单位bps。

如果输入分辨率太低,FFmpeg提供了一个巧妙的技巧来防止放大。
ffmpeg -i input.mp4 -vf "scale='min(320,iw)':'min(240,ih)'" output.mp4
在上面的命令行中,执行缩放的最小宽度/高度分别设置为320和240像素。

关于-preset参数

# 编码器预设
-preset ultrafast :编码速度非常快,但输出视频质量不高
-preset superfast :编码速度非常快,但输出视频质量比ultrafast略微高一些
-preset veryfast :编码速度比较快,输出视频质量较好
-preset faster :编码速度比较快,输出视频质量比veryfast略微差一些
-preset fast :编码速度适中,输出视频质量较好
-preset medium :编码速度适中,输出视频质量非常好,是默认值
-preset slow :编码速度较慢,但输出视频质量比medium更好
-preset slower :编码速度比slow略微慢一些,但输出视频质量更好
-preset veryslow :编码速度最慢,但输出视频质量最好

关于-profile:v参数

# 编码器配置
baseline:实时通讯
main:流媒体
high 超清视频

你可能感兴趣的:(ffmpeg命令)