Ver código fonte

update mjpeg stream detection

Luke Pulverenti 8 anos atrás
pai
commit
1f63a30ee7

+ 0 - 5
MediaBrowser.Controller/MediaEncoding/EncodingHelper.cs

@@ -1190,11 +1190,6 @@ namespace MediaBrowser.Controller.MediaEncoding
                 }
             }
 
-            if (type == MediaStreamType.Video)
-            {
-                streams = streams.Where(i => !string.Equals(i.Codec, "mjpeg", StringComparison.OrdinalIgnoreCase)).ToList();
-            }
-
             if (returnFirstIfNoIndex && type == MediaStreamType.Audio)
             {
                 return streams.FirstOrDefault(i => i.Channels.HasValue && i.Channels.Value > 0) ??

+ 26 - 3
MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs

@@ -558,13 +558,36 @@ namespace MediaBrowser.MediaEncoding.Probing
                     ? MediaStreamType.EmbeddedImage
                     : MediaStreamType.Video;
 
+                stream.AverageFrameRate = GetFrameRate(streamInfo.avg_frame_rate);
+                stream.RealFrameRate = GetFrameRate(streamInfo.r_frame_rate);
+
+                if (isAudio || string.Equals(stream.Codec, "gif", StringComparison.OrdinalIgnoreCase) ||
+                    string.Equals(stream.Codec, "png", StringComparison.OrdinalIgnoreCase))
+                {
+                    stream.Type = MediaStreamType.EmbeddedImage;
+                }
+                else if (string.Equals(stream.Codec, "mjpeg", StringComparison.OrdinalIgnoreCase))
+                {
+                    // How to differentiate between video and embedded image?
+                    // The only difference I've seen thus far is presence of codec tag, also embedded images have high (unusual) framerates 
+                    if (!string.IsNullOrWhiteSpace(stream.CodecTag))
+                    {
+                        stream.Type = MediaStreamType.Video;
+                    }
+                    else
+                    {
+                        stream.Type = MediaStreamType.EmbeddedImage;
+                    }
+                }
+                else
+                {
+                    stream.Type = MediaStreamType.Video;
+                }
+
                 stream.Width = streamInfo.width;
                 stream.Height = streamInfo.height;
                 stream.AspectRatio = GetAspectRatio(streamInfo);
 
-                stream.AverageFrameRate = GetFrameRate(streamInfo.avg_frame_rate);
-                stream.RealFrameRate = GetFrameRate(streamInfo.r_frame_rate);
-
                 if (streamInfo.bits_per_sample > 0)
                 {
                     stream.BitDepth = streamInfo.bits_per_sample;

+ 1 - 0
MediaBrowser.Model/LiveTv/LiveTvOptions.cs

@@ -36,6 +36,7 @@ namespace MediaBrowser.Model.LiveTv
             MediaLocationsCreated = new string[] { };
             RecordingEncodingFormat = "mp4";
             RecordingPostProcessorArguments = "\"{path}\"";
+            EnableRecordingEncoding = true;
         }
     }
 

+ 3 - 0
MediaBrowser.Model/Net/MimeTypes.cs

@@ -322,6 +322,9 @@ namespace MediaBrowser.Model.Net
                 throw new ArgumentNullException("mimeType");
             }
 
+            // handle text/html; charset=UTF-8
+            mimeType = mimeType.Split(';')[0];
+
             string result;
             if (ExtensionLookup.TryGetValue(mimeType, out result))
             {