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 是输出文件的名称。

相关推荐
因我你好久不见14 小时前
springboot java ffmpeg 视频压缩、提取视频帧图片、获取视频分辨率
java·spring boot·ffmpeg
cuijiecheng20181 天前
音视频入门基础:MPEG2-TS专题(21)——FFmpeg源码中,获取TS流的视频信息的实现
ffmpeg·音视频
cuijiecheng20181 天前
音视频入门基础:AAC专题(13)——FFmpeg源码中,获取ADTS格式的AAC裸流音频信息的实现
ffmpeg·音视频·aac
流氓也是种气质 _Cookie1 天前
uniapp blob格式转换为video .mp4文件使用ffmpeg工具
ffmpeg·uni-app
网络安全queen2 天前
网络安全-企业环境渗透2-wordpress任意文件读&&FFmpeg任意文件读
安全·web安全·ffmpeg
yerennuo2 天前
FFmpeg库之ffmpeg
qt·ffmpeg
韩曙亮2 天前
【FFmpeg】解封装 ① ( 封装与解封装流程 | 解封装函数简介 | 查找码流标号和码流参数信息 | 使用 MediaInfo 分析视频文件 )
ffmpeg·音视频·视频流·mediainfo·解封装·码流
yerennuo2 天前
FFmpeg 框架简介和文件解复用
ffmpeg
悠着,大嘟嘟2 天前
FFmpeg 视频解码详解
ffmpeg·音视频
小白旗2 天前
ffmpeg翻页转场动效的安装及使用
ffmpeg·gl-transition·xfade·转场动效