فهرست منبع

Merge pull request #2482 from MediaBrowser/dev

Dev
Luke 8 سال پیش
والد
کامیت
e298968fe5

+ 12 - 5
Emby.Server.Implementations/LiveTv/EmbyTV/EncodedRecorder.cs

@@ -65,6 +65,11 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
             }
         }
 
+        private bool CopySubtitles
+        {
+            get { return string.Equals(OutputFormat, "mkv", StringComparison.OrdinalIgnoreCase); }
+        }
+
         public string GetOutputPath(MediaSourceInfo mediaSource, string targetFile)
         {
             return Path.ChangeExtension(targetFile, "." + OutputFormat);
@@ -154,8 +159,8 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
 
             var durationParam = " -t " + _mediaEncoder.GetTimeParameter(duration.Ticks);
             var inputModifiers = "-fflags +genpts -async 1 -vsync -1";
-            var mapArgs = string.Equals(OutputFormat, "mkv", StringComparison.OrdinalIgnoreCase) ? "-map 0" : "-sn";
-            var commandLineArgs = "-i \"{0}\"{4} " + mapArgs + " {2} -map_metadata -1 -threads 0 {3} -y \"{1}\"";
+            var mapArgs = "-map 0 -ignore_unknown";
+            var commandLineArgs = "-i \"{0}\"{5} " + mapArgs + " {2} -map_metadata -1 -threads 0 {3}{4} -y \"{1}\"";
 
             long startTimeTicks = 0;
             //if (mediaSource.DateLiveStreamOpened.HasValue)
@@ -183,7 +188,9 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
                   (analyzeDurationSeconds * 1000000).ToString(CultureInfo.InvariantCulture);
             inputModifiers += analyzeDuration;
 
-            commandLineArgs = string.Format(commandLineArgs, inputTempFile, targetFile, videoArgs, GetAudioArgs(mediaSource), durationParam);
+            var subtitleArgs = CopySubtitles ? " -codec:s copy" : " -sn";
+
+            commandLineArgs = string.Format(commandLineArgs, inputTempFile, targetFile, videoArgs, GetAudioArgs(mediaSource), subtitleArgs, durationParam);
 
             return inputModifiers + " " + commandLineArgs;
         }
@@ -196,7 +203,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
             // do not copy aac because many players have difficulty with aac_latm
             if (_liveTvOptions.EnableOriginalAudioWithEncodedRecordings && !string.Equals(inputAudioCodec, "aac", StringComparison.OrdinalIgnoreCase))
             {
-                return "-codec:a:0 copy";
+                return "-codec:a copy";
             }
 
             var audioChannels = 2;
@@ -205,7 +212,7 @@ namespace Emby.Server.Implementations.LiveTv.EmbyTV
             {
                 audioChannels = audioStream.Channels ?? audioChannels;
             }
-            return "-codec:a:0 aac -strict experimental -ab 320000";
+            return "-codec:a aac -strict experimental -ab 320000";
         }
 
         private bool EncodeVideo(MediaSourceInfo mediaSource)

+ 14 - 10
MediaBrowser.Providers/MediaInfo/FFProbeVideoInfo.cs

@@ -348,7 +348,7 @@ namespace MediaBrowser.Providers.MediaInfo
         {
             var isFullRefresh = options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh;
 
-            if (!video.LockedFields.Contains(MetadataFields.OfficialRating))
+            if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.OfficialRating))
             {
                 if (!string.IsNullOrWhiteSpace(data.OfficialRating) || isFullRefresh)
                 {
@@ -361,7 +361,7 @@ namespace MediaBrowser.Providers.MediaInfo
                 video.OfficialRatingDescription = data.OfficialRatingDescription;
             }
 
-            if (!video.LockedFields.Contains(MetadataFields.Genres))
+            if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.Genres))
             {
                 if (video.Genres.Count == 0 || isFullRefresh)
                 {
@@ -374,7 +374,7 @@ namespace MediaBrowser.Providers.MediaInfo
                 }
             }
 
-            if (!video.LockedFields.Contains(MetadataFields.Studios))
+            if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.Studios))
             {
                 if (video.Studios.Count == 0 || isFullRefresh)
                 {
@@ -415,14 +415,18 @@ namespace MediaBrowser.Providers.MediaInfo
                     video.ParentIndexNumber = data.ParentIndexNumber;
                 }
             }
-            if (!string.IsNullOrWhiteSpace(data.Name))
+
+            if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.Name))
             {
-                if (string.IsNullOrWhiteSpace(video.Name) || (string.Equals(video.Name, Path.GetFileNameWithoutExtension(video.Path), StringComparison.OrdinalIgnoreCase) && !video.ProviderIds.Any()))
+                if (!string.IsNullOrWhiteSpace(data.Name))
                 {
-                    // Don't use the embedded name for extras because it will often be the same name as the movie
-                    if (!video.ExtraType.HasValue && !video.IsOwnedItem)
+                    if (string.IsNullOrWhiteSpace(video.Name) || (string.Equals(video.Name, Path.GetFileNameWithoutExtension(video.Path), StringComparison.OrdinalIgnoreCase) && !video.ProviderIds.Any()))
                     {
-                        video.Name = data.Name;
+                        // Don't use the embedded name for extras because it will often be the same name as the movie
+                        if (!video.ExtraType.HasValue && !video.IsOwnedItem)
+                        {
+                            video.Name = data.Name;
+                        }
                     }
                 }
             }
@@ -433,7 +437,7 @@ namespace MediaBrowser.Providers.MediaInfo
                 video.ProductionYear = video.PremiereDate.Value.ToLocalTime().Year;
             }
 
-            if (!video.LockedFields.Contains(MetadataFields.Overview))
+            if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.Overview))
             {
                 if (string.IsNullOrWhiteSpace(video.Overview) || isFullRefresh)
                 {
@@ -446,7 +450,7 @@ namespace MediaBrowser.Providers.MediaInfo
         {
             var isFullRefresh = options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh;
 
-            if (!video.LockedFields.Contains(MetadataFields.Cast))
+            if (!video.IsLocked && !video.LockedFields.Contains(MetadataFields.Cast))
             {
                 if (isFullRefresh || _libraryManager.GetPeople(video).Count == 0)
                 {

+ 8 - 49
MediaBrowser.Providers/Music/MusicBrainzAlbumProvider.cs

@@ -45,7 +45,6 @@ namespace MediaBrowser.Providers.Music
         public async Task<IEnumerable<RemoteSearchResult>> GetSearchResults(AlbumInfo searchInfo, CancellationToken cancellationToken)
         {
             var releaseId = searchInfo.GetReleaseId();
-            var releaseGroupId = searchInfo.GetReleaseGroupId();
 
             string url = null;
             var isNameSearch = false;
@@ -54,10 +53,6 @@ namespace MediaBrowser.Providers.Music
             {
                 url = string.Format("/ws/2/release/?query=reid:{0}", releaseId);
             }
-            else if (!string.IsNullOrEmpty(releaseGroupId))
-            {
-                url = string.Format("/ws/2/release?release-group={0}", releaseGroupId);
-            }
             else
             {
                 var artistMusicBrainzId = searchInfo.GetMusicBrainzArtistId();
@@ -136,14 +131,7 @@ namespace MediaBrowser.Providers.Music
                 Item = new MusicAlbum()
             };
 
-            // If we have a release group Id but not a release Id...
-            if (string.IsNullOrWhiteSpace(releaseId) && !string.IsNullOrWhiteSpace(releaseGroupId))
-            {
-                releaseId = await GetReleaseIdFromReleaseGroupId(releaseGroupId, cancellationToken).ConfigureAwait(false);
-                result.HasMetadata = true;
-            }
-
-            if (string.IsNullOrWhiteSpace(releaseId))
+            if (string.IsNullOrEmpty(releaseId))
             {
                 var artistMusicBrainzId = id.GetMusicBrainzArtistId();
 
@@ -151,13 +139,13 @@ namespace MediaBrowser.Providers.Music
 
                 if (releaseResult != null)
                 {
-                    if (!string.IsNullOrWhiteSpace(releaseResult.ReleaseId))
+                    if (!string.IsNullOrEmpty(releaseResult.ReleaseId))
                     {
                         releaseId = releaseResult.ReleaseId;
                         result.HasMetadata = true;
                     }
 
-                    if (!string.IsNullOrWhiteSpace(releaseResult.ReleaseGroupId))
+                    if (!string.IsNullOrEmpty(releaseResult.ReleaseGroupId))
                     {
                         releaseGroupId = releaseResult.ReleaseGroupId;
                         result.HasMetadata = true;
@@ -169,13 +157,13 @@ namespace MediaBrowser.Providers.Music
             }
 
             // If we have a release Id but not a release group Id...
-            if (!string.IsNullOrWhiteSpace(releaseId) && string.IsNullOrWhiteSpace(releaseGroupId))
+            if (!string.IsNullOrEmpty(releaseId) && string.IsNullOrEmpty(releaseGroupId))
             {
-                releaseGroupId = await GetReleaseGroupFromReleaseId(releaseId, cancellationToken).ConfigureAwait(false);
+                releaseGroupId = await GetReleaseGroupId(releaseId, cancellationToken).ConfigureAwait(false);
                 result.HasMetadata = true;
             }
 
-            if (!string.IsNullOrWhiteSpace(releaseId) || !string.IsNullOrWhiteSpace(releaseGroupId))
+            if (!string.IsNullOrEmpty(releaseId) || !string.IsNullOrEmpty(releaseGroupId))
             {
                 result.HasMetadata = true;
             }
@@ -423,42 +411,13 @@ namespace MediaBrowser.Providers.Music
             }
         }
 
-        private async Task<string> GetReleaseIdFromReleaseGroupId(string releaseGroupId, CancellationToken cancellationToken)
-        {
-            var url = string.Format("/ws/2/release?release-group={0}", releaseGroupId);
-
-            using (var stream = await GetMusicBrainzResponse(url, true, cancellationToken).ConfigureAwait(false))
-            {
-                using (var oReader = new StreamReader(stream, Encoding.UTF8))
-                {
-                    var settings = _xmlSettings.Create(false);
-
-                    settings.CheckCharacters = false;
-                    settings.IgnoreProcessingInstructions = true;
-                    settings.IgnoreComments = true;
-
-                    using (var reader = XmlReader.Create(oReader, settings))
-                    {
-                        var result = ReleaseResult.Parse(reader).FirstOrDefault();
-
-                        if (result != null)
-                        {
-                            return result.ReleaseId;
-                        }
-                    }
-                }
-            }
-
-            return null;
-        }
-
         /// <summary>
         /// Gets the release group id internal.
         /// </summary>
         /// <param name="releaseEntryId">The release entry id.</param>
         /// <param name="cancellationToken">The cancellation token.</param>
         /// <returns>Task{System.String}.</returns>
-        private async Task<string> GetReleaseGroupFromReleaseId(string releaseEntryId, CancellationToken cancellationToken)
+        private async Task<string> GetReleaseGroupId(string releaseEntryId, CancellationToken cancellationToken)
         {
             var url = string.Format("/ws/2/release-group/?query=reid:{0}", releaseEntryId);
 
@@ -662,4 +621,4 @@ namespace MediaBrowser.Providers.Music
             public int throttleMs { get; set; }
         }
     }
-}
+}

+ 1 - 1
SharedVersion.cs

@@ -1,3 +1,3 @@
 using System.Reflection;
 
-[assembly: AssemblyVersion("3.2.1.113")]
+[assembly: AssemblyVersion("3.2.1.114")]