使用FFmpeg 做混剪软件的命令解释
2025-07-16 19:31:07 7 分享链接 开发笔记 ffmpeg
ffmpeg -f concat -safe 0 -i videos_to_concat.txt -i D:/XiaoShuo/0007.东宫岁月/start/0007.mp3 -i D:/XiaoShuo/0007.东宫岁月/bgm/001.mp3 -filter_complex [1:a]volume=1.5[a1];[2:a]volume=0,atrim=end=894.816,asetpts=PTS-STARTPTS[a2];[a1][a2]amix=inputs=2:duration=first[aout] -map 0:v -map [aout] -cq 18 -gpu 0 -vf scale=1080:1920,subtitles=D\\:/XiaoShuo/0007.东宫岁月/start/0007.srt:original_size=1080x1920:fontsdir=D\\:/DevPythons/mixedEditor/font:force_style='FontName=HelloFont ID JiangHuTi,FontSize=7,PrimaryColour=&H00FFFFFF,Spacing=1,Outline=0.5,OutlineColour=&H10000000,BorderStyle=0,BackColour=&H80000000,Shadow=0,Alignment=2,MarginV=210' -c:v h264_nvenc -b:v 12M -r 60 -c:a aac -b:a 128k -t 894.816 -preset medium -y D:/XiaoShuo/0007.东宫岁月/start/0007.mp4
以下是对这个 FFmpeg 命令中各个参数的详细解释:
输入相关参数
ffmpeg -f concat -safe 0 -i videos_to_concat.txt -i D:/XiaoShuo/0007.东宫岁月/start/0007.mp3 -i D:/XiaoShuo/0007.东宫岁月/bgm/001.mp3
-f concat
:指定输入文件的格式为拼接列表。concat
格式允许你通过一个文本文件来指定多个视频文件,以便将它们按顺序拼接在一起。-safe 0
:禁用安全模式。在使用concat
格式时,默认情况下 FFmpeg 会检查文件路径是否为相对路径,以防止潜在的安全风险。设置为0
则允许使用绝对路径。-i videos_to_concat.txt
:指定拼接列表文件的路径。该文件包含了要拼接的视频文件的路径列表。-i D:/XiaoShuo/0007.东宫岁月/start/0007.mp3
:指定第一个音频文件的路径,这个音频文件将作为主音频。-i D:/XiaoShuo/0007.东宫岁月/bgm/001.mp3
:指定第二个音频文件的路径,这个音频文件将作为背景音乐(BGM)。
音频处理参数
-filter_complex [1:a]volume=1.5[a1];[2:a]volume=0,atrim=end=894.816,asetpts=PTS-STARTPTS[a2];[a1][a2]amix=inputs=2:duration=first[aout]
-filter_complex
:用于指定复杂的音频和视频滤镜图。这里使用了多个滤镜来处理音频。[1:a]volume=1.5[a1]
:对第二个输入文件(索引为1
)的音频流应用volume
滤镜,将音量放大到原来的1.5
倍,并将处理后的音频流命名为[a1]
。[2:a]volume=0,atrim=end=894.816,asetpts=PTS-STARTPTS[a2]
:对第三个输入文件(索引为2
)的音频流进行处理。首先将音量设置为0
,然后使用atrim
滤镜将音频时长裁剪到894.816
秒,最后使用asetpts
滤镜重置时间戳,并将处理后的音频流命名为[a2]
。[a1][a2]amix=inputs=2:duration=first[aout]
:使用amix
滤镜将[a1]
和[a2]
两个音频流混合在一起。inputs=2
表示有两个输入音频流,duration=first
表示以第一个输入音频流(即[a1]
)的时长为准,最终输出的音频流命名为[aout]
。
映射参数
-map 0:v -map [aout]
-map 0:v
:将第一个输入文件(索引为0
)的视频流映射到输出文件中。-map [aout]
:将之前通过滤镜处理得到的音频流[aout]
映射到输出文件中。
视频编码器参数
-cq 18 -gpu 0
-cq 18
:这是h264_nvenc
编码器的参数,用于控制视频质量。cq
表示恒定质量(Constant Quality),取值范围为0-51
,较低的值表示更高的质量,但文件大小也会更大。这里设置为18
,表示较高的视频质量。-gpu 0
:显式指定使用编号为0
的 GPU 进行编码。
视频滤镜参数
-vf scale=1080:1920,subtitles=D\\:/XiaoShuo/0007.东宫岁月/start/0007.srt:original_size=1080x1920:fontsdir=D\\:/DevPythons/mixedEditor/font:force_style='FontName=HelloFont ID JiangHuTi,FontSize=7,PrimaryColour=&H00FFFFFF,Spacing=1,Outline=0.5,OutlineColour=&H10000000,BorderStyle=0,BackColour=&H80000000,Shadow=0,Alignment=2,MarginV=210'
-vf
:指定视频滤镜。这里使用了两个滤镜,用逗号分隔。scale=1080:1920
:使用scale
滤镜将视频的分辨率调整为1080x1920
。subtitles=...
:使用subtitles
滤镜将字幕文件嵌入到视频中。具体参数解释如下:D\\:/XiaoShuo/0007.东宫岁月/start/0007.srt
:指定字幕文件的路径。original_size=1080x1920
:指定视频的原始分辨率,用于字幕的定位和布局。fontsdir=D\\:/DevPythons/mixedEditor/font
:指定字体文件所在的目录。force_style=...
:指定字幕的样式,包括字体名称、字体大小、字体颜色、字符间距、描边像素、描边颜色、字幕背景框、背景框颜色、阴影偏移、字幕对齐方式和字幕垂直偏移量等。
编码参数
-c:v h264_nvenc -b:v 12M -r 60 -c:a aac -b:a 128k
-c:v h264_nvenc
:指定视频编码器为h264_nvenc
,这是 NVIDIA 的硬件编码器,可利用 GPU 进行加速编码。-b:v 12M
:指定视频的比特率为12M
,即每秒12
兆比特,用于控制视频的质量和文件大小。-r 60
:指定视频的帧率为60
帧每秒。-c:a aac
:指定音频编码器为AAC
,这是一种常用的音频编码格式。-b:a 128k
:指定音频的比特率为128k
,即每秒128
千比特。
时长和预设参数
-t 894.816 -preset medium -y
-t 894.816
:指定输出视频的时长为894.816
秒,即截取指定时长的视频。-preset medium
:指定编码的预设参数,用于控制编码速度与压缩效率的平衡。medium
表示中等速度和压缩效率。-y
:覆盖已存在的输出文件,无需用户确认。
输出文件参数
D:/XiaoShuo/0007.东宫岁月/start/0007.mp4
指定输出文件的路径和文件名,这里输出的是一个 MP4 格式的视频文件。
综上所述,这个 FFmpeg 命令的主要功能是将多个视频文件拼接在一起,同时将两个音频文件混合作为输出视频的音频流,并添加字幕和调整视频的分辨率、质量等参数,最终生成一个 MP4 格式的视频文件。
最近更新
- 2025-07-16 19:31
- 使用FFmpeg 做混剪软件的命令解释
- 2025-07-15 16:13
- 抖音直播下载的文件flv,现在用播放器播放不了的解决办法。
- 2025-07-13 16:32
- 使用OpenCV 给豆包生成的图片去除水印的命令
- 2025-07-13 15:57
- 使用FFmpeg 给豆包生成的图片去除水印的命令
- 2025-07-07 16:49
- FFmpeg 的 subtitles 滤镜 颜色编码解析
- 2025-07-07 16:41
- FFmpeg 添加黄色边框黑色自定义字体的命令说明
- 2025-07-07 15:35
- 剪映专业版的字体下载位置在哪里,剪映专业版的字体下载去哪里了?
- 2025-07-06 11:37
- 用 PYTHON 编写的一个分镜段落文本与SRT字幕合并匹配的函数实例
- 2025-07-04 18:20
- 详细列出 drawtext 滤镜在 ffmpeg7.1.1 支持的参数列表
- 2025-07-04 16:33
- windows cmd 中调用 FFmpeg 命令的注意事项