mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-10-31 02:27:18 -04:00 
			
		
		
		
	Add profile condition to limit the number of streams (#13583)
This commit is contained in:
		
							parent
							
								
									7f5cc544df
								
							
						
					
					
						commit
						cb931e0062
					
				| @ -28,6 +28,7 @@ namespace MediaBrowser.Model.Dlna | |||||||
|         /// <param name="isAnamorphic">A value indicating whether the video is anamorphic.</param> |         /// <param name="isAnamorphic">A value indicating whether the video is anamorphic.</param> | ||||||
|         /// <param name="isInterlaced">A value indicating whether the video is interlaced.</param> |         /// <param name="isInterlaced">A value indicating whether the video is interlaced.</param> | ||||||
|         /// <param name="refFrames">The reference frames.</param> |         /// <param name="refFrames">The reference frames.</param> | ||||||
|  |         /// <param name="numStreams">The number of streams.</param> | ||||||
|         /// <param name="numVideoStreams">The number of video streams.</param> |         /// <param name="numVideoStreams">The number of video streams.</param> | ||||||
|         /// <param name="numAudioStreams">The number of audio streams.</param> |         /// <param name="numAudioStreams">The number of audio streams.</param> | ||||||
|         /// <param name="videoCodecTag">The video codec tag.</param> |         /// <param name="videoCodecTag">The video codec tag.</param> | ||||||
| @ -48,6 +49,7 @@ namespace MediaBrowser.Model.Dlna | |||||||
|             bool? isAnamorphic, |             bool? isAnamorphic, | ||||||
|             bool? isInterlaced, |             bool? isInterlaced, | ||||||
|             int? refFrames, |             int? refFrames, | ||||||
|  |             int numStreams, | ||||||
|             int? numVideoStreams, |             int? numVideoStreams, | ||||||
|             int? numAudioStreams, |             int? numAudioStreams, | ||||||
|             string? videoCodecTag, |             string? videoCodecTag, | ||||||
| @ -83,6 +85,8 @@ namespace MediaBrowser.Model.Dlna | |||||||
|                     return IsConditionSatisfied(condition, width); |                     return IsConditionSatisfied(condition, width); | ||||||
|                 case ProfileConditionValue.RefFrames: |                 case ProfileConditionValue.RefFrames: | ||||||
|                     return IsConditionSatisfied(condition, refFrames); |                     return IsConditionSatisfied(condition, refFrames); | ||||||
|  |                 case ProfileConditionValue.NumStreams: | ||||||
|  |                     return IsConditionSatisfied(condition, numStreams); | ||||||
|                 case ProfileConditionValue.NumAudioStreams: |                 case ProfileConditionValue.NumAudioStreams: | ||||||
|                     return IsConditionSatisfied(condition, numAudioStreams); |                     return IsConditionSatisfied(condition, numAudioStreams); | ||||||
|                 case ProfileConditionValue.NumVideoStreams: |                 case ProfileConditionValue.NumVideoStreams: | ||||||
|  | |||||||
| @ -27,6 +27,7 @@ namespace MediaBrowser.Model.Dlna | |||||||
|         IsInterlaced = 21, |         IsInterlaced = 21, | ||||||
|         AudioSampleRate = 22, |         AudioSampleRate = 22, | ||||||
|         AudioBitDepth = 23, |         AudioBitDepth = 23, | ||||||
|         VideoRangeType = 24 |         VideoRangeType = 24, | ||||||
|  |         NumStreams = 25 | ||||||
|     } |     } | ||||||
| } | } | ||||||
|  | |||||||
| @ -338,6 +338,9 @@ namespace MediaBrowser.Model.Dlna | |||||||
|                 case ProfileConditionValue.IsSecondaryAudio: |                 case ProfileConditionValue.IsSecondaryAudio: | ||||||
|                     return TranscodeReason.SecondaryAudioNotSupported; |                     return TranscodeReason.SecondaryAudioNotSupported; | ||||||
| 
 | 
 | ||||||
|  |                 case ProfileConditionValue.NumStreams: | ||||||
|  |                     return TranscodeReason.StreamCountExceedsLimit; | ||||||
|  | 
 | ||||||
|                 case ProfileConditionValue.NumAudioStreams: |                 case ProfileConditionValue.NumAudioStreams: | ||||||
|                     // TODO |                     // TODO | ||||||
|                     return 0; |                     return 0; | ||||||
| @ -1019,6 +1022,7 @@ namespace MediaBrowser.Model.Dlna | |||||||
|             int? packetLength = videoStream?.PacketLength; |             int? packetLength = videoStream?.PacketLength; | ||||||
|             int? refFrames = videoStream?.RefFrames; |             int? refFrames = videoStream?.RefFrames; | ||||||
| 
 | 
 | ||||||
|  |             int numStreams = item.MediaStreams.Count; | ||||||
|             int? numAudioStreams = item.GetStreamCount(MediaStreamType.Audio); |             int? numAudioStreams = item.GetStreamCount(MediaStreamType.Audio); | ||||||
|             int? numVideoStreams = item.GetStreamCount(MediaStreamType.Video); |             int? numVideoStreams = item.GetStreamCount(MediaStreamType.Video); | ||||||
| 
 | 
 | ||||||
| @ -1027,7 +1031,7 @@ namespace MediaBrowser.Model.Dlna | |||||||
|             var appliedVideoConditions = options.Profile.CodecProfiles |             var appliedVideoConditions = options.Profile.CodecProfiles | ||||||
|                 .Where(i => i.Type == CodecType.Video && |                 .Where(i => i.Type == CodecType.Video && | ||||||
|                     i.ContainsAnyCodec(playlistItem.VideoCodecs, container, useSubContainer) && |                     i.ContainsAnyCodec(playlistItem.VideoCodecs, container, useSubContainer) && | ||||||
|                     i.ApplyConditions.All(applyCondition => ConditionProcessor.IsVideoConditionSatisfied(applyCondition, width, height, bitDepth, videoBitrate, videoProfile, videoRangeType, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, isInterlaced, refFrames, numVideoStreams, numAudioStreams, videoCodecTag, isAvc))) |                     i.ApplyConditions.All(applyCondition => ConditionProcessor.IsVideoConditionSatisfied(applyCondition, width, height, bitDepth, videoBitrate, videoProfile, videoRangeType, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, isInterlaced, refFrames, numStreams, numVideoStreams, numAudioStreams, videoCodecTag, isAvc))) | ||||||
|                 // Reverse codec profiles for backward compatibility - first codec profile has higher priority |                 // Reverse codec profiles for backward compatibility - first codec profile has higher priority | ||||||
|                 .Reverse(); |                 .Reverse(); | ||||||
|             foreach (var condition in appliedVideoConditions) |             foreach (var condition in appliedVideoConditions) | ||||||
| @ -1850,6 +1854,7 @@ namespace MediaBrowser.Model.Dlna | |||||||
|                     case ProfileConditionValue.AudioProfile: |                     case ProfileConditionValue.AudioProfile: | ||||||
|                     case ProfileConditionValue.Has64BitOffsets: |                     case ProfileConditionValue.Has64BitOffsets: | ||||||
|                     case ProfileConditionValue.PacketLength: |                     case ProfileConditionValue.PacketLength: | ||||||
|  |                     case ProfileConditionValue.NumStreams: | ||||||
|                     case ProfileConditionValue.NumAudioStreams: |                     case ProfileConditionValue.NumAudioStreams: | ||||||
|                     case ProfileConditionValue.NumVideoStreams: |                     case ProfileConditionValue.NumVideoStreams: | ||||||
|                     case ProfileConditionValue.IsSecondaryAudio: |                     case ProfileConditionValue.IsSecondaryAudio: | ||||||
| @ -2258,10 +2263,11 @@ namespace MediaBrowser.Model.Dlna | |||||||
|             int? packetLength = videoStream?.PacketLength; |             int? packetLength = videoStream?.PacketLength; | ||||||
|             int? refFrames = videoStream?.RefFrames; |             int? refFrames = videoStream?.RefFrames; | ||||||
| 
 | 
 | ||||||
|  |             int numStreams = mediaSource.MediaStreams.Count; | ||||||
|             int? numAudioStreams = mediaSource.GetStreamCount(MediaStreamType.Audio); |             int? numAudioStreams = mediaSource.GetStreamCount(MediaStreamType.Audio); | ||||||
|             int? numVideoStreams = mediaSource.GetStreamCount(MediaStreamType.Video); |             int? numVideoStreams = mediaSource.GetStreamCount(MediaStreamType.Video); | ||||||
| 
 | 
 | ||||||
|             return conditions.Where(applyCondition => !ConditionProcessor.IsVideoConditionSatisfied(applyCondition, width, height, bitDepth, videoBitrate, videoProfile, videoRangeType, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, isInterlaced, refFrames, numVideoStreams, numAudioStreams, videoCodecTag, isAvc)); |             return conditions.Where(applyCondition => !ConditionProcessor.IsVideoConditionSatisfied(applyCondition, width, height, bitDepth, videoBitrate, videoProfile, videoRangeType, videoLevel, videoFramerate, packetLength, timestamp, isAnamorphic, isInterlaced, refFrames, numStreams, numVideoStreams, numAudioStreams, videoCodecTag, isAvc)); | ||||||
|         } |         } | ||||||
| 
 | 
 | ||||||
|         /// <summary> |         /// <summary> | ||||||
|  | |||||||
| @ -14,6 +14,7 @@ namespace MediaBrowser.Model.Session | |||||||
|         SubtitleCodecNotSupported = 1 << 3, |         SubtitleCodecNotSupported = 1 << 3, | ||||||
|         AudioIsExternal = 1 << 4, |         AudioIsExternal = 1 << 4, | ||||||
|         SecondaryAudioNotSupported = 1 << 5, |         SecondaryAudioNotSupported = 1 << 5, | ||||||
|  |         StreamCountExceedsLimit = 1 << 26, | ||||||
| 
 | 
 | ||||||
|         // Video Constraints |         // Video Constraints | ||||||
|         VideoProfileNotSupported = 1 << 6, |         VideoProfileNotSupported = 1 << 6, | ||||||
|  | |||||||
| @ -39,6 +39,8 @@ namespace Jellyfin.Model.Tests | |||||||
|         [InlineData("Chrome", "mkv-dvhe.05-eac3-28000k", PlayMethod.Transcode, TranscodeReason.ContainerNotSupported | TranscodeReason.VideoRangeTypeNotSupported | TranscodeReason.AudioCodecNotSupported, "Transcode", "HLS.mp4")] |         [InlineData("Chrome", "mkv-dvhe.05-eac3-28000k", PlayMethod.Transcode, TranscodeReason.ContainerNotSupported | TranscodeReason.VideoRangeTypeNotSupported | TranscodeReason.AudioCodecNotSupported, "Transcode", "HLS.mp4")] | ||||||
|         [InlineData("Chrome", "mkv-dvhe.08-eac3-15200k", PlayMethod.Transcode, TranscodeReason.ContainerNotSupported | TranscodeReason.VideoRangeTypeNotSupported | TranscodeReason.AudioCodecNotSupported, "Transcode", "HLS.mp4")] |         [InlineData("Chrome", "mkv-dvhe.08-eac3-15200k", PlayMethod.Transcode, TranscodeReason.ContainerNotSupported | TranscodeReason.VideoRangeTypeNotSupported | TranscodeReason.AudioCodecNotSupported, "Transcode", "HLS.mp4")] | ||||||
|         [InlineData("Chrome", "mp4-dvhe.08-eac3-15200k", PlayMethod.Transcode, TranscodeReason.VideoRangeTypeNotSupported | TranscodeReason.AudioCodecNotSupported, "Transcode", "HLS.mp4")] |         [InlineData("Chrome", "mp4-dvhe.08-eac3-15200k", PlayMethod.Transcode, TranscodeReason.VideoRangeTypeNotSupported | TranscodeReason.AudioCodecNotSupported, "Transcode", "HLS.mp4")] | ||||||
|  |         [InlineData("Chrome", "numstreams-32", PlayMethod.DirectPlay)] | ||||||
|  |         [InlineData("Chrome", "numstreams-33", PlayMethod.DirectPlay)] | ||||||
|         // Firefox |         // Firefox | ||||||
|         [InlineData("Firefox", "mp4-h264-aac-vtt-2600k", PlayMethod.DirectPlay)] // #6450 |         [InlineData("Firefox", "mp4-h264-aac-vtt-2600k", PlayMethod.DirectPlay)] // #6450 | ||||||
|         [InlineData("Firefox", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.Transcode, TranscodeReason.AudioCodecNotSupported, "DirectStream", "HLS.mp4")] // #6450 |         [InlineData("Firefox", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.Transcode, TranscodeReason.AudioCodecNotSupported, "DirectStream", "HLS.mp4")] // #6450 | ||||||
| @ -180,6 +182,8 @@ namespace Jellyfin.Model.Tests | |||||||
|         [InlineData("Tizen3-stereo", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectPlay)] |         [InlineData("Tizen3-stereo", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectPlay)] | ||||||
|         [InlineData("Tizen3-stereo", "mkv-vp9-ac3-srt-2600k", PlayMethod.DirectPlay)] |         [InlineData("Tizen3-stereo", "mkv-vp9-ac3-srt-2600k", PlayMethod.DirectPlay)] | ||||||
|         [InlineData("Tizen3-stereo", "mkv-vp9-vorbis-vtt-2600k", PlayMethod.DirectPlay)] |         [InlineData("Tizen3-stereo", "mkv-vp9-vorbis-vtt-2600k", PlayMethod.DirectPlay)] | ||||||
|  |         [InlineData("Tizen3-stereo", "numstreams-32", PlayMethod.DirectPlay)] | ||||||
|  |         [InlineData("Tizen3-stereo", "numstreams-33", PlayMethod.Transcode, TranscodeReason.StreamCountExceedsLimit, "Remux")] | ||||||
|         // Tizen 4 4K 5.1 |         // Tizen 4 4K 5.1 | ||||||
|         [InlineData("Tizen4-4K-5.1", "mp4-h264-aac-vtt-2600k", PlayMethod.DirectPlay)] |         [InlineData("Tizen4-4K-5.1", "mp4-h264-aac-vtt-2600k", PlayMethod.DirectPlay)] | ||||||
|         [InlineData("Tizen4-4K-5.1", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.DirectPlay)] |         [InlineData("Tizen4-4K-5.1", "mp4-h264-ac3-aac-srt-2600k", PlayMethod.DirectPlay)] | ||||||
| @ -191,6 +195,8 @@ namespace Jellyfin.Model.Tests | |||||||
|         [InlineData("Tizen4-4K-5.1", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectPlay)] |         [InlineData("Tizen4-4K-5.1", "mkv-vp9-aac-srt-2600k", PlayMethod.DirectPlay)] | ||||||
|         [InlineData("Tizen4-4K-5.1", "mkv-vp9-ac3-srt-2600k", PlayMethod.DirectPlay)] |         [InlineData("Tizen4-4K-5.1", "mkv-vp9-ac3-srt-2600k", PlayMethod.DirectPlay)] | ||||||
|         [InlineData("Tizen4-4K-5.1", "mkv-vp9-vorbis-vtt-2600k", PlayMethod.DirectPlay)] |         [InlineData("Tizen4-4K-5.1", "mkv-vp9-vorbis-vtt-2600k", PlayMethod.DirectPlay)] | ||||||
|  |         [InlineData("Tizen4-4K-5.1", "numstreams-32", PlayMethod.DirectPlay)] | ||||||
|  |         [InlineData("Tizen4-4K-5.1", "numstreams-33", PlayMethod.Transcode, TranscodeReason.StreamCountExceedsLimit, "Remux")] | ||||||
|         // WebOS 23 |         // WebOS 23 | ||||||
|         [InlineData("WebOS-23", "mkv-dvhe.08-eac3-15200k", PlayMethod.Transcode, TranscodeReason.VideoRangeTypeNotSupported, "Remux")] |         [InlineData("WebOS-23", "mkv-dvhe.08-eac3-15200k", PlayMethod.Transcode, TranscodeReason.VideoRangeTypeNotSupported, "Remux")] | ||||||
|         [InlineData("WebOS-23", "mp4-dvh1.05-eac3-15200k", PlayMethod.DirectPlay)] |         [InlineData("WebOS-23", "mp4-dvh1.05-eac3-15200k", PlayMethod.DirectPlay)] | ||||||
|  | |||||||
| @ -510,6 +510,21 @@ | |||||||
|             "$type": "CodecProfile" |             "$type": "CodecProfile" | ||||||
|         } |         } | ||||||
|     ], |     ], | ||||||
|  |     "ContainerProfiles": [ | ||||||
|  |         { | ||||||
|  |             "Type": "Video", | ||||||
|  |             "Conditions": [ | ||||||
|  |                 { | ||||||
|  |                     "Condition": "LessThanEqual", | ||||||
|  |                     "Property": "NumStreams", | ||||||
|  |                     "Value": "32", | ||||||
|  |                     "IsRequired": false, | ||||||
|  |                     "$type": "ProfileCondition" | ||||||
|  |                 } | ||||||
|  |             ], | ||||||
|  |             "$type": "ContainerProfile" | ||||||
|  |         } | ||||||
|  |     ], | ||||||
|     "ResponseProfiles": [ |     "ResponseProfiles": [ | ||||||
|         { |         { | ||||||
|             "Container": "m4v", |             "Container": "m4v", | ||||||
|  | |||||||
| @ -483,6 +483,21 @@ | |||||||
|             "$type": "CodecProfile" |             "$type": "CodecProfile" | ||||||
|         } |         } | ||||||
|     ], |     ], | ||||||
|  |     "ContainerProfiles": [ | ||||||
|  |         { | ||||||
|  |             "Type": "Video", | ||||||
|  |             "Conditions": [ | ||||||
|  |                 { | ||||||
|  |                     "Condition": "LessThanEqual", | ||||||
|  |                     "Property": "NumStreams", | ||||||
|  |                     "Value": "32", | ||||||
|  |                     "IsRequired": false, | ||||||
|  |                     "$type": "ProfileCondition" | ||||||
|  |                 } | ||||||
|  |             ], | ||||||
|  |             "$type": "ContainerProfile" | ||||||
|  |         } | ||||||
|  |     ], | ||||||
|     "ResponseProfiles": [ |     "ResponseProfiles": [ | ||||||
|         { |         { | ||||||
|             "Container": "m4v", |             "Container": "m4v", | ||||||
|  | |||||||
| @ -0,0 +1,565 @@ | |||||||
|  | { | ||||||
|  |     "Id": "a766d122b58e45d9492d17af77748bf5", | ||||||
|  |     "Path": "/Media/MyVideo-720p.mp4", | ||||||
|  |     "Container": "mov,mp4,m4a,3gp,3g2,mj2", | ||||||
|  |     "Size": 835317696, | ||||||
|  |     "Name": "MyVideo-720p", | ||||||
|  |     "ETag": "579a34c6d5dfb21d81539a51220b6a23", | ||||||
|  |     "RunTimeTicks": 25801230336, | ||||||
|  |     "SupportsTranscoding": true, | ||||||
|  |     "SupportsDirectStream": true, | ||||||
|  |     "SupportsDirectPlay": true, | ||||||
|  |     "SupportsProbing": true, | ||||||
|  |     "MediaStreams": [ | ||||||
|  |         { | ||||||
|  |             "Codec": "h264", | ||||||
|  |             "CodecTag": "avc1", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/11988", | ||||||
|  |             "VideoRange": "SDR", | ||||||
|  |             "DisplayTitle": "720p H264 SDR", | ||||||
|  |             "NalLengthSize": "0", | ||||||
|  |             "BitRate": 2032876, | ||||||
|  |             "BitDepth": 8, | ||||||
|  |             "RefFrames": 1, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Height": 720, | ||||||
|  |             "Width": 1280, | ||||||
|  |             "AverageFrameRate": 23.976, | ||||||
|  |             "RealFrameRate": 23.976, | ||||||
|  |             "Profile": "High", | ||||||
|  |             "Type": 1, | ||||||
|  |             "AspectRatio": "16:9", | ||||||
|  |             "PixelFormat": "yuv420p", | ||||||
|  |             "Level": 41 | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "aac", | ||||||
|  |             "CodecTag": "mp4a", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/48000", | ||||||
|  |             "DisplayTitle": "En - AAC - Stereo - Default", | ||||||
|  |             "ChannelLayout": "stereo", | ||||||
|  |             "BitRate": 164741, | ||||||
|  |             "Channels": 2, | ||||||
|  |             "SampleRate": 48000, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Profile": "LC", | ||||||
|  |             "Index": 1, | ||||||
|  |             "Score": 203 | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 2, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 3, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 4, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 5, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 6, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 7, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 8, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 9, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 10, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 11, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 12, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 13, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 14, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 15, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 16, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 17, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 18, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 19, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 20, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 21, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 22, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 23, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 24, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 25, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 26, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 27, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 28, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 29, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 30, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 31, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         } | ||||||
|  |     ], | ||||||
|  |     "Bitrate": 2590008, | ||||||
|  |     "DefaultAudioStreamIndex": 1, | ||||||
|  |     "DefaultSubtitleStreamIndex": 2 | ||||||
|  | } | ||||||
| @ -0,0 +1,582 @@ | |||||||
|  | { | ||||||
|  |     "Id": "a766d122b58e45d9492d17af77748bf5", | ||||||
|  |     "Path": "/Media/MyVideo-720p.mp4", | ||||||
|  |     "Container": "mov,mp4,m4a,3gp,3g2,mj2", | ||||||
|  |     "Size": 835317696, | ||||||
|  |     "Name": "MyVideo-720p", | ||||||
|  |     "ETag": "579a34c6d5dfb21d81539a51220b6a23", | ||||||
|  |     "RunTimeTicks": 25801230336, | ||||||
|  |     "SupportsTranscoding": true, | ||||||
|  |     "SupportsDirectStream": true, | ||||||
|  |     "SupportsDirectPlay": true, | ||||||
|  |     "SupportsProbing": true, | ||||||
|  |     "MediaStreams": [ | ||||||
|  |         { | ||||||
|  |             "Codec": "h264", | ||||||
|  |             "CodecTag": "avc1", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/11988", | ||||||
|  |             "VideoRange": "SDR", | ||||||
|  |             "DisplayTitle": "720p H264 SDR", | ||||||
|  |             "NalLengthSize": "0", | ||||||
|  |             "BitRate": 2032876, | ||||||
|  |             "BitDepth": 8, | ||||||
|  |             "RefFrames": 1, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Height": 720, | ||||||
|  |             "Width": 1280, | ||||||
|  |             "AverageFrameRate": 23.976, | ||||||
|  |             "RealFrameRate": 23.976, | ||||||
|  |             "Profile": "High", | ||||||
|  |             "Type": 1, | ||||||
|  |             "AspectRatio": "16:9", | ||||||
|  |             "PixelFormat": "yuv420p", | ||||||
|  |             "Level": 41 | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "aac", | ||||||
|  |             "CodecTag": "mp4a", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/48000", | ||||||
|  |             "DisplayTitle": "En - AAC - Stereo - Default", | ||||||
|  |             "ChannelLayout": "stereo", | ||||||
|  |             "BitRate": 164741, | ||||||
|  |             "Channels": 2, | ||||||
|  |             "SampleRate": 48000, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Profile": "LC", | ||||||
|  |             "Index": 1, | ||||||
|  |             "Score": 203 | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 2, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 3, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 4, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 5, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 6, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 7, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 8, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 9, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 10, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 11, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 12, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 13, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 14, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 15, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 16, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 17, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 18, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 19, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 20, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 21, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 22, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 23, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 24, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 25, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 26, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 27, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 28, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 29, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 30, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 31, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         }, | ||||||
|  |         { | ||||||
|  |             "Codec": "srt", | ||||||
|  |             "Language": "eng", | ||||||
|  |             "TimeBase": "1/1000000", | ||||||
|  |             "localizedUndefined": "Undefined", | ||||||
|  |             "localizedDefault": "Default", | ||||||
|  |             "localizedForced": "Forced", | ||||||
|  |             "DisplayTitle": "En - Default", | ||||||
|  |             "BitRate": 92, | ||||||
|  |             "IsDefault": true, | ||||||
|  |             "Type": 2, | ||||||
|  |             "Index": 32, | ||||||
|  |             "Score": 6421, | ||||||
|  |             "IsExternal": true, | ||||||
|  |             "IsTextSubtitleStream": true, | ||||||
|  |             "SupportsExternalStream": true | ||||||
|  |         } | ||||||
|  |     ], | ||||||
|  |     "Bitrate": 2590008, | ||||||
|  |     "DefaultAudioStreamIndex": 1, | ||||||
|  |     "DefaultSubtitleStreamIndex": 2 | ||||||
|  | } | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user