Bladeren bron

update next/previous buttons

Luke Pulverenti 11 jaren geleden
bovenliggende
commit
3cc608d781

+ 27 - 7
MediaBrowser.Api/Playback/BaseStreamingService.cs

@@ -307,7 +307,7 @@ namespace MediaBrowser.Api.Playback
             if (videoCodec.Equals("libvpx", StringComparison.OrdinalIgnoreCase))
             {
                 // http://www.webmproject.org/docs/encoder-parameters/
-                return "-speed 16 -quality good -profile:v 0 -slices 8";
+                return "-speed 16 -quality good -profile:v 0 -slices 8 -crf 18";
             }
 
             // asf/wmv
@@ -321,11 +321,11 @@ namespace MediaBrowser.Api.Playback
                 switch (GetQualitySetting())
                 {
                     case EncodingQuality.HighSpeed:
-                        return "-preset ultrafast";
+                        return "-preset ultrafast -crf 18";
                     case EncodingQuality.HighQuality:
-                        return "-preset superfast";
+                        return "-preset superfast -crf 18";
                     case EncodingQuality.MaxQuality:
-                        return "-preset superfast";
+                        return "-preset superfast -crf 18";
                     default:
                         throw new Exception("Unrecognized MediaEncodingQuality value.");
                 }
@@ -381,7 +381,7 @@ namespace MediaBrowser.Api.Playback
                 audioSampleRate,
                 volParam,
                 pts,
-                state.AudioSync.ToString(UsCulture));
+                state.AudioSync);
         }
 
         /// <summary>
@@ -994,6 +994,26 @@ namespace MediaBrowser.Api.Playback
             }
         }
 
+        protected double? GetFramerateParam(StreamState state)
+        {
+            if (state.VideoRequest != null && state.VideoRequest.Framerate.HasValue)
+            {
+                return state.VideoRequest.Framerate.Value;
+            }
+
+            if (state.VideoStream != null)
+            {
+                var contentRate = state.VideoStream.AverageFrameRate ?? state.VideoStream.RealFrameRate;
+
+                if (contentRate.HasValue && contentRate.Value > 23.976)
+                {
+                    return 23.976;
+                }
+            }
+
+            return null;
+        }
+
         /// <summary>
         /// Gets the state.
         /// </summary>
@@ -1068,7 +1088,7 @@ namespace MediaBrowser.Api.Playback
                 //state.RunTimeTicks = recording.RunTimeTicks;
                 state.ReadInputAtNativeFramerate = recording.RecordingInfo.Status == RecordingStatus.InProgress;
                 state.SendInputOverStandardInput = recording.RecordingInfo.Status == RecordingStatus.InProgress;
-                state.AudioSync = 1000;
+                state.AudioSync = "1000";
                 state.DeInterlace = true;
             }
             else if (item is LiveTvChannel)
@@ -1096,7 +1116,7 @@ namespace MediaBrowser.Api.Playback
 
                 state.SendInputOverStandardInput = true;
                 state.ReadInputAtNativeFramerate = true;
-                state.AudioSync = 1000;
+                state.AudioSync = "1000";
                 state.DeInterlace = true;
             }
             else

+ 7 - 3
MediaBrowser.Api/Playback/Hls/DynamicHlsService.cs

@@ -317,12 +317,16 @@ namespace MediaBrowser.Api.Playback.Hls
                 }
             }
 
-            if (state.VideoRequest.Framerate.HasValue)
+            var framerate = GetFramerateParam(state);
+            if (framerate.HasValue)
             {
-                args += string.Format(" -r {0}", state.VideoRequest.Framerate.Value);
+                args += string.Format(" -r {0}", framerate.Value.ToString(UsCulture));
             }
 
-            args += " -vsync vfr";
+            if (!string.IsNullOrEmpty(state.VideoSync))
+            {
+                args += " -vsync " + state.VideoSync;
+            }
 
             if (!string.IsNullOrEmpty(state.VideoRequest.Profile))
             {

+ 7 - 3
MediaBrowser.Api/Playback/Hls/VideoHlsService.cs

@@ -194,12 +194,16 @@ namespace MediaBrowser.Api.Playback.Hls
                 }
             }
 
-            if (state.VideoRequest.Framerate.HasValue)
+            var framerate = GetFramerateParam(state);
+            if (framerate.HasValue)
             {
-                args += string.Format(" -r {0}", state.VideoRequest.Framerate.Value);
+                args += string.Format(" -r {0}", framerate.Value.ToString(UsCulture));
             }
 
-            args += " -vsync vfr";
+            if (!string.IsNullOrEmpty(state.VideoSync))
+            {
+                args += " -vsync " + state.VideoSync;
+            }
 
             if (!string.IsNullOrEmpty(state.VideoRequest.Profile))
             {

+ 11 - 5
MediaBrowser.Api/Playback/Progressive/VideoService.cs

@@ -156,9 +156,10 @@ namespace MediaBrowser.Api.Playback.Progressive
                 }
             }
 
-            if (request.Framerate.HasValue)
+            var framerate = GetFramerateParam(state);
+            if (framerate.HasValue)
             {
-                args += string.Format(" -r {0}", request.Framerate.Value);
+                args += string.Format(" -r {0}", framerate.Value.ToString(UsCulture));
             }
 
             var qualityParam = GetVideoQualityParam(state, codec);
@@ -169,11 +170,13 @@ namespace MediaBrowser.Api.Playback.Progressive
             {
                 if (string.Equals(codec, "libvpx", StringComparison.OrdinalIgnoreCase))
                 {
-                    qualityParam += string.Format(" -minrate:v ({0}*.90) -maxrate:v ({0}*1.10) -bufsize:v {0} -b:v {0}", bitrate.Value.ToString(UsCulture));
+                    qualityParam += string.Format(" -b:v {0}", bitrate.Value.ToString(UsCulture));
                 }
                 else
                 {
-                    qualityParam += string.Format(" -b:v {0}", bitrate.Value.ToString(UsCulture));
+                    qualityParam += string.Format(" -maxrate {0} -bufsize {1}", 
+                        bitrate.Value.ToString(UsCulture),
+                        (bitrate.Value * 2).ToString(UsCulture));
                 }
             }
 
@@ -182,7 +185,10 @@ namespace MediaBrowser.Api.Playback.Progressive
                 args += " " + qualityParam.Trim();
             }
 
-            args += " -vsync vfr";
+            if (!string.IsNullOrEmpty(state.VideoSync))
+            {
+                args += " -vsync " + state.VideoSync;
+            }
 
             if (!string.IsNullOrEmpty(state.VideoRequest.Profile))
             {

+ 2 - 1
MediaBrowser.Api/Playback/StreamState.cs

@@ -59,7 +59,8 @@ namespace MediaBrowser.Api.Playback
 
         public long? RunTimeTicks;
 
-        public int AudioSync = 1;
+        public string AudioSync = "1";
+        public string VideoSync = "vfr";
 
         public bool DeInterlace { get; set; }
 

+ 0 - 5
MediaBrowser.Controller/Entities/BaseItem.cs

@@ -541,11 +541,6 @@ namespace MediaBrowser.Controller.Entities
         /// <value>The run time ticks.</value>
         public long? RunTimeTicks { get; set; }
 
-        /// <summary>
-        /// Gets or sets the original run time ticks.
-        /// </summary>
-        /// <value>The original run time ticks.</value>
-        public long? OriginalRunTimeTicks { get; set; }
         /// <summary>
         /// Gets or sets the production year.
         /// </summary>

+ 1 - 5
MediaBrowser.Controller/Providers/BaseItemXmlParser.cs

@@ -423,11 +423,7 @@ namespace MediaBrowser.Controller.Providers
                             if (int.TryParse(text.Split(' ')[0], NumberStyles.Integer, _usCulture, out runtime))
                             {
                                 // For audio and video don't replace ffmpeg data
-                                if (item is Video || item is Audio)
-                                {
-                                    item.OriginalRunTimeTicks = TimeSpan.FromMinutes(runtime).Ticks;
-                                }
-                                else
+                                if (!(item is Video || item is Audio))
                                 {
                                     item.RunTimeTicks = TimeSpan.FromMinutes(runtime).Ticks;
                                 }

+ 6 - 0
MediaBrowser.Model/LiveTv/LiveTvServiceInfo.cs

@@ -144,6 +144,12 @@ namespace MediaBrowser.Model.LiveTv
         /// <value>The channel identifier.</value>
         public string ChannelId { get; set; }
 
+        /// <summary>
+        /// Gets or sets the name of the channel.
+        /// </summary>
+        /// <value>The name of the channel.</value>
+        public string ChannelName { get; set; }
+        
         /// <summary>
         /// Gets or sets the recording identifier.
         /// </summary>

+ 0 - 3
MediaBrowser.Providers/Movies/MovieDbProvider.cs

@@ -796,9 +796,6 @@ namespace MediaBrowser.Providers.Movies
                 boxset.OfficialRating = firstChild != null ? firstChild.OfficialRating : null;
             }
 
-            if (movieData.runtime > 0)
-                movie.OriginalRunTimeTicks = TimeSpan.FromMinutes(movieData.runtime).Ticks;
-
             //studios
             if (movieData.production_companies != null && !movie.LockedFields.Contains(MetadataFields.Studios))
             {

+ 0 - 5
MediaBrowser.Server.Implementations/Dto/DtoService.cs

@@ -649,11 +649,6 @@ namespace MediaBrowser.Server.Implementations.Dto
                 dto.DateCreated = item.DateCreated;
             }
 
-            if (fields.Contains(ItemFields.OriginalRunTimeTicks))
-            {
-                dto.OriginalRunTimeTicks = item.OriginalRunTimeTicks;
-            }
-
             dto.DisplayMediaType = item.DisplayMediaType;
 
             if (fields.Contains(ItemFields.Settings))

+ 3 - 2
MediaBrowser.Server.Implementations/LiveTv/LiveTvDtoService.cs

@@ -271,7 +271,7 @@ namespace MediaBrowser.Server.Implementations.LiveTv
             return dto;
         }
 
-        public LiveTvTunerInfoDto GetTunerInfoDto(string serviceName, LiveTvTunerInfo info)
+        public LiveTvTunerInfoDto GetTunerInfoDto(string serviceName, LiveTvTunerInfo info, string channelName)
         {
             var dto = new LiveTvTunerInfoDto
             {
@@ -280,7 +280,8 @@ namespace MediaBrowser.Server.Implementations.LiveTv
                 Clients = info.Clients,
                 ProgramName = info.ProgramName,
                 SourceType = info.SourceType,
-                Status = info.Status
+                Status = info.Status,
+                ChannelName = channelName
             };
 
             if (!string.IsNullOrEmpty(info.ChannelId))

+ 14 - 1
MediaBrowser.Server.Implementations/LiveTv/LiveTvManager.cs

@@ -1435,7 +1435,20 @@ namespace MediaBrowser.Server.Implementations.LiveTv
                 info.HasUpdateAvailable = statusInfo.HasUpdateAvailable;
                 info.HomePageUrl = service.HomePageUrl;
 
-                info.Tuners = statusInfo.Tuners.Select(i => _tvDtoService.GetTunerInfoDto(service.Name, i)).ToList();
+                info.Tuners = statusInfo.Tuners.Select(i =>
+                {
+                    string channelName = null;
+
+                    if (!string.IsNullOrEmpty(i.ChannelId))
+                    {
+                        var internalChannelId = _tvDtoService.GetInternalChannelId(service.Name, i.ChannelId);
+                        var channel = GetInternalChannel(internalChannelId);
+                        channelName = channel == null ? null : channel.Name;
+                    }
+
+                    return _tvDtoService.GetTunerInfoDto(service.Name, i, channelName);
+
+                }).ToList();
             }
             catch (Exception ex)
             {

+ 2 - 2
Nuget/MediaBrowser.Common.Internal.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Common.Internal</id>
-        <version>3.0.308</version>
+        <version>3.0.309</version>
         <title>MediaBrowser.Common.Internal</title>
         <authors>Luke</authors>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains common components shared by Media Browser Theater and Media Browser Server. Not intended for plugin developer consumption.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.308" />
+            <dependency id="MediaBrowser.Common" version="3.0.309" />
             <dependency id="NLog" version="2.1.0" />
             <dependency id="SimpleInjector" version="2.4.0" />
             <dependency id="sharpcompress" version="0.10.2" />

+ 1 - 1
Nuget/MediaBrowser.Common.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Common</id>
-        <version>3.0.308</version>
+        <version>3.0.309</version>
         <title>MediaBrowser.Common</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>

+ 2 - 2
Nuget/MediaBrowser.Server.Core.nuspec

@@ -2,7 +2,7 @@
 <package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
     <metadata>
         <id>MediaBrowser.Server.Core</id>
-        <version>3.0.308</version>
+        <version>3.0.309</version>
         <title>Media Browser.Server.Core</title>
         <authors>Media Browser Team</authors>
         <owners>ebr,Luke,scottisafool</owners>
@@ -12,7 +12,7 @@
         <description>Contains core components required to build plugins for Media Browser Server.</description>
         <copyright>Copyright © Media Browser 2013</copyright>
         <dependencies>
-            <dependency id="MediaBrowser.Common" version="3.0.308" />
+            <dependency id="MediaBrowser.Common" version="3.0.309" />
         </dependencies>
     </metadata>
     <files>