ffmpeg常用命令大全

一、视频处理

1.视频剪辑

bash 复制代码
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可能如下所示:

bash 复制代码
file 'video1.mp4'
file 'video2.mp4'
file 'video3.mp4'

然后,你可以使用以下FFmpeg命令合并这些视频:

bash 复制代码
ffmpeg -f concat -i input.txt -c copy output.mp4

这条命令会将input.txt文件中列出的所有视频合并成一个名为output.mp4的新文件。选项-c copy表示复制编码信息,以避免重新编码视频,从而节省时间和资源。

如果视频有不同的编码或者格式,你可能需要使用-c:v libx264(或其他适合输出的编码器)来确保输出文件的兼容性。

二、音视频处理

1.合并视频和音频(保留原视频声音)

bash 复制代码
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.合并视频和音频(不保留原视频声音)

bash 复制代码
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格式。

bash 复制代码
ffmpeg -i input_video.mp4 -vn -acodec copy output_audio.mp3

这里的参数解释如下:

-i input_video.mp4 指定输入视频文件。

-vn 表示"无视频",用于禁止输出视频。

-acodec copy 指示FFmpeg复制音频编解码器信息,这里如果是提取并保存为MP3格式,则不需要重新编码。

output_audio.mp3 是输出的音频文件。

4.从视频中移除原有声音

bash 复制代码
ffmpeg -i input_video.mp4 -c:v copy -an output_silent_video.mp4

这里的 -an 参数表示不处理音频流,从而创建了一个没有音频的输出视频文件output_silent_video.mp4。

三、视频参数转换

1.视频格式转换

将MP4视频转换为AVI格式。

bash 复制代码
ffmpeg -i input_video.mp4 output_video.avi

-i input_video.mp4 是源视频文件

output_video.avi 是要转换成的目标视频格式。

如果需要转换视频编码格式或者调整视频质量,可以指定特定的编解码器和参数,例如将H.264编码器用于MP4容器:

bash 复制代码
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大小。

bash 复制代码
ffmpeg -i input.mp4 -s 1920x1080 output.mp4

3.压缩视频命令

bash 复制代码
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.合并视频和字幕文件(硬编码)

bash 复制代码
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滤镜。以下是一个基本的命令行示例,它将在视频上添加一个文本水印:

bash 复制代码
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 是输出文件的名称。

相关推荐
橘子味的茶二17 小时前
ffmpeg内存模型
ffmpeg
TPCloud17 小时前
windows 11编译安装ffmpeg(包含ffplay)
windows·ffmpeg·源码安装·mysys
runing_an_min1 天前
ffmpeg视频滤镜:缓入缓出-fade
ffmpeg·音视频·fade·缓出·缓入
ssslar2 天前
FFMPEG录屏(22)--- Linux 下基于X11枚举所有显示屏,并获取大小和截图等信息
linux·运维·ffmpeg
MonkeyKing_sunyuhua2 天前
FFmpeg 怎么裁剪m4a的音频,从一个时间点开始,裁剪15秒钟的视频
ffmpeg·音视频
DO_Community2 天前
教程:FFmpeg结合GPU实现720p至4K视频转换
ffmpeg·音视频
x66ccff2 天前
使用NVIDIA GPU加速FFmpeg视频压制:完全指南
ffmpeg·音视频
冷眼Σ(-᷅_-᷄๑)3 天前
如何使用ffmpeg命令行进行录屏
ffmpeg
Lary_Rock3 天前
ubuntu22.04 安装ffmpeg
ffmpeg
m0_623171553 天前
Windows搭建流媒体服务并使用ffmpeg推流播放rtsp和rtmp流
windows·ffmpeg