
OpenMontage 的 FFmpeg 视频处理全流程剪切、混音、质检 7 步交付指南【免费下载链接】OpenMontageWorlds first open-source, agentic video production system. 12 production pipelines, 100 tools, 700 agent skill and production-knowledge files. Turn your AI coding assistant into a full video production studio.项目地址: https://gitcode.com/GitHub_Trending/op/OpenMontageOpenMontage 是一个开源的 Agent 视频生产系统把 AI 编程助手变成完整的视频工作室。它的 FFmpeg 视频处理层负责剪切、拼接、混音、字幕烧录与响度归一化等全部确定性环节。如果你刚接触这个项目读完这篇就知道每一步该调哪个工具、参数怎么填。FFmpeg 的分工边界哪些活归它干先把边界划清需要 AI 推理的事文生图、文生视频、人脸修复、超分辨率走各自的模型工具链凡是结果确定、不依赖推理的活——剪辑、变速、拼接、混音、字幕烧录、调色、音频降噪——全部由 FFmpeg 承担。项目里这些能力以工具形式注册provider 统一标记为ffmpeg只依赖系统命令行的 FFmpeg 即可运行Linux 用sudo apt install ffmpegmacOS 用brew install ffmpeg。7 个工具按三条轨道归类与其按核心/增强分层不如按你操作时的三条轨道来记️视频轨video_trimmer剪切、变速、拼接、video_compose完整合成切段字幕叠加编码、face_enhance肤质平滑/锐化、color_grade电影感调色音频轨audio_mixer混音、ducking、提取音频、audio_enhance降噪、响度归一化、EQ质检轨frame_sampler从视频抽代表帧供人眼复核或喂给 AI 分析工具下面按一条真实生产线的顺序推进。第 1 步剪切——无损拷贝 vs 重编码怎么选先给结论不改帧就拷贝改帧才重编码。video_trimmer的cut操作里codec默认就是copy-c copy瞬时完成、零画质损失。但代价是剪切只能对齐到关键帧keyframe视频流中可独立解码的帧。素材的关键帧稀疏时Pexels 免费素材和 AI 生成片段常见拷出来的片段会比目标时长明显偏长。所以有两个地方必须重编码一是video_compose生成每个 cut 片段时强制用-ss in -t duration加 libx264 重编码换取帧级精确的剪切边界二是任何套了滤镜变速、字幕、叠加、缩放的输出。CRF 值控制压缩质量越小越清晰的取舍中间过程用默认 23输出接近最终交付时降到 18~20video_trimmer的 schema 里codec参数不填就是copy填了具体编码器则自动配 AAC 音频。第 2 步拼接——先归一化再 concatconcat demuxerFFmpeg 的列表式拼接器-f concat -safe 0加一份文件清单要求所有片段流布局完全一致否则报 Non-monotonous DTS 或静默产出损坏文件。所以video_compose的工程做法是每个片段先归一化再走流拷贝拼接——统一缩放到 1920x108030fps、像素格式 yuv420p、setsar1方形像素有音轨的转 AAC 48kHz 立体声。最容易踩的坑很多 Pexels 素材根本没有音轨。工具会用ffprobe探测音轨是否存在缺失的片段注入anullsrc静音立体声轨保证所有片段同构。同编码、同规格的纯剪切拼接才适合直接-c copy混合编码或分辨率不同的素材一律先全部重编码。第 3 步变速——视频和音频必须成对改变速要同时动两条流视频用setpts把呈现时间戳乘以速度的倒数音频用atempo但它只接受 0.5~100 的区间。为了覆盖speed_factor0.1~100 的完整取值_build_atempo_chain会把极端倍速拆成多个atempo100.0或atempo0.5链式串联再用一个atempo剩余值收尾。两边倍率不一致音画立刻脱节——所以这个操作无条件走 libx264 重编码。第 4 步字幕烧录——4 个坑简单词级字幕优先用 SRT。仓库的 tools/subtitle/subtitle_gen.py 可生成 SRT/VTT/JSON 三种格式默认每条字幕 8 词内、每行 42 字符内与 FFmpeg 烧录链路直接衔接。ASS 颜色必须写完整格式。force_style里的颜色是H00FFFFFFAABBGGRR 四段含透明度写成HFFFFFF会解析错误。Windows 路径必须转义。C:要写成C\:反斜杠统一换成正斜杠否则 subtitles 滤镜把路径当滤镜语法解析。竖横屏参数分开定。竖屏9:16字号小、词少、底边距大font_size: 18、每条约 3 词、margin_v: 50横屏16:9font_size: 22、每条约 6 词、margin_v: 40。目的都是让字幕落在画面底部 20% 区域、不压脸。样式本身有四层优先级显式subtitle_style 剪辑决策里的 style playbook 的排版设定 内置默认避免所有片子都长成同一个白色 Arial 粗体。第 5 步增强——顺序比单效果更重要多个增强滤镜叠加时顺序错了会互相干扰固定次序是字幕先行——烧录会改变画面像素必须最先做人脸增强——face_enhance的平滑/锐化在未调色素材上效果最佳默认预设talking_head_standard调色——color_grade对全片做最终定调若先调色再修脸会把色调固化进皮肤音频增强——独立于视频最后单独处理每步都可跳过工具不可用时优雅降级。调色的intensity本质是调色结果与原片的混合不透明度画面被 split 成两路一路过 profile 滤镜再用 blend 按 opacity 叠回原片。所以 0.85 就是 85% 的调色效果。推荐值0.85 是人物口播配cinematic_warm的稳妥默认0.5 微妙到几乎不可察觉1.0 全效部分素材会显过加工味。内置 7 个 profilecinematic_warm、cinematic_cool、moody_dark等也支持.cubeLUT。CRF 上增强层默认 20比核心层的 23 高一档因为增强结果通常就是交付物。第 6 步音频——ducking 与平台响度目标背景音乐压人声用sidechaincompress以语音为 key signal。audio_mixer的duck操作内置参数threshold0.02、ratio9、attack200ms、release500ms。duck_level默认 -12dB内部换算成线性比例约 0.25再写入音乐音量{operation: duck, primary_audio: speech.mp3, secondary_audio: music.mp3, duck_level: -12}响度归一化用 loudnorm 滤镜标准链是loudnormI-14:LRA11:TP-1.5——I 是集成响度目标LRA 是响度范围TP 是真实峰值上限-1.5 防削波。注意 I 值必须跟投放平台走平台目标响度响度范围社交媒体TikTok/Reels-14 LUFS5~7 LUYouTube-14 ~ -16 LUFS7~11 LU播客-16 LUFS7~11 LU广播电视-24 LUFS7 LUaudio_mixer的loudnorm_target参数合法范围 -40~0默认 -16就是干这个的投 YouTube/TikTok 时传 -14。audio_enhance的clean_speech预设锁定 I-16、LRA11适合 YouTube 和社媒口播。full_mix则能在一次调用里完成多层旁白音乐 ducking归一化并用target_duration把音轨精确对齐成片时长。第 7 步质检——抽帧四种策略 交付检查项frame_sampler是质检的眼睛四种策略各有所长interval每 N 秒一帧默认 5 秒实现是-vf fps1/Ncount均匀抽 N 帧默认 10先 ffprobe 取时长再算间隔timestamps指定精确时间戳每个时间戳单独取 1 帧scene_guided配合 tools/analysis/scene_detect.py 的镜头边界每场景取首帧偏移 0.1 秒避开黑帧超过 3 秒的场景再加一帧中点——以有界的帧数覆盖全部视觉转场输出支持 png/jpgquality取值 1~31越小越清晰默认 2max_frames默认 20。交付前逐条过检查项桌面端和移动端播放无瑕疵处理后音画同步字幕在画面底部 20% 且不遮脸响度落在目标平台范围内增强可见但自然、肤色不发橙剪切点无音频削波或静音空隙文件大小对目标平台合理。参数速查参数取值说明speed_factor0.1 ~ 100.0变速倍率内部 atempo 合法区间 0.5~100CRF核心 23 / 增强 20 / 交付 18~20越小质量越高codec默认copy拷贝免重编码改帧必须重编码duck_level默认 -12dB≈0.25 线性语音时音乐衰减量duckingthreshold0.02, ratio9, attack200ms, release500mssidechain 参数loudnormI-16, LRA11, TP-1.5默认链I 按平台改社媒 -14 / YouTube -14~-16 / 播客 -16 / 广电 -24字幕·竖屏font_size 18 / 约 3 词 / margin_v 50横屏 22 / 约 6 词 / margin_v 40调色 intensity0.85 / 0.5 / 1.0与原片混合比例抽帧 quality1~31默认 2仅 jpg 生效max_frames默认 20scene_guided 帧数上限平台规格youtube_landscape 1920x108030fps crf18tiktok 1080x1920 竖屏 crf20cinematic 2560x108024fps crf16lib/media_profiles.py 内置 9 个 profilecompose 时传profile即按规格出片资源导航技能文档skills/core/ffmpeg.md、skills/core/color-grading.md、skills/core/subtitle-sync.md核心实现tools/video/video_trimmer.py、tools/video/video_compose.py、tools/audio/audio_mixer.py、tools/analysis/frame_sampler.py增强实现tools/enhancement/face_enhance.py、tools/enhancement/color_grade.py、tools/audio/audio_enhance.py平台规格与字幕生成lib/media_profiles.py、tools/subtitle/subtitle_gen.py测试佐证tests/tools/test_audio_mixer_ducking.py、tests/qa/test_05_video_compose.py【免费下载链接】OpenMontageWorlds first open-source, agentic video production system. 12 production pipelines, 100 tools, 700 agent skill and production-knowledge files. Turn your AI coding assistant into a full video production studio.项目地址: https://gitcode.com/GitHub_Trending/op/OpenMontage创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考