P6: remote video and audio play through the proxy
- The media proxy streams ranged requests from the origin (passing the range on, never caching), downloads and caches whole files otherwise, and serves cached files with range support. A PeerTube video is never fetched whole for one viewer, and clients still never contact the remote host. - PeerTube's fragmented MP4 files inside an HLS entry are read as variants, so HLS-only instances play too. - A remote Video or Audio post becomes one playable Mastodon attachment: the best MP4 up to 720p that carries both sound and picture, with its poster and duration; the card is kept only when nothing is playable. - nginx: /media/proxy/ with proxy_buffering off and a 600 s read timeout (applied on the box, with a backup). Checked live: a GoToSocial image through the proxy answers 206 with exactly the asked range when streamed, 200 when cached, and 206 with the right Content-Range from the cache. Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_012CzABvBkbcFqoHdmi8b9WB
This commit is contained in:
1 parent
6f1ab0073c
commit
f9658a8e7a
10 files changed
+193
-22
No files matched your search
@@ -217,10 +217,13 @@ namespace PrivaPub.Federation.Objects
|
||||
if (Value(note, "type") != "Video")
|
||||
return default;
|
||||
var links = Objects(note["url"]).ToList();
|
||||
var nested = links.Where(l => Value(l, "mediaType")?.Equals("application/x-mpegURL", StringComparison.OrdinalIgnoreCase) == true)
|
||||
.SelectMany(l => Objects(l["tag"]))
|
||||
.ToList();
|
||||
return new VideoDetails
|
||||
{
|
||||
DurationSeconds = Seconds(note["duration"]),
|
||||
Variants = Variants(links, "video/", "audio/"),
|
||||
Variants = Variants(links.Concat(nested).ToList(), "video/", "audio/"),
|
||||
PlaylistURL = links.Where(l => Value(l, "mediaType")?.Equals("application/x-mpegURL", StringComparison.OrdinalIgnoreCase) == true)
|
||||
.Select(l => Value(l, "href")).FirstOrDefault(IsWeb),
|
||||
IsLive = Bool(note, "isLiveBroadcast") == true,
|
||||
|
||||
Reference in new issue
Block a user