ffmpeg常用命令大全
一、视频处理
1.视频剪辑
ffmpeg -i input.mp4 -ss 00:00:10 -t 00:00:30 -c copy output.mp4
这里的参数解释如下:
-i input.mp4
指定输入文件。
-ss 00:00:10
开始时间为10秒。
-t 00:00:30
剪辑时长为30秒。
-c copy
拷贝编码以避免重编码,加快处理速度。
output.mp4
是输出文件的名称。
2.视频合并
要使用FFmpeg合并视频,可以使用concat过滤器。首先,你需要创建一个文本文件,列出要合并的视频文件的路径,每行一个。例如,文件input.txt可能如下所示:
file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'
然后,你可以使用以下FFmpeg命令合并这些视频:
ffmpeg -f concat -i input.txt -c copy output.mp4
这条命令会将input.txt文件中列出的所有视频合并成一个名为output.mp4的新文件。选项-c copy表示复制编码信息,以避免重新编码视频,从而节省时间和资源。
如果视频有不同的编码或者格式,你可能需要使用-c:v libx264(或其他适合输出的编码器)来确保输出文件的兼容性。
二、音视频处理
1.合并视频和音频(保留原视频声音)
ffmpeg -i input_video.mp4 -i input_audio.mp3 -c:v copy -c:a aac -strict experimental output_video.mp4
这里的参数解释如下:
-i input_video.mp4
: 输入视频文件。
-i input_audio.mp3
: 输入音频文件。
-c:v copy
: 视频流不进行编码,直接复制。
-c:a aac
: 将音频流编码为AAC格式。
-strict experimental
: 设置为实验性模式,以支持不标准的编码设置。
output_video.mp4
: 输出文件的名称。
2.合并视频和音频(不保留原视频声音)
ffmpeg -i input_video.mp4 -i new_audio.aac -c:v copy -map 0:v:0 -map 1:a:0 output_final_video.mp4
在这个命令中:
-i input_video.mp4
是你的原始视频文件。
-i new_audio.aac
是你要添加的新音频文件。
-c:v copy
表示视频流将被直接复制而不进行重新编码。
-map 0:v:0
选择第一个输入(这里是 input_video.mp4)的第一个视频流。
-map 1:a:0
选择第二个输入(这里是 new_audio.aac)的第一个音频流。
3.视频中提取音频文件
从视频中提取音频并保存为MP3格式。
ffmpeg -i input_video.mp4 -vn -acodec copy output_audio.mp3
这里的参数解释如下:
-i input_video.mp4
指定输入视频文件。
-vn
表示“无视频”,用于禁止输出视频。
-acodec copy
指示FFmpeg复制音频编解码器信息,这里如果是提取并保存为MP3格式,则不需要重新编码。
output_audio.mp3
是输出的音频文件。
4.从视频中移除原有声音
ffmpeg -i input_video.mp4 -c:v copy -an output_silent_video.mp4
这里的 -an
参数表示不处理音频流,从而创建了一个没有音频的输出视频文件output_silent_video.mp4。
三、视频参数转换
1.视频格式转换
将MP4视频转换为AVI格式。
ffmpeg -i input_video.mp4 output_video.avi
-i input_video.mp4
是源视频文件
output_video.avi
是要转换成的目标视频格式。
如果需要转换视频编码格式或者调整视频质量,可以指定特定的编解码器和参数,例如将H.264编码器用于MP4容器:
ffmpeg -i input.mp4 -codec: video libx264 -crf 20 output.mp4
-codec: video libx264
设置视频编解码器为H.264
-crf
后跟着一个常量质量评分(Constant Rate Factor, CRF),范围从0(无损)到51(最糟),通常使用18到28之间的值。
2.改变视频分辨率
将视频分辨率更改为1920x1080大小。
ffmpeg -i input.mp4 -s 1920x1080 output.mp4
3.压缩视频命令
ffmpeg -i input.mp4 -s 1280x720 -c:v libx264 -crf 24 output.mp4
这里的参数解释如下:
-i input.mp4
:指定输入文件为input.mp4。
-s 1280x720
:设置视频的分辨率为1280x720像素。
-c:v libx264
:指定视频编码器为libx264,这是一个广泛使用的H.264编码器。
-crf 24
:设置CRF(Constant Rate Factor)值为24。CRF是一个影响视频质量和文件大小的参数,值越低,视频质量越好,但文件大小也越大。
output.mp4
:指定输出文件名为output.mp4。
四、视频和字幕、水印
1.合并视频和字幕文件(硬编码)
ffmpeg -i input.mp4 -vf subtitles=input.srt output_hardcoded.mp4
这里的参数解释如下:
-i input.mp4
:指定输入文件为input.mp4,即要处理的视频文件。
-vf subtitles=input.srt
:使用视频过滤器(-vf)将input.srt字幕文件硬编码到视频中。subtitles过滤器用于处理字幕,它可以将字幕文件的内容渲染到视频帧上。
output_hardcoded.mp4
:指定输出文件名为output_hardcoded.mp4,即处理后的视频文件,其中包含了硬编码的字幕。
2.视频和水印
要在视频中使用FFmpeg添加水印,可以使用drawtext滤镜。以下是一个基本的命令行示例,它将在视频上添加一个文本水印:
ffmpeg -i input.mp4 -vf "drawtext=text='Watermark Text':fontsize=24:fontcolor=white:x=10:y=10" -codec:a copy output.mp4
这里的参数解释如下:
-i input.mp4
指定输入视频文件。
-vf
表示视频滤镜,后面跟着 drawtext 滤镜的参数。
text='Watermark Text'
是水印的文本内容。
fontsize=24
设置字体大小。
fontcolor=white
设置字体颜色。
x=10 和 y=10
分别表示水印文本在视频画面上的横纵坐标位置。
-codec:a copy
表示复制原视频的音频流。
output.mp4
是输出文件的名称。