Browse Source

allow strm probe to succeed

whiteowl3 3 years ago
parent
commit
6f25291931

+ 5 - 3
MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs

@@ -458,17 +458,19 @@ namespace MediaBrowser.MediaEncoding.Encoder
             {
                 _logger.LogDebug("{ProcessFileName} {ProcessArgs}", process.StartInfo.FileName, process.StartInfo.Arguments);
             }
-
+            
             using (var processWrapper = new ProcessWrapper(process, this))
             {
+                MemoryStream 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.EndsWith(".strm"))
                 {
-                    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));
+                        }
+                    }
                 }
             }