add hls segmenter fmp4 streaming mode (#2468)

* add streaming mode segmenter fmp4

* allow hevc channel preview
This commit is contained in:
Jason Dove
2025-09-30 10:04:02 -05:00
committed by GitHub
parent 77163e6746
commit b46de50801
36 changed files with 513 additions and 129 deletions
@@ -4,6 +4,7 @@ using ErsatzTV.Application.MediaItems;
using ErsatzTV.Application.Troubleshooting;
using ErsatzTV.Application.Troubleshooting.Queries;
using ErsatzTV.Core;
using ErsatzTV.Core.Domain;
using ErsatzTV.Core.Interfaces.FFmpeg;
using ErsatzTV.Core.Interfaces.Metadata;
using ErsatzTV.Core.Interfaces.Troubleshooting;
@@ -27,6 +28,8 @@ public class TroubleshootController(
[FromQuery]
int ffmpegProfile,
[FromQuery]
StreamingMode streamingMode,
[FromQuery]
List<int> watermark,
[FromQuery]
List<int> graphicsElement,
@@ -42,6 +45,7 @@ public class TroubleshootController(
Either<BaseError, PlayoutItemResult> result = await mediator.Send(
new PrepareTroubleshootingPlayback(
streamingMode,
mediaItem,
ffmpegProfile,
watermark,
@@ -125,6 +129,8 @@ public class TroubleshootController(
[FromQuery]
int ffmpegProfile,
[FromQuery]
StreamingMode streamingMode,
[FromQuery]
List<int> watermark,
[FromQuery]
List<int> graphicsElement,
@@ -135,7 +141,7 @@ public class TroubleshootController(
Option<int> ss = seekSeconds > 0 ? seekSeconds : Option<int>.None;
Option<string> maybeArchivePath = await mediator.Send(
new ArchiveTroubleshootingResults(mediaItem, ffmpegProfile, watermark, graphicsElement, ss),
new ArchiveTroubleshootingResults(mediaItem, ffmpegProfile, streamingMode, watermark, graphicsElement, ss),
cancellationToken);
foreach (string archivePath in maybeArchivePath)
+2 -1
View File
@@ -10,6 +10,7 @@ using ErsatzTV.Application.Streaming;
using ErsatzTV.Application.Subtitles;
using ErsatzTV.Application.Subtitles.Queries;
using ErsatzTV.Core;
using ErsatzTV.Core.Domain;
using ErsatzTV.Core.FFmpeg;
using ErsatzTV.Core.Interfaces.FFmpeg;
using ErsatzTV.Core.Interfaces.Streaming;
@@ -281,7 +282,7 @@ public class InternalController : ControllerBase
{
var request = new GetPlayoutItemProcessByChannelNumber(
channelNumber,
mode,
StreamingMode.TransportStream,
DateTimeOffset.Now,
false,
true,
+4
View File
@@ -205,6 +205,9 @@ public class IptvController : ControllerBase
case StreamingMode.HttpLiveStreamingSegmenter:
mode = "segmenter";
break;
case StreamingMode.HttpLiveStreamingSegmenterFmp4:
mode = "segmenter-fmp4";
break;
case StreamingMode.HttpLiveStreamingSegmenterV2:
mode = "segmenter-v2";
break;
@@ -217,6 +220,7 @@ public class IptvController : ControllerBase
switch (mode)
{
case "segmenter":
case "segmenter-fmp4":
case "segmenter-v2":
_logger.LogDebug(
"Maybe starting ffmpeg session for channel {Channel}, mode {Mode}",