diff options
author | metamuffin <metamuffin@disroot.org> | 2025-03-02 13:43:59 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-03-02 13:43:59 +0100 |
commit | b9539ee3afbf1440b8628bf0609dc0e24aed116c (patch) | |
tree | 5fa67c5db5e3c266385da36116f7723bf1a72c96 /stream/src/hls.rs | |
parent | f0dbf139d8708194d1ff7e887b1dff48ccc166fa (diff) | |
download | jellything-b9539ee3afbf1440b8628bf0609dc0e24aed116c.tar jellything-b9539ee3afbf1440b8628bf0609dc0e24aed116c.tar.bz2 jellything-b9539ee3afbf1440b8628bf0609dc0e24aed116c.tar.zst |
change things
Diffstat (limited to 'stream/src/hls.rs')
-rw-r--r-- | stream/src/hls.rs | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/stream/src/hls.rs b/stream/src/hls.rs index dca1036..56edd2d 100644 --- a/stream/src/hls.rs +++ b/stream/src/hls.rs @@ -7,7 +7,7 @@ use anyhow::{anyhow, Result}; use jellybase::{ common::{ - stream::{StreamFormat, StreamSpec}, + stream::{StreamContainer, StreamSpec}, LocalTrack, Node, SourceTrackKind, }, CONF, @@ -21,7 +21,8 @@ use tokio::{ pub async fn hls_master_stream( node: Arc<Node>, _local_tracks: Vec<LocalTrack>, - _spec: StreamSpec, + segment: u64, + container: StreamContainer, mut b: DuplexStream, ) -> Result<()> { let media = node.media.as_ref().ok_or(anyhow!("no media"))?; @@ -32,10 +33,11 @@ pub async fn hls_master_stream( for (i, t) in media.tracks.iter().enumerate() { let uri = format!( "stream?{}", - StreamSpec { - track: vec![i], - format: StreamFormat::HlsVariant, - ..Default::default() + StreamSpec::HlsVariant { + track: i, + segment, + container, + format: 0 } .to_query() ); @@ -54,14 +56,21 @@ pub async fn hls_master_stream( pub async fn hls_variant_stream( node: Arc<Node>, local_tracks: Vec<LocalTrack>, - mut spec: StreamSpec, + segment: u64, + track: usize, + format: usize, + container: StreamContainer, mut b: DuplexStream, ) -> Result<()> { let local_track = local_tracks.first().ok_or(anyhow!("no track"))?.to_owned(); - let track_index = spec.track[0]; let media_info = node.media.to_owned().ok_or(anyhow!("no media?"))?; let frags = spawn_blocking(move || { - jellyremuxer::fragment::fragment_index(&CONF.media_path, &node, &local_track, track_index) + jellyremuxer::fragment::fragment_index( + &CONF.media_path, + &node, + &local_track, + track as usize, + ) }) .await??; @@ -72,11 +81,20 @@ pub async fn hls_variant_stream( writeln!(out, "#EXT-X-VERSION:4")?; writeln!(out, "#EXT-X-MEDIA-SEQUENCE:0")?; - spec.format = StreamFormat::Fragment; for (i, Range { start, end }) in frags.iter().enumerate() { writeln!(out, "#EXTINF:{:},", end - start)?; - spec.index = Some(i); - writeln!(out, "stream?{}", spec.to_query())?; + writeln!( + out, + "stream?{}", + StreamSpec::Fragment { + segment, + track, + index: i as u64, + container, + format, + } + .to_query() + )?; } writeln!(out, "#EXT-X-ENDLIST")?; |