Use stream id in streaming url

This commit is contained in:
2023-07-31 15:14:13 +01:00
parent ece3056056
commit 9a8aca72ab
2 changed files with 23 additions and 6 deletions

View File

@ -112,13 +112,30 @@ public class PlaylistController : Controller
}
[HttpGet("{pubkey}.m3u8")]
public async Task CreateMultiBitrate([FromRoute] string pubkey)
public async Task<IActionResult> GetCurrentStreamRedirect([FromRoute] string pubkey)
{
try
{
var streamManager = await _streamManagerFactory.ForCurrentStream(pubkey);
var userStream = streamManager.GetStream();
return Redirect($"{userStream.Id}.m3u8");
}
catch (Exception ex)
{
_logger.LogWarning("Failed to get stream for {pubkey} {message}", pubkey, ex.Message);
}
return NotFound();
}
[HttpGet("{id:guid}.m3u8")]
public async Task CreateMultiBitrate([FromRoute] Guid id)
{
try
{
var streamManager = await _streamManagerFactory.ForStream(id);
var userStream = streamManager.GetStream();
var hlsCtx = await GetHlsCtx(userStream);
if (string.IsNullOrEmpty(hlsCtx))
{
@ -156,7 +173,7 @@ public class PlaylistController : Controller
}
catch (Exception ex)
{
_logger.LogWarning("Failed to get stream for {pubkey} {message}", pubkey, ex.Message);
_logger.LogWarning("Failed to get stream for {id} {message}", id, ex.Message);
Response.StatusCode = 404;
}
}
@ -191,7 +208,7 @@ public class PlaylistController : Controller
Response.StatusCode = 404;
return;
}
// https://developer.apple.com/documentation/http-live-streaming/video-on-demand-playlist-construction
Response.ContentType = "application/vnd.apple.mpegurl";
await using var sw = new StreamWriter(Response.Body);
@ -231,7 +248,7 @@ public class PlaylistController : Controller
var frag = MP4Stream.Open(tmpFrag, FileMode.Open, FileAccess.Read);
var boxes = frag.ReadRootBoxes();
Response.ContentType = "video/mp4";
using var outStream = new MemoryStream();
foreach (var box in boxes.Take(2))

View File

@ -47,7 +47,7 @@ public class StreamEventBuilder
{
var viewers = _viewCounter.Current(stream.Id);
var starts = new DateTimeOffset(stream.Starts).ToUnixTimeSeconds();
tags.Add(new("streaming", new Uri(_config.DataHost, $"{user.PubKey}.m3u8").ToString()));
tags.Add(new("streaming", new Uri(_config.DataHost, $"{stream.Id}.m3u8").ToString()));
tags.Add(new("starts", starts.ToString()));
tags.Add(new("current_participants", viewers.ToString()));