@ -529,7 +529,7 @@ namespace MediaBrowser.Api.Playback.Hls
"subs" :
null ;
AppendPlaylist ( builder , playlistUrl, totalBitrate , subtitleGroup ) ;
AppendPlaylist ( builder , state, playlistUrl, totalBitrate , subtitleGroup ) ;
if ( EnableAdaptiveBitrateStreaming ( state , isLiveStream ) )
{
@ -540,12 +540,12 @@ namespace MediaBrowser.Api.Playback.Hls
var newBitrate = totalBitrate - variation ;
var variantUrl = ReplaceBitrate ( playlistUrl , requestedVideoBitrate , ( requestedVideoBitrate - variation ) ) ;
AppendPlaylist ( builder , variantUrl, newBitrate , subtitleGroup ) ;
AppendPlaylist ( builder , state, variantUrl, newBitrate , subtitleGroup ) ;
variation * = 2 ;
newBitrate = totalBitrate - variation ;
variantUrl = ReplaceBitrate ( playlistUrl , requestedVideoBitrate , ( requestedVideoBitrate - variation ) ) ;
AppendPlaylist ( builder , variantUrl, newBitrate , subtitleGroup ) ;
AppendPlaylist ( builder , state, variantUrl, newBitrate , subtitleGroup ) ;
}
if ( ! string . IsNullOrWhiteSpace ( subtitleGroup ) )
@ -635,9 +635,15 @@ namespace MediaBrowser.Api.Playback.Hls
//return state.VideoRequest.VideoBitRate.HasValue;
}
private void AppendPlaylist ( StringBuilder builder , string url , int bitrate , string subtitleGroup )
private void AppendPlaylist ( StringBuilder builder , StreamState state , string url , int bitrate , string subtitleGroup )
{
var header = "#EXT-X-STREAM-INF:BANDWIDTH=" + bitrate . ToString ( UsCulture ) ;
var header = "#EXT-X-STREAM-INF:BANDWIDTH=" + bitrate . ToString ( UsCulture ) + ",AVERAGE-BANDWIDTH=" + bitrate . ToString ( UsCulture ) ;
// tvos wants resolution, codecs, framerate
//if (state.TargetFramerate.HasValue)
//{
// header += string.Format(",FRAME-RATE=\"{0}\"", state.TargetFramerate.Value.ToString(CultureInfo.InvariantCulture));
//}
if ( ! string . IsNullOrWhiteSpace ( subtitleGroup ) )
{
@ -694,6 +700,7 @@ namespace MediaBrowser.Api.Playback.Hls
var builder = new StringBuilder ( ) ;
builder . AppendLine ( "#EXTM3U" ) ;
builder . AppendLine ( "#EXT-X-PLAYLIST-TYPE:VOD" ) ;
builder . AppendLine ( "#EXT-X-VERSION:3" ) ;
builder . AppendLine ( "#EXT-X-TARGETDURATION:" + Math . Ceiling ( ( segmentLengths . Length > 0 ? segmentLengths . Max ( ) : state . SegmentLength ) ) . ToString ( UsCulture ) ) ;
builder . AppendLine ( "#EXT-X-MEDIA-SEQUENCE:0" ) ;