Bläddra i källkod

Merge pull request #7443 from whiteowl3/strm-probe

Cody Robibero 3 år sedan
förälder
incheckning
8056b0e961

+ 4 - 2
MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs

@@ -461,14 +461,16 @@ namespace MediaBrowser.MediaEncoding.Encoder
 
             using (var processWrapper = new ProcessWrapper(process, this))
             {
+                await using var memoryStream = new MemoryStream();
                 _logger.LogDebug("Starting ffprobe with args {Args}", args);
                 StartProcess(processWrapper);
-
+                await process.StandardOutput.BaseStream.CopyToAsync(memoryStream, cancellationToken: cancellationToken);
+                memoryStream.Seek(0, SeekOrigin.Begin);
                 InternalMediaInfoResult result;
                 try
                 {
                     result = await JsonSerializer.DeserializeAsync<InternalMediaInfoResult>(
-                                        process.StandardOutput.BaseStream,
+                                        memoryStream,
                                         _jsonSerializerOptions,
                                         cancellationToken: cancellationToken).ConfigureAwait(false);
                 }

+ 15 - 12
MediaBrowser.Providers/MediaInfo/MediaInfoResolver.cs

@@ -100,25 +100,28 @@ namespace MediaBrowser.Providers.MediaInfo
 
             foreach (var pathInfo in pathInfos)
             {
-                var mediaInfo = await GetMediaInfo(pathInfo.Path, _type, cancellationToken).ConfigureAwait(false);
-
-                if (mediaInfo.MediaStreams.Count == 1)
+                if (!pathInfo.Path.AsSpan().EndsWith(".strm", StringComparison.OrdinalIgnoreCase))
                 {
-                    MediaStream mediaStream = mediaInfo.MediaStreams[0];
-                    mediaStream.Index = startIndex++;
-                    mediaStream.IsDefault = pathInfo.IsDefault || mediaStream.IsDefault;
-                    mediaStream.IsForced = pathInfo.IsForced || mediaStream.IsForced;
+                    var mediaInfo = await GetMediaInfo(pathInfo.Path, _type, cancellationToken).ConfigureAwait(false);
 
-                    mediaStreams.Add(MergeMetadata(mediaStream, pathInfo));
-                }
-                else
-                {
-                    foreach (MediaStream mediaStream in mediaInfo.MediaStreams)
+                    if (mediaInfo.MediaStreams.Count == 1)
                     {
+                        MediaStream mediaStream = mediaInfo.MediaStreams[0];
                         mediaStream.Index = startIndex++;
+                        mediaStream.IsDefault = pathInfo.IsDefault || mediaStream.IsDefault;
+                        mediaStream.IsForced = pathInfo.IsForced || mediaStream.IsForced;
 
                         mediaStreams.Add(MergeMetadata(mediaStream, pathInfo));
                     }
+                    else
+                    {
+                        foreach (MediaStream mediaStream in mediaInfo.MediaStreams)
+                        {
+                            mediaStream.Index = startIndex++;
+
+                            mediaStreams.Add(MergeMetadata(mediaStream, pathInfo));
+                        }
+                    }
                 }
             }