Your ROOT_URL in app.ini is https://git.cloudchain.link/ but you are visiting https://dash.bss.nz/open-source-mirrors/jellyfin/commit/c07c7b753cdf7f830b839b4bec804accc1aefb55
You should set ROOT_URL correctly, otherwise the web may not work correctly.
3 changed files with
12 additions and
3 deletions
@ -1414,7 +1414,8 @@ namespace Jellyfin.Api.Controllers
state . RunTimeTicks ? ? 0 ,
state . Request . SegmentContainer ? ? string . Empty ,
"hls1/main/" ,
Request . QueryString . ToString ( ) ) ;
Request . QueryString . ToString ( ) ,
EncodingHelper . IsCopyCodec ( state . OutputVideoCodec ) ) ;
var playlist = _dynamicHlsPlaylistGenerator . CreateMainPlaylist ( request ) ;
return new FileContentResult ( Encoding . UTF8 . GetBytes ( playlist ) , MimeTypes . GetMimeType ( "playlist.m3u8" ) ) ;
@ -14,7 +14,8 @@ public class CreateMainPlaylistRequest
/// <param name="segmentContainer">The desired segment container eg. "ts".</param>
/// <param name="endpointPrefix">The URI prefix for the relative URL in the playlist.</param>
/// <param name="queryString">The desired query string to append (must start with ?).</param>
public CreateMainPlaylistRequest ( string filePath , int desiredSegmentLengthMs , long totalRuntimeTicks , string segmentContainer , string endpointPrefix , string queryString )
/// <param name="isRemuxingVideo">Whether the video is being remuxed.</param>
public CreateMainPlaylistRequest ( string filePath , int desiredSegmentLengthMs , long totalRuntimeTicks , string segmentContainer , string endpointPrefix , string queryString , bool isRemuxingVideo )
{
FilePath = filePath ;
DesiredSegmentLengthMs = desiredSegmentLengthMs ;
@ -22,6 +23,7 @@ public class CreateMainPlaylistRequest
SegmentContainer = segmentContainer ;
EndpointPrefix = endpointPrefix ;
QueryString = queryString ;
IsRemuxingVideo = isRemuxingVideo ;
}
/// <summary>
@ -53,4 +55,9 @@ public class CreateMainPlaylistRequest
/// Gets the query string.
/// </summary>
public string QueryString { get ; }
/// <summary>
/// Gets a value indicating whether the video is being remuxed.
/// </summary>
public bool IsRemuxingVideo { get ; }
}
@ -34,7 +34,8 @@ public class DynamicHlsPlaylistGenerator : IDynamicHlsPlaylistGenerator
public string CreateMainPlaylist ( CreateMainPlaylistRequest request )
{
IReadOnlyList < double > segments ;
if ( TryExtractKeyframes ( request . FilePath , out var keyframeData ) )
// For video transcodes it is sufficient with equal length segments as ffmpeg will create new keyframes
if ( request . IsRemuxingVideo & & TryExtractKeyframes ( request . FilePath , out var keyframeData ) )
{
segments = ComputeSegments ( keyframeData , request . DesiredSegmentLengthMs ) ;
}