소스 검색

Allow direct play even if no audio stream is available

Maxr1998 2 년 전
부모
커밋
8753b7200f
1개의 변경된 파일15개의 추가작업 그리고 12개의 파일을 삭제
  1. 15 12
      MediaBrowser.Model/Dlna/StreamBuilder.cs

+ 15 - 12
MediaBrowser.Model/Dlna/StreamBuilder.cs

@@ -436,9 +436,9 @@ namespace MediaBrowser.Model.Dlna
                 {
                 {
                     containerSupported = true;
                     containerSupported = true;
 
 
-                    videoSupported = videoStream != null && profile.SupportsVideoCodec(videoStream.Codec);
+                    videoSupported = videoStream == null || profile.SupportsVideoCodec(videoStream.Codec);
 
 
-                    audioSupported = audioStream != null && profile.SupportsAudioCodec(audioStream.Codec);
+                    audioSupported = audioStream == null || profile.SupportsAudioCodec(audioStream.Codec);
 
 
                     if (videoSupported && audioSupported)
                     if (videoSupported && audioSupported)
                     {
                     {
@@ -447,18 +447,17 @@ namespace MediaBrowser.Model.Dlna
                 }
                 }
             }
             }
 
 
-            var list = new List<TranscodeReason>();
             if (!containerSupported)
             if (!containerSupported)
             {
             {
                 reasons |= TranscodeReason.ContainerNotSupported;
                 reasons |= TranscodeReason.ContainerNotSupported;
             }
             }
 
 
-            if (videoStream != null && !videoSupported)
+            if (!videoSupported)
             {
             {
                 reasons |= TranscodeReason.VideoCodecNotSupported;
                 reasons |= TranscodeReason.VideoCodecNotSupported;
             }
             }
 
 
-            if (audioStream != null && !audioSupported)
+            if (!audioSupported)
             {
             {
                 reasons |= TranscodeReason.AudioCodecNotSupported;
                 reasons |= TranscodeReason.AudioCodecNotSupported;
             }
             }
@@ -1182,14 +1181,18 @@ namespace MediaBrowser.Model.Dlna
                     }
                     }
 
 
                     // Check audio codec
                     // Check audio codec
-                    var selectedAudioStream = candidateAudioStreams.FirstOrDefault(audioStream => directPlayProfile.SupportsAudioCodec(audioStream.Codec));
-                    if (selectedAudioStream == null)
+                    MediaStream selectedAudioStream = null;
+                    if (candidateAudioStreams.Any())
                     {
                     {
-                        directPlayProfileReasons |= TranscodeReason.AudioCodecNotSupported;
-                    }
-                    else
-                    {
-                        audioCodecProfileReasons = audioStreamMatches.GetValueOrDefault(selectedAudioStream);
+                        selectedAudioStream = candidateAudioStreams.FirstOrDefault(audioStream => directPlayProfile.SupportsAudioCodec(audioStream.Codec));
+                        if (selectedAudioStream == null)
+                        {
+                            directPlayProfileReasons |= TranscodeReason.AudioCodecNotSupported;
+                        }
+                        else
+                        {
+                            audioCodecProfileReasons = audioStreamMatches.GetValueOrDefault(selectedAudioStream);
+                        }
                     }
                     }
 
 
                     var failureReasons = directPlayProfileReasons | containerProfileReasons | subtitleProfileReasons;
                     var failureReasons = directPlayProfileReasons | containerProfileReasons | subtitleProfileReasons;