在 FFmpeg 中 通过 concat 合并多个文件时里要注意时间基与像素格式
2025-08-12 23:35:04 290 分享链接 开发笔记
在 FFmpeg 中,-f concat 是用于合并多个媒体文件的关键参数组合,其中:
-f是指定输入格式(format) 的参数;concat是 FFmpeg 内置的一种虚拟输入格式,专门用于按顺序拼接多个同类型的媒体文件(如多个 MP4、TS 等)。
作用原理
当使用 -f concat 时,FFmpeg 会按照特定规则读取一个文件列表(通常是 .txt 文件),并将列表中指定的媒体文件按顺序拼接成一个完整的输出文件。
这个功能的优势是:
- 支持快速拼接参数兼容的文件(如编码、分辨率、帧率等一致的视频),无需重新编码(通过
-c copy实现),速度极快; - 比直接用
-i "file1.mp4|file2.mp4"等方式兼容性更好,尤其对 MP4、MOV 等容器格式更稳定。
使用示例
首先创建一个文本文件(如
list.txt),按格式列出要合并的文件:file '001.mp4' file '002.mp4' file '003.mp4'(注意:每行必须以
file开头,文件名需用单引号/双引号包裹,路径可以是绝对路径或相对路径)执行合并命令:
ffmpeg -f concat -safe 0 -i list.txt -c copy output.mp4其中:
-safe 0允许列表中使用绝对路径(否则可能因安全限制报错);-i list.txt指定输入的文件列表;-c copy表示直接复制流(不重新编码),加速合并。
注意事项
- 使用
concat格式要求所有文件的编码、分辨率、帧率、声道数等参数尽可能一致,否则可能拼接失败或播放异常; - 若文件参数不一致,需先通过重新编码统一参数,再使用
concat合并。
综合结论
经测试一个文件有声音一个文件无声音不影响合并,但时间基不一样就会合并出错,所以先把时间基统一(60)基本于fps一致后再合并,pix_fmt这个参数也比较重要,指定视频的像素格式(yuv420p 是最通用的格式,几乎所有设备和播放器都支持)。
ffmpeg -f concat -safe 0 -i list.txt ^
-c:v libx264 -crf 23 ^
-bufsize 20M ^
-pix_fmt yuv420p ^
-video_track_timescale 60
-an ^
output_no_audio.mp4
最近更新
- 2026-03-16 18:06
- 故事文本分镜分析与拆解模板
- 2026-03-15 00:37
- 文生图提示词优化技巧:具象化描述、要有画面感
- 2026-03-12 17:04
- 除了国风动漫还有哪些常见的动漫风格适合 AI 绘画?
- 2026-03-12 16:35
- 水墨写实、水墨写意有什么区别,还有哪些水墨家族?
- 2026-03-12 16:22
- 分享5个治愈系漫剧高频场景提示词,包括(色调、光影、风格、质感)
- 2026-03-12 16:06
- 分享10个宅斗漫剧高频场景提示词,包括(色调、光影、风格、质感)
- 2026-03-12 15:56
- 分享10个古言漫剧高频场景提示词,包括(色调、光影、风格、质感)
- 2026-03-10 19:11
- 按人物主体公式写10个与李白同时期不同诗人不同环境的提示词(唯美古风)
- 2026-03-10 18:58
- 即梦唯美古风专用、可直接复制粘贴的常用词库
- 2026-03-10 18:44
- 即梦文生图提示词12套主体完整公式(全品类、无遗漏)