diff options
author | metamuffin <metamuffin@disroot.org> | 2025-04-06 15:40:58 +0200 |
---|---|---|
committer | metamuffin <metamuffin@disroot.org> | 2025-04-06 15:40:58 +0200 |
commit | 7acb520f552bd1edde5c29fbf5baf6643ec4b14e (patch) | |
tree | 222fa1d582d039b00da50735b62573db8bdc1f9d /server/src/routes/stream.rs | |
parent | 80343d02e9e29e4bc55d790b491ce0d0c7bff201 (diff) | |
download | jellything-7acb520f552bd1edde5c29fbf5baf6643ec4b14e.tar jellything-7acb520f552bd1edde5c29fbf5baf6643ec4b14e.tar.bz2 jellything-7acb520f552bd1edde5c29fbf5baf6643ec4b14e.tar.zst |
a bit more progress on new streaming api
Diffstat (limited to 'server/src/routes/stream.rs')
-rw-r--r-- | server/src/routes/stream.rs | 25 |
1 files changed, 17 insertions, 8 deletions
diff --git a/server/src/routes/stream.rs b/server/src/routes/stream.rs index 4b3d02e..8f97aec 100644 --- a/server/src/routes/stream.rs +++ b/server/src/routes/stream.rs @@ -6,13 +6,9 @@ use super::ui::{account::session::Session, error::MyError}; use crate::database::Database; use anyhow::{anyhow, Result}; -use jellybase::{federation::Federation, permission::PermissionSetExt, SECRETS}; -use jellycommon::{ - config::FederationAccount, - stream::StreamSpec, - user::{CreateSessionParams, UserPermission}, - TrackSource, -}; +use jellybase::{assetfed::AssetInner, federation::Federation}; +use jellycommon::{stream::StreamSpec, TrackSource}; +use jellystream::SMediaInfo; use log::{info, warn}; use rocket::{ get, head, @@ -22,7 +18,7 @@ use rocket::{ Either, Request, Response, State, }; use std::{ - collections::{BTreeMap, HashSet}, + collections::{BTreeMap, BTreeSet}, ops::Range, sync::Arc, }; @@ -131,6 +127,19 @@ pub async fn r_stream( let head = jellystream::stream_head(&spec); + let mut sources = BTreeSet::new(); + for t in &media.tracks { + if let TrackSource::Local(x) = &t.source { + if let AssetInner::LocalTrack(m) = AssetInner::deser(&x.0)? { + sources.insert(m.path); + } + } + } + let media = Arc::new(SMediaInfo { + files: sources, + info: node, + }); + match jellystream::stream(media, spec, urange).await { Ok(stream) => Ok(Either::Left(StreamResponse { stream, |