aboutsummaryrefslogtreecommitdiff
path: root/stream/src/hls.rs
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2025-04-14 18:42:16 +0200
committermetamuffin <metamuffin@disroot.org>2025-04-14 18:42:16 +0200
commit3b147cb1dfcbd5c7218e0accd5784d992d5ae21c (patch)
tree028e5ba21bd9c7da583b2ead0001c1481ccbae86 /stream/src/hls.rs
parent42e08750a5a9a112d458a5db1d6b169278e953c5 (diff)
downloadjellything-3b147cb1dfcbd5c7218e0accd5784d992d5ae21c.tar
jellything-3b147cb1dfcbd5c7218e0accd5784d992d5ae21c.tar.bz2
jellything-3b147cb1dfcbd5c7218e0accd5784d992d5ae21c.tar.zst
things
Diffstat (limited to 'stream/src/hls.rs')
-rw-r--r--stream/src/hls.rs26
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,