{
  "runId": "mp4-to-midi-extract-20261024",
  "date": "2026-10-24",
  "timezone": "Asia/Shanghai",
  "site": "https://mp3tomidiflow.com/",
  "pipeline": "MP4/MOV \u2192 FFmpeg wasm in browser (-vn, mono, 22050 Hz, f32le) \u2192 Basic Pitch \u2192 .mid",
  "ffmpeg_args_match_app_js": [
    "-i",
    "INPUT",
    "-t",
    "180.1",
    "-vn",
    "-ac",
    "1",
    "-ar",
    "22050",
    "-f",
    "f32le",
    "out.raw"
  ],
  "machine": "box local ffmpeg 7.1.5 (same CLI args as site app.js FFmpeg path; browser timing differs)",
  "source_melody": {
    "notes": [
      "C4 (MIDI 60)",
      "E4 (MIDI 64)",
      "G4 (MIDI 67)",
      "C5 (MIDI 72)"
    ],
    "duration_seconds": 4,
    "known_live_wav_midi": "same-melody-wav-result.mid (4 notes, from live site conversion of source-melody.wav on 2026-09-30)"
  },
  "extracts": [
    {
      "label": "H.264 + AAC in MP4",
      "file": "melody-h264-aac.mp4",
      "container": "MP4",
      "video_codec": "H.264",
      "audio_codec": "AAC",
      "file_bytes": 59868,
      "extract_seconds": 0.07,
      "raw_pcm_bytes": 354304,
      "pcm_duration_seconds": 4.017,
      "rms": 0.1744979,
      "ffmpeg_rc": 0,
      "notes": "Typical phone/camera export shape"
    },
    {
      "label": "MP3 audio only in MP4 container",
      "file": "melody-mp3-in-mp4.mp4",
      "container": "MP4",
      "video_codec": null,
      "audio_codec": "MP3",
      "file_bytes": 33765,
      "extract_seconds": 0.063,
      "raw_pcm_bytes": 354912,
      "pcm_duration_seconds": 4.024,
      "rms": 0.1653319,
      "ffmpeg_rc": 0,
      "notes": "Extension says .mp4; only audio stream is MP3"
    },
    {
      "label": "M4A (AAC, no video)",
      "file": "melody.m4a",
      "container": "M4A/MP4 family",
      "video_codec": null,
      "audio_codec": "AAC",
      "file_bytes": 52870,
      "extract_seconds": 0.069,
      "raw_pcm_bytes": 354304,
      "pcm_duration_seconds": 4.017,
      "rms": 0.1744979,
      "ffmpeg_rc": 0,
      "notes": "Same AAC codec as the H.264+AAC file, no video track"
    },
    {
      "label": "Source WAV (PCM)",
      "file": "source-melody.wav",
      "container": "WAV",
      "video_codec": null,
      "audio_codec": "pcm_s16le",
      "file_bytes": 352844,
      "extract_seconds": 0.103,
      "raw_pcm_bytes": 352800,
      "pcm_duration_seconds": 4.0,
      "rms": 0.1745417,
      "ffmpeg_rc": 0,
      "notes": "Same four-note melody used in the 2026-09-30 live WAV\u2192MIDI test"
    },
    {
      "label": "Video only, no audio stream",
      "file": "video-only-no-audio.mp4",
      "container": "MP4",
      "video_codec": "H.264",
      "audio_codec": null,
      "file_bytes": 5043,
      "extract_seconds": 0.059,
      "raw_pcm_bytes": 0,
      "pcm_duration_seconds": 0,
      "rms": 0,
      "ffmpeg_rc": 234,
      "notes": "ffmpeg: Output file does not contain any stream; tool would report decode failure"
    },
    {
      "label": "Video + silent AAC",
      "file": "video-with-silent-aac.mp4",
      "container": "MP4",
      "video_codec": "H.264",
      "audio_codec": "AAC (silent)",
      "file_bytes": 9213,
      "extract_seconds": 0.067,
      "raw_pcm_bytes": 354304,
      "pcm_duration_seconds": 4.017,
      "rms": 0.0,
      "ffmpeg_rc": 0,
      "notes": "Decode succeeds; RMS 0 \u2192 tool silent gate (threshold ~1e-5) rejects before note detection"
    }
  ],
  "files": {
    "melody-h264-aac.mp4": {
      "bytes": 59868,
      "sha256": "c4bf620b3ec033b89b94a114ea1720b41379c180c62f70c94350a5e12f54b567"
    },
    "melody-mp3-in-mp4.mp4": {
      "bytes": 33765,
      "sha256": "eb19cd8e5a32dc186e1b861379924aacb3198fee2f40cb9fdd9a884d7ded3dfc"
    },
    "video-only-no-audio.mp4": {
      "bytes": 5043,
      "sha256": "504a01d2bfb0718f3219cbf09edc8992981b44bb2378717a8e4b7cb27d186b7b"
    },
    "video-with-silent-aac.mp4": {
      "bytes": 9213,
      "sha256": "1e18e74008b38238e24a51382ede9a52f12f676547825b4edf703ed3733dc754"
    },
    "melody.m4a": {
      "bytes": 52870,
      "sha256": "ed2c763c410d951f26abf8a5c98bb638a47f46a322f26ba90c69e448cf064b26"
    },
    "extracted-from-h264-aac.wav": {
      "bytes": 177230,
      "sha256": "d3167baf91e95d6d5b3e47685e5c19a494bdc107fdcdb5eb3e696f0f4935406c"
    },
    "extracted-from-mp3-in-mp4.wav": {
      "bytes": 177534,
      "sha256": "55e2e15eb1e14b868400171fed367e9189e6532d3298f1b6ee17253e0a63c328"
    },
    "same-melody-wav-result.mid": {
      "bytes": 72,
      "sha256": "9e1e4d39632ebc1b0e37374387fe8f738e6aeb47ba549f86138274587b5dd3f0"
    },
    "source-melody.wav": {
      "bytes": 352844,
      "sha256": "7bb14447b510e2882f0d99bf419f44814e718ef01ec5ec8b1d2a180afacefa84"
    }
  },
  "scope": "Measured extract sizes, codecs, wall times and RMS only. No new accuracy percentage invented. After successful extract the note model is the same Basic Pitch path as WAV/MP3."
}
