做视频压制agent的最小必要知识有哪些,列出学习清单和相关学习资源链接

做视频压制 agent,难点其实不在 agent 那层,而在转码本身 + 长任务工程管理。agent 部分会调工具、能拿 stderr 解析进度基本就够了。下面按「必须知道 → 能干活 → 能做好」分层列。 一、编码与容器基础(大概 2-3 天) 1. 分清容器和编码:MP4/MKV/MOV 是容器,H.264/HEVC/AV1/VP9 是视频编码,AAC/Opus/FLAC 是音频编码。MKV 是万能壳,几乎啥都能装。 2. 关键参数:分辨率、帧率、位深(8bit/10bit)、像素格式(yuv420p 最通用)、色域(BT.709 给 SDR,BT.2020 给 HDR)。搞混了会出「颜色发灰」或「播放器不认」的经典事故。 3. 码率控制方式:CRF(恒定质量,最常用)、CBR/VBR/ABR、Capped CRF。知道 preset 是「速度换压缩效率」、GOP 是关键帧间隔就够了。 资源:ffmpeg 官方的编码 wiki(https://trac.ffmpeg.org/wiki/Encode/H.264、/H.265、/AV1),OTTVerse(https://ottverse.com/)和 awesome.video 的 Video Encoding 101 入门系列。 二、ffmpeg / ffprobe 实操(这是核心,2-4 周) 1. 命令行基本功:-i、-c:v、-c:a、-crf、-preset、-vf、-map、-ss/-t、-movflags +faststart(这条决定网页能不能秒开播)。 2. filter graph:scale、crop、pad、fps、overlay、subtitles、concat。压制动漫常要降噪/去banding 滤镜,实拍常要锐化和去隔行。 3. ffprobe 读元数据:时长、码率、流列表、帧数。agent 必须靠它做输入校验和进度分母,不然算不出百分比。 4. 进度解析:ffmpeg 的 stderr 会打 frame=/fps=/time=/speed=,agent 抓 time 除以总时长就是进度;更规整的做法是加 -progress pipe:1 输出结构化字段。 5. 硬件编码:NVENC、QSV、VideoToolbox、AMF。快,但同码率画质不如 x264/x265,而且有并发路数限制(消费级 NVENC 曾经限制 2-3 路),做并发调度时必须知道。 6. 音频:loudnorm 两遍做 EBU R128 响度归一(第一遍测量,第二遍线性应用),这是网课/播客类压制必备。 7. 字幕:SRT 转 ASS 内嵌硬字幕要 libass + 字体文件;只想内封不动画面就用 mkvmerge。 资源:ffmpeg 官方文档 https://ffmpeg.org/documentation.html,滤镜清单 https://ffmpeg.org/ffmpeg-filters.html,硬件加速 https://trac.ffmpeg.org/wiki/HWAccelIntro,响度归一 https://github.com/slhck/ffmpeg-normalize,封装 https://mkvtoolnix.download/doc/。另外有个现成的 agent skill 可以直接看它的 recipe 组织方式:https://github.com/n0an/ffmpeg-skill 三、质量评估(能不能自动化,全看这一步) 1. PSNR/SSIM 是入门指标,真正好用是 VMAF(0-100 分,Netflix 出品,业内事实标准)。经验值:VMAF 93 以上基本肉眼无差,往下降到 80 出头开始能看出来。 2. 有了 VMAF 才能做闭环:给定质量目标,二分搜最小的 CRF/码率,也就是「按目标质量压」而不是「拍脑袋定码率」,这才是压制组和流媒体的标准玩法。 3. BD-rate 用来横向比较不同编码器(比如 AV1 比 HEVC 同画质省多少码率)。 资源:https://github.com/Netflix/vmaf (带 libvmaf 和命令行),Netflix Tech Blog 关于 VMAF 的那几篇;码率控制入门推荐读 Jan Ozer 的 https://streaminglearningcenter.com/encoding/how-to-choose-your-bitrate-control-technique.html 四、Agent 工程层(真正「agent」的部分) 1. 别只给模型一个 run_ffmpeg。拆成 probe_media、plan_encode、run_encode、verify_output 几个工具,参数 schema 用枚举和范围卡死(codec 白名单、crf 0-51),否则模型一定会编出不存在的参数。 2. 命令生成 + 校验两层:模型出参数,代码层做白名单校验,再拿 -t 5 试跑 5 秒验证,通过了才跑全片。 3. 长任务管理:一小时级的编码不能阻塞对话。要有 job 队列、状态查询、日志尾部回读,进度从 stderr 解析回传。 4. 失败恢复:幂等设计、分段编码后 concat 做断点续跑、重试策略、开工前检查磁盘空间。 5. 资源调度:并发上限、NVENC 会话数、CPU 优先级(nice/ionice)、临时文件清理。 6. 安全:千万别用 shell 字符串拼接命令,一律用 argv 数组传参,防文件名和 -vf 表达式注入。 7. 可观测:把原始命令、编码日志、VMAF 分数都落盘,出问题能复现。 五、自测集 准备 5-10 个不同来源的短片(动画、实拍、高动态、暗场各来点),跑固定回归:输出体积、VMAF、耗时、音画同步、字幕是否正常。改 prompt 或参数后重跑一遍对比。 想快点跑通最小闭环:第一周只做 ffprobe + 单条 ffmpeg 命令 + stderr 进度解析,能压完一个文件并报进度;第二周加 VMAF 验证和 job 队列;第三周再加并发调度、断点续跑和参数白名单。滤镜调优、VapourSynth 那套压制组玩法属于进阶,等闭环跑通再碰。