mirror of
https://github.com/GopeedLab/gopeed.git
synced 2026-11-05 16:15:43 +00:00
25 lines
1.3 KiB
Go
25 lines
1.3 KiB
Go
// Package hls implements native HTTP Live Streaming downloads for m3u8
|
|
// playlists. A task produces exactly one merged, playable output file:
|
|
// MPEG-2 TS segments are concatenated as-is, fMP4 streams are merged as
|
|
// init section followed by the media fragments, and AES-128 encrypted
|
|
// segments are decrypted before they are stored.
|
|
//
|
|
// Supported subset:
|
|
// - VOD media playlists (EXT-X-ENDLIST present) and master playlists whose
|
|
// selected variant carries its own audio
|
|
// - AES-128 with the identity KEYFORMAT, explicit IV or media-sequence
|
|
// derived IV, including key rotation mid-playlist
|
|
// - EXT-X-BYTERANGE (including offset inheritance) and fMP4 init sections
|
|
// via a single, constant EXT-X-MAP
|
|
//
|
|
// Everything the merge pipeline cannot reproduce faithfully is rejected with
|
|
// an explicit error instead of silently producing a broken output file:
|
|
// - live streams (no EXT-X-ENDLIST) and SAMPLE-AES / DRM encryption
|
|
// - EXT-X-GAP (would leave a hole) and EXT-X-DISCONTINUITY (broken timeline)
|
|
// - changing init sections (a repeated EXT-X-MAP is compared by all its
|
|
// attributes, not just the URI) and encrypted EXT-X-MAP without an
|
|
// explicit IV
|
|
// - separate audio renditions referenced by the selected variant (the
|
|
// merged output would have no audio) and non-identity KEYFORMATs
|
|
package hls
|