diff --git a/internal/engine/transcoder.go b/internal/engine/transcoder.go index 6bd613e..5a1fff2 100644 --- a/internal/engine/transcoder.go +++ b/internal/engine/transcoder.go @@ -302,8 +302,16 @@ func buildFFmpegArgs(filePath string, opts TranscodeOpts) []string { // until the whole mdat lands and playback never starts. // * negative_cts_offsets: lets b-frames carry the right pts/dts so // decoders don't reset the playhead to 0 every fragment. + // * delay_moov: a re-encoded AAC track starts with a negative dts (the + // encoder priming/delay). With empty_moov the moov is written up front, + // BEFORE that delay is known, so the first fragment is malformed and a + // strict demuxer (Safari, and any browser the way Apple decodes HEVC) + // never initialises playback — the