diff options
author | metamuffin <metamuffin@disroot.org> | 2024-01-29 14:49:54 +0100 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2024-01-29 14:49:54 +0100 |
commit | 4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b (patch) | |
tree | b2318fae2ff21089338a36db8f4bc054357f406d /stream/src | |
parent | ba33c4019c2cc62f2a8c18c4b7354c3b52758b95 (diff) | |
download | jellything-4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b.tar jellything-4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b.tar.bz2 jellything-4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b.tar.zst |
support DisplayUnit
Diffstat (limited to 'stream/src')
-rw-r--r-- | stream/src/hls.rs | 19 |
1 files changed, 12 insertions, 7 deletions
diff --git a/stream/src/hls.rs b/stream/src/hls.rs index 7f69d2c..74f554b 100644 --- a/stream/src/hls.rs +++ b/stream/src/hls.rs @@ -8,7 +8,7 @@ use anyhow::{anyhow, Result}; use jellybase::CONF; use jellycommon::{ stream::{StreamFormat, StreamSpec}, - LocalTrack, Node, + LocalTrack, Node, SourceTrackKind, }; use std::{fmt::Write, ops::Range}; use tokio::{ @@ -17,27 +17,32 @@ use tokio::{ }; pub async fn hls_master_stream( - _node: Node, + node: Node, _local_tracks: Vec<LocalTrack>, - spec: StreamSpec, + _spec: StreamSpec, mut b: DuplexStream, ) -> Result<()> { + let media = node.public.media.as_ref().ok_or(anyhow!("no media"))?; let mut out = String::new(); writeln!(out, "#EXTM3U")?; writeln!(out, "#EXT-X-VERSION:4")?; // writeln!(out, "#EXT-X-INDEPENDENT-SEGMENTS")?; - for t in spec.tracks { + for (i, t) in media.tracks.iter().enumerate() { let uri = format!( "stream?{}", StreamSpec { - tracks: vec![t], + tracks: vec![i], format: StreamFormat::HlsVariant, ..Default::default() } .to_query() ); - // writeln!(out,"#EXT-X-MEDIA:NAME=\"track {t}\", TYPE=AUDIO, GROUP-ID=\"track{t}\", DEFAULT=YES, AUTOSELECT=YES, URI=\"{uri}\"")?; - writeln!(out, "#EXT-X-STREAM-INF:BANDWIDTH=5000000")?; + let r#type = match t.kind { + SourceTrackKind::Video { .. } => "VIDEO", + SourceTrackKind::Audio { .. } => "AUDIO", + SourceTrackKind::Subtitles => "SUBTITLES", + }; + writeln!(out, "#EXT-X-STREAM-INF:BANDWIDTH=5000000,TYPE={type}")?; writeln!(out, "{uri}")?; } tokio::spawn(async move { b.write_all(out.as_bytes()).await }); |