Luke Pulverenti 9 лет назад
Родитель
Сommit
9edda5782b

+ 5 - 0
MediaBrowser.Server.Implementations/LiveTv/EmbyTV/DirectRecorder.cs

@@ -23,6 +23,11 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
             _fileSystem = fileSystem;
         }
 
+        public string GetOutputPath(MediaSourceInfo mediaSource, string targetFile)
+        {
+            return targetFile;
+        }
+
         public async Task Record(MediaSourceInfo mediaSource, string targetFile, TimeSpan duration, Action onStarted, CancellationToken cancellationToken)
         {
             var httpRequestOptions = new HttpRequestOptions()

+ 1 - 4
MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EmbyTV.cs

@@ -898,10 +898,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
 
                     var recorder = await GetRecorder().ConfigureAwait(false);
 
-                    if (recorder is EncodedRecorder)
-                    {
-                        recordPath = Path.ChangeExtension(recordPath, ".mp4");
-                    }
+                    recordPath = recorder.GetOutputPath(mediaStreamInfo, recordPath);
                     recordPath = EnsureFileUnique(recordPath, timer.Id);
                     _fileSystem.CreateDirectory(Path.GetDirectoryName(recordPath));
                     activeRecordingInfo.Path = recordPath;

+ 10 - 0
MediaBrowser.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs

@@ -42,6 +42,16 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
             _liveTvOptions = liveTvOptions;
         }
 
+        public string GetOutputPath(MediaSourceInfo mediaSource, string targetFile)
+        {
+            if (_liveTvOptions.EnableOriginalAudioWithEncodedRecordings)
+            {
+                return Path.ChangeExtension(targetFile, ".mkv");
+            }
+
+            return Path.ChangeExtension(targetFile, ".mp4");
+        }
+
         public async Task Record(MediaSourceInfo mediaSource, string targetFile, TimeSpan duration, Action onStarted, CancellationToken cancellationToken)
         {
             if (mediaSource.RunTimeTicks.HasValue)

+ 2 - 0
MediaBrowser.Server.Implementations/LiveTv/EmbyTV/IRecorder.cs

@@ -17,5 +17,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv.EmbyTV
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <returns>Task.</returns>
         Task Record(MediaSourceInfo mediaSource, string targetFile, TimeSpan duration, Action onStarted, CancellationToken cancellationToken);
+
+        string GetOutputPath(MediaSourceInfo mediaSource, string targetFile);
     }
 }