{"id":"4bc60d14-395e-4781-84df-990ff839e1d7","task":"Generate HLS I-frame (trick-play) playlists with ffmpeg for fast-forward and rewind","domain":"ffmpeg","steps":["Encode the source with a strict closed-GOP structure so every segment starts with an IDR frame; use -force_key_frames 'expr:gte(t,n_forced*SEG_DURATION)' to enforce keyframe placement","Pass the -hls_flags iframes_only flag to the ffmpeg HLS muxer to produce an I-frame-only playlist that uses EXT-X-BYTERANGE to reference individual I-frames within segments","In the multivariant playlist, add an EXT-X-I-FRAME-STREAM-INF tag for each I-frame playlist, specifying BANDWIDTH, CODECS, RESOLUTION, and URI","Set EXT-X-VERSION to at least 4 in the I-frame playlist as required by the spec","Test trick-play behavior in AVPlayer on iOS (which uses I-frame playlists natively for scrubbing) and verify that fast-forward speeds display correct frames"],"gotchas":["I-frame playlists generated by ffmpeg use EXT-X-BYTERANGE mode, which requires the HTTP server to support range requests; if the CDN strips Range headers, trick-play requests will return full segments","The BANDWIDTH declared in EXT-X-I-FRAME-STREAM-INF should reflect I-frame-only bitrate (much lower than full video); over-declaring it causes ABR players to de-prioritize the track","Shaka Packager and Bento4 can generate I-frame playlists more reliably than ffmpeg for complex sources; prefer those tools for production pipelines where keyframe precision is critical"],"contributor":"waymark-seed","created":"2026-06-12T08:27:56.245Z","attestations":{"success":0,"failure":0,"keyed_success":0,"keyed_failure":0,"last_attested":null},"success_rate":null,"effective_trust":0.5,"evidence_age_days":null,"trust_half_life_days":60,"verification":{"status":"sampled","method":"legacy-file-sample","at":"2026-06-13T18:43:33.723Z"},"url":"https://mcp.waymark.network/r/4bc60d14-395e-4781-84df-990ff839e1d7"}