aboutsummaryrefslogtreecommitdiff
path: root/stream
diff options
context:
space:
mode:
authormetamuffin <metamuffin@disroot.org>2024-01-29 14:49:54 +0100
committermetamuffin <metamuffin@disroot.org>2024-01-29 14:49:54 +0100
commit4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b (patch)
treeb2318fae2ff21089338a36db8f4bc054357f406d /stream
parentba33c4019c2cc62f2a8c18c4b7354c3b52758b95 (diff)
downloadjellything-4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b.tar
jellything-4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b.tar.bz2
jellything-4ad7aa6042c64a6e7cfbe2693a4bbeda0514357b.tar.zst
support DisplayUnit
Diffstat (limited to 'stream')
-rw-r--r--stream/src/hls.rs19
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 });