diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-14 18:42:16 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-14 18:42:16 +0200 |
commit | 3b147cb1dfcbd5c7218e0accd5784d992d5ae21c (patch) | |
tree | 028e5ba21bd9c7da583b2ead0001c1481ccbae86 /stream/src/hls.rs | |
parent | 42e08750a5a9a112d458a5db1d6b169278e953c5 (diff) | |
download | jellything-3b147cb1dfcbd5c7218e0accd5784d992d5ae21c.tar jellything-3b147cb1dfcbd5c7218e0accd5784d992d5ae21c.tar.bz2 jellything-3b147cb1dfcbd5c7218e0accd5784d992d5ae21c.tar.zst |
things
Diffstat (limited to 'stream/src/hls.rs')
-rw-r--r-- | stream/src/hls.rs | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/stream/src/hls.rs b/stream/src/hls.rs index f06ac72..3dfbf01 100644 --- a/stream/src/hls.rs +++ b/stream/src/hls.rs @@ -15,7 +15,31 @@ use tokio::{ task::spawn_blocking, }; -pub async fn hls_master_stream( +pub async fn hls_supermultivariant_stream( + mut b: DuplexStream, + info: Arc<SMediaInfo>, + container: StreamContainer, +) -> Result<()> { + let (_iinfo, info) = stream_info(info).await?; + let mut out = String::new(); + writeln!(out, "#EXTM3U")?; + writeln!(out, "#EXT-X-VERSION:4")?; + for (i, _seg) in info.segments.iter().enumerate() { + let uri = format!( + "stream{}", + StreamSpec::HlsMultiVariant { + segment: i, + container, + } + .to_query() + ); + writeln!(out, "{uri}")?; + } + tokio::spawn(async move { b.write_all(out.as_bytes()).await }); + Ok(()) +} + +pub async fn hls_multivariant_stream( mut b: DuplexStream, info: Arc<SMediaInfo>, segment: SegmentNum, |