03:00:00省 50%领取

实操配方

区分无音轨与静音,并验收 AAC 导出

确认必需音轨确实存在且经过 AAC 转码仍可解码。样本数与 RMS 数值检查不等于听音、清晰度或音质评审。

附实际运行过的本地样例、脚本和回执;不代表已调用视频生成服务。

原创任务专用本地夹具示意图
原创合成纯音、静音 WAV,本地封装转码媒体与三状态音频图;没有声称听音或模型音频生成。

01准备环境与输入

  1. 准备 Node.js 与支持 AAC 的 FFmpeg,必要时设置 FFMPEG_BIN;不下载外部音乐或语音。
  2. 辨认三类输入:原创 440Hz 正弦 WAV、数字静音 WAV,以及一秒无音轨视频。静音 WAV 有 16000 个零样本;无音轨文件根本没有可映射的音频流。
  3. 选用全新输出目录,并保留记录首跑的 initial-failed-run.json。修正版流复制不使用 -shortest,实际保留十帧视频。

02执行配方

运行命令

node run-recipe.mjs --out ./my-run
  1. 创建三种不同的音频状态

    脚本直接用 Node Buffer 写出 WAV 头部和 PCM 样本,再分别把纯音与静音封装进原创视频。存在但样本为零的音轨,与文件里没有音轨,是两个不同条件。

  2. 显式要求映射音轨

    导出 aac-export.mp4 时明确映射 0:v:0、0:a:0,视频复制,音频以 AAC 64kbit/s 编码。无音轨夹具应让必需映射失败,不用可选映射掩盖缺失。

  3. 解码样本并测量能量

    将 AAC 解码为单声道 16kHz、16位有符号 PCM。本次返回 16384 样本,合成纯音 RMS 为 0.1391365。计数允许有限 AAC 填充,不把带填充的原始样本直接称为精确播放时长。

  4. 分开验收编码、静音与视频

    实际检查日志显示 Audio: aac;视频仍完整解码十帧,静音轨样本值全部为零。首跑曾因 -shortest 截早,失败回执已保留;修正脚本后七项检查全部通过。

03检查结果

  • 导出音轨能明确映射并解码为非空、偶数字节的16位 PCM。
  • AAC 解码样本在 16000 至 17024 之间,本次为 16384。
  • 原创正弦解码 RMS 在 0.1 至 0.2 之间,本次为 0.1391365。
  • 实际 FFmpeg 日志明确标识音频编码为 AAC。
  • 导出视频仍有十帧完整的 320×180 画面。
  • 存在的静音轨解码为零值,无音轨明确映射失败;七项检查通过。

04排错与交付

声称是静音文件,却提示没有音轨。

只检查必需的音轨映射;静音波形也必须有实际音频流,可改用配套 silent-track 夹具验证该条件。

解码样本数略多于一秒。

固定输出 16kHz,对照有限 AAC 填充范围,不把所有填充样本都写成精确显示时长。

封装后复制的视频提前结束。

在等时长夹具流复制中只移除 -shortest,再核对十帧完整性;初次失败回执保留了这个真实问题。

保留音轨日志与数值样本检查,编辑交付前另行听音并检查同步。本配方没有完成这两种人工评审。

05下载脚本与样例