FFmpeg常用指令

本文最后更新于:2024年2月16日 上午

FFmpeg常见的音视频指令

提取视频中的音频为mp3
ffmpeg -i 123.mp4 -vn 123.mp

#提取当前目录下的123.MP4视频中的音频为123.MP3保存到当前目录

音频中加入背景音频
ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex amix=inputs=2:duration=longest:dropout_transition=3 3.mp3

#1.mp3为主音频 2.mp3为背景音 3.mp3为输出的音频

ffmpeg -i 1.mp3 -i 2.mp3 -filter_complex "[0:a]volume=1[a1];[1:a]volume=0.5[a2];[a1][a2]amix=inputs=2:duration=longest:dropout_transition=2[a]" -map "[a]" -b:a 192k output.mp3

#增加单独设置每个音频的音量指定192k比特率

提取视频字幕
ffmpeg -i 001.mp4 -map 0:s:0 sub1.srt

#这将下载第一个字幕轨。如果有几个,使用0:s:1下载第二个,0:s:2下载第三个,等等。字幕格式是srt或者ass修改后缀名就可以了

屏蔽视频内封的字幕
ffmpeg -i input.mp4 -c copy -sn output.mp4

这个命令会将输入文件input.mp4复制到输出文件output.mp4,并且不会包含字幕。 -c copy选项意味着视频和音频流会被直接拷贝而非重新编码,这样速度更快、质量更好

视频添加字幕
ffmpeg -i 1.mp4 -i 1.srt -c copy -c:s mov_text new.mp4

以上是将字幕文件作为单独流添加进视频(内封)

ffmpeg -i input.mp4 -vf "ass=input.ass" -y output.mp4

以上是将字幕文件烧录进视频中(内嵌)

以下为烧录进视频命令

ffmpeg -i input.mp4 -vf "subtitles=input.srt:force_style='FontName=Arial,FontSize=20'" output.mp4

以上是可以指定字体样式跟大小

ffmpeg -i mymovie.mp4 -vf subtitles=subtitles.srt mysubtitledmovie.mp4
视频剪辑
ffmpeg -ss 0:26:07 -t 00:01:00 -i 35.mp4 -vcodec copy -acodec copy 56.mp4

#剪辑视频 ss 开始时间, -t 持续时间

合并视频
ffmpeg -i 55.mp4 -i 56.mp4 -filter_complex "[0:v:0] [0:a:0] [1:v:0] [1:a:0] concat=n=2:v=1:a=1 [v] [a]" -map "[v]" -map "[a]" output.mp4
设置图片为视频封面
ffmpeg -i 2.mp4 -i fm.png -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic output_video.mp4
mp4格式转flv格式
ffmpeg -i 1.mp4 -acodec copy -vcodec copy -f flv test.flv

#mp4视频转换为flv格式

ffmpeg -i input.flv -qscale 0 output.mp4

转换时保持源视频质量

音频混合到视频中
ffmpeg -i 22.mp3 -i 1.mp4 22.mp4

#把22.mp3跟1.mp4 混合在一起并导出为22.mp4

添加文字水印
ffmpeg -i 1.mp4 -vf "drawtext=fontsize=50:fontfile=msyh.ttc:text='公众号:海豚学长':x=500:y=800:fontcolor=white:enable=lt(mod(t\, 20)\, 1)"  out.mp4

#视频添加文字水印,需要把系统支持中文的字体文件复制到当前目录下,enable=lt(mod(t, 20), 1)这个表示每20秒显示1次水印

添加当前系统时间作为文字水印
ffmpeg -i 22.mp4 -vf "drawtext=fontsize=60:fontfile=msyh.ttc:text='%{localtime\:%Y\-%m\-%d %H-%M-%S}':fontcolor=black:box=1:boxcolor=yellow:x=10:y=10:alpha=0.5" 222.mp4 -y

#fontcolor=black 表示字体为黑色 box=1 表示添加框 boxcolor=yellow 表示框的背景色黄色 x=10:y=10 表示坐标地址 alpha=0.5 透明度为50%

添加图片水印
ffmpeg -i 1.mp4 -vf "movie=sy.png,scale=200:200[wm]; [in] [wm] overlay=main_w-overlay_w-10:main_h-overlay_h-10[out]" scale.mp4

#scale=200:200水印图片缩放至200*200并且在右下角显示

图片显示在视频中的位置说明

“overlay=10:main_h-overlay_h-10";  //左下

 "overlay=main_w/2-overlay_w/2:main_h-overlay_h-10"; //正下

 "overlay=main_w-overlay_w-10:main_h-overlay_h-10"; //右下

 "overlay=10:main_h/2-overlay_h/2"; //中左

 "overlay=main_w/2-overlay_w/2:main_h/2-overlay_h/2"; //正中

 "overlay=main_w-overlay_w-10:main_h/2-overlay_h/2"; //中右

"overlay=10:10"; //左上

"overlay=main_w/2-overlay_w/2:10"; //正上

 "overlay=main_w-overlay_w-10:10"; //右上
指定时间显示图片水印以及持续时间
ffmpeg -hide_banner -i 1.mp4 -i sy.png -filter_complex "overlay=enable='between(t,5,10)'" out.mp4 -y

上面的命令作用是:让水印在视频的5~10秒时间段内显示

ffmpeg -hide_banner -i 2.mp4 -i F:\ffmpeg\sy.png -filter_complex "overlay='main_w-overlay_w-10:main_h-overlay_h-10':enable='between(t,5,10)'" out.mp4 -y

#上面的指令增加指定水印显示在视频中什么位置

ffmpeg -hide_banner -i 1.mkv -i F:\ffmpeg素材\sy.png -filter_complex [1]scale=200:200[wm];[0][wm]"overlay='main_w-overlay_w-10:main_h-overlay_h-10':enable='between(t,25,35)'" **-b**:v 2287**k** -b:a 128k new.mp4 
draw=lt(mod(t\,3)\,1)

#每3秒显示1秒

#加入了设置视频跟音频的比特率设定

#上面的指令增加图片缩放效果

下载网页中的m3u8并转换为mp4格式
ffmpeg -i http://12571208ud.com/0ef121cdvodtransgzp1257120875/3055695e5285890780828799271/v.f230.m3u8 -c copy  your.mp4
裁剪视频
ffmpeg -i input.mp4 -filter:v "crop=w:h:x:y" output.mp4

-filter:v – 表示视频过滤器。

crop – 表示裁剪过滤器。

w – 我们想自源视频中裁剪的矩形的宽度。

h – 矩形的高度。

x – 我们想自源视频中裁剪的矩形的 x 坐标 。

y – 矩形的 y 坐标。

添加视频封面图片
ffmpeg -i 1.mp4 -i F:\ffmpeg\cover.png -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic -vcodec copy -acodec copy 666.mp4
批量添加视频封面图片
for %%a in ("*.mp4") do ffmpeg -i "%%a" -i F:\ffmpeg\cover.png -map 0 -map 1 -c copy -c:v:1 png -disposition:v:1 attached_pic "new\%%~na.mp4"

pause

#新建文本文档复制粘贴上面指令并另存为.bat 批处理文件,(“*.mp4”)表示过滤当前文件夹内的mp4文件,”new%%~na.mp4”表示处理好的文件输出到当前目录下的new文件夹里面并以原来的文件名称命名 注意:添加视频封面需要最后才添加,不然先做视频封面再添加图片水印之类的,封面会消失

同时添加水印跟封面图片
ffmpeg -hide_banner -i 222.mp4 -i F:\ffmpeg\sy.png -i F:\ffmpeg\cover.png -filter_complex [1]scale=200:200[wm];[0][wm]"overlay='main_w-overlay_w-10:main_h-overlay_h-10':enable='between(t,5,15)'[wm]" -map "[wm]" -map 2 -c:v:1 -c:a:1 png -disposition:v:1 attached_pic 6616.mp4

#以上代码合成后会没声音

视频添加备注信息
ffmpeg -i 30秒.mp4 -metadata comment="这是一个备注说明" -vcodec copy -acodec copy output.mp4 -y

#添加视频的备注信息并保持原来的音视频质量输出

录制屏幕
ffmpeg -f gdigrab -i desktop -f dshow -i audio="virtual-audio-capturer" test.mp4

#录制屏幕和系统声音,命令行输入q停止录制

查看系统设备
ffmpeg -list_devices true -f dshow -i dummy

微信二维码

微信支付

支付宝二维码

支付宝支付

“文章不错,请博主喝咖啡☕️”