FFmpeg操作视频的命令:
图片加水印测试:
D:\desktop\FFmpeg\bin\ffmpeg.exe -i "D:\desktop\重庆文旅摄影协会\视觉\AI设计\01.mp4" -vf "movie=D\\:/favicon.png,scale= 60: 30 [watermark]; [in][watermark] overlay=main_w-overlay_w-10:main_h-overlay_h-10 [out]" -y "D:/desktop/3.mp4"
图片加水印测试:
D:\desktop\FFmpeg\bin\ffmpeg.exe -i "D:\desktop\重庆文旅摄影协会\视觉\AI设计\01.mp4" -i D\\:/favicon.png -filter_complex "overlay=10:10:alpha=0.5,scale=200:-1" -codec:a copy "D:/desktop/777.mp4"
1.压缩视频命令:
ffmpeg -i input.mp4 -c:v libx264 -crf 23 -c:a aac -b:a 128k output.mp4
说明:
- -i input.mp4:输入视频文件名
- -c:v libx264:使用libx264编码器压缩视频
- -crf 23:视频质量,数值越小,质量越高,一般取值范围是18-28,推荐使用23
- -c:a aac:使用aac编码器压缩音频
- -b:a 128k:音频比特率,128k是常用的音频码率
- output.mp4:输出视频文件名
2.添加水印命令:
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10" -codec:a copy output.mp4
说明:
- -i input.mp4:输入视频文件名
- -i watermark.png:输入水印图片
- -filter_complex "overlay=10:10":设置水印位置,10:10表示水印在视频左上角,可以根据需要调整位置,如:overlay=main_w-overlay_w-10:10 表示水印在视频右上角
- -codec:a copy:音频不需要重新编码,直接复制到输出文件中,节省时间和质量
- output.mp4:输出视频文件名
3.调整水印大小和透明度命令:
ffmpeg -i input.mp4 -i watermark.png -filter_complex "overlay=10:10:alpha=0.5,scale=200:-1" -codec:a copy output.mp4
说明:
- -filter_complex "overlay=10:10:alpha=0.5,scale=200:-1":在原有的水印位置基础上增加alpha透明度为0.5,然后将水印缩放到宽度为200,高度等比例缩放,可以根据需要调整大小和透明度
- output.mp4:输出视频文件名
注意:以上命令仅供参考,具体参数需要根据实际情况调整。
字幕
视频添加字幕
ffmpeg -i input.mp4 -i subtitle.ass -c:v copy -c:a copy -c:s ass -y output.mkv
或:(烧录为 mp4,速度慢)
ffmpeg -i input.mp4 -vf ass=subtitle.ass -y output.mp4
视频提取字幕
ffmpeg -i video.mkv -map 0:s:0 out.ass
这将下载第一个字幕轨。如果有多个,则使用 0:s:1 下载第二个,0:s:2 下载第三个,以此类推。可以生成任意所需的格式,改一下扩展名即可。
图片
图片压缩
ffmpeg -i image.jpg -q 4 out.jpg
-q 4 为压缩级别,数字越大压缩级别越高
约束比例压缩
ffmpeg -i image.jpg -vf scale=-1:1000 out.jpg
scale=-1:1000 表示保持图片尺寸比,将高度缩减为 1000px
scale=1000:-1 表示保持图片尺寸比,将宽度缩减为 1000px
scale=1000:500 表示将宽度缩减为 1000px,高度缩减为 500px (图片可能会拉伸)
图片裁剪
ffmpeg -i image.jpg -vf crop=1000:800:0:0 out.jpg
crop=1000:800:0:0 表示裁剪后的图片大小为 1000x800 px,从 0,0 坐标位置开始裁剪,即左上角
添加文字水印
ffmpeg -i image.jpg -vf drawtext=fontfile="simkai.ttf":fontcolor="#D85840":fontsize=100:text="Hello World!你好,世界":x=1000:y=1000 out.jpg
fontfile=“simkai.ttf” 为字体路径(绝对路径好像不生效?只好把字体复制到当前目录)
不支持中文的字体,中文会显示不正常
Windows 系统字体位置为 “C:/Windows/Fonts”
fontcolor=“#D85840” 为字体颜色,支持不透明度
fontsize=100 为字体大小
text=“Hello World!你好,世界!” 为要设置的文字
x=1000:y=1000 为文字起始坐标,图片左上角坐标为 (0,0)
图片旋转
PI/180 指顺时针旋转 90 度
图片左右翻转
ffmpeg -i image.jpg -vf hflip out.jpg
图片上下翻转
ffmpeg -i image.jpg -vf vflip out.jpg
音频
导出视频中的音频
ffmpeg -i input.mp4 -vn -y -acodec copy output.m4a
去除视频中的音频
ffmpeg -i input.mp4 -an output.mp4
添加封面
ffmpeg -y -i audio.mp3 -i cover.jpg -map 0:0 -map 1:0 -c copy -id3v2_version 3 output.mp3
去除封面
ffmpeg -i audio.mp3 -vn -codec:a copy -map_metadata -1 output.mp3
m4a 转 mp3
ffmpeg -i audio.m4a -f mp3 output.mp3
音频增益
ffmpeg -i input.mp3 -af volume=-5dB -y output.mp3
volume=-5dB 表示将音量减少 5 dB,升高则不用加负号
音频压缩
ffmpeg -i input.mp3 -ab 128k output.mp3
-ab 128k 表示将音频压缩为 128kbps 比特率
常用的比特率有 96k, 112k, 128k, 160k, 192k, 256k, 320k
视频
合并音视频
ffmpeg -i input.mp4 -i audio.mp3 -vcodec copy -acodec copy output.mp4
合并多个视频文件
方法 1(直接指定文件名)
ffmpeg -i "concat:1.ts|2.ts|3.ts" -c copy output.mp4
方法 2(根据配置文件合并)
file.txt:
file '1.mp4'
file '2.mp4'
file '3.mp4'
ffmpeg -f concat -i file.txt -c copy -y output.mp4
视频转为 gif
ffmpeg -ss 00:00:01 -i input.mp4 -s 1024x768 -r 15 output.gif
-ss 00:00:01 表示从第 00 小时 00 分钟 01 秒 开始制作 gif,也可以简写为 1,可以省略
-s 1024x768 表示 gif 分辨率,可以省略
-r 15 表示 gif 帧率,可以省略
视频截取
ffmpeg -ss 00:00:00 -i input.mp4 -vcodec copy -acodec copy -t 00:00:30 output.mp4
-ss 00:00:00 表示从第 00 小时 00 分钟 01 秒 秒开始截取
-t 00:00:30 表示向后截取 30 秒视频
修改分辨率
方法 1(直接设置分辨率)
ffmpeg -i input.mp4 -s 640x480 output.mp4
方法 2(设置缩放比)
ffmpeg -i input.mp4 -vf scale=-1:480 output.mp4
调整视频帧率
ffmpeg -i input.mp4 -r 20 output.mp4
-r 20 表示调整视频帧率为 20 帧/s
调整视频播放速度
只调整视频速度
ffmpeg -i input.mp4 -vf "setpts=0.5*PTS" output.mp4
0.5 表示 2 倍速播放,2 表示 0.5 倍速播放,以此类推
同时调整视频音频速度
ffmpeg -i input.mp4 -filter_complex "[0:v]setpts=0.5*PTS[v];[0:a]atempo=2.0[a]" -map "[v]" -map "[a]" output.mp4
0.5*PTS[v] 表示 视频 2 倍速播放,2.0[a] 表示音频 2 倍速播放
视频截图
ffmpeg -i input.mp4 -r 30 image-%3d.jpg
-r 30 表示每秒提取 30 帧
image-%3d 文件命名格式是 image-001.jpg
ffmpeg -i input.mp4 -r 30 -t 4 image-%3d.jpg
-t 4 表示取第 4 秒的帧
ffmpeg -i input.mp4 -r 30 -t 4 -vframes 1 image-%3d.jpg
-vframes 1 表示取 1 帧
裁剪视频
ffmpeg -i input.mp4 -vf crop=w=1500:h=600:x=0:y=200 output.mp4
w=1500 表示输出视频宽度 1500 px
h=600 表示输出视频高度 600 px
x=0 y=200 表示从坐标(0, 200)开始裁剪
视频旋转
ffmpeg -i input.mp4 -metadata:s:v rotate="-90" -codec copy outut.mp4
rotate=“-90” 表示将视频顺时针旋转 90°
视频镜像
ffmpeg -i input.mp4 -vf "hflip" outut.mp4
-vf “hflip” 表示将视频水平镜像,vflip 则是垂直镜像
参考链接:
FFmpeg----图片处理 https://www.jianshu.com/p/b53943fc3819
ffmpeg 从视频中提取图片 https://blog.csdn.net/lovelovelovelovelo/article/details/101443618
ffmpeg 设置视频帧率 https://blog.csdn.net/ss00_2012/article/details/74937447
使用 ffmpeg 合并多个视频文件 https://blog.csdn.net/winniezhang/article/details/89260841
FFmpeg 音视频简单合并 https://blog.csdn.net/u012725623/article/details/104008263
使用 ffmpeg 将音频文件转换为 mp3 https://cloud.tencent.com/developer/ask/sof/48924
[FFmpeg] Windows 下使用 ffmpeg 为视频添加字幕 https://blog.csdn.net/u013699869/article/details/48162417/
FFmpeg 命令行 视频转为 GIF 动图 https://www.cnblogs.com/yibinboy/p/12751659.html
使用 ffmpeg 裁剪和合并视频 https://www.cnblogs.com/sn-dnv-aps/p/10832852.html
ffmpeg 调节视频声音大小 https://www.cnblogs.com/shaosks/p/15010686.html
ffmpeg 对视频进行缩放和裁剪操作 https://www.cnblogs.com/xuguangzong/p/15775177.html
FFmpeg之视频/图片镜像旋转(十三) https://blog.csdn.net/u010164190/article/details/112689804
30分钟带你入门,20个 FFmpeg操作命令,包你学会 https://zhuanlan.zhihu.com/p/455572544
————————————————
版权声明:本文为CSDN博主「luxiu-yuruyan」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/KYuruyan/article/details/124518983