diff options
| author | Luke <luke.pulverenti@gmail.com> | 2017-01-26 15:40:15 -0500 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2017-01-26 15:40:15 -0500 |
| commit | 1cd5e208713a057680b915c9136e0d4493611ed3 (patch) | |
| tree | 59e258ecd246dfb253c06cade5f0092af9874774 /MediaBrowser.MediaEncoding | |
| parent | 0d0e4ad695f3657d7ca3eef1ed54fe8608a490a1 (diff) | |
| parent | 9ebf9162ab68fbf61a1dd5e7801eb9abe985762c (diff) | |
Merge pull request #2425 from MediaBrowser/beta
Beta
Diffstat (limited to 'MediaBrowser.MediaEncoding')
4 files changed, 33 insertions, 42 deletions
diff --git a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs index 80bbc87e38..7654ec1d76 100644 --- a/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/BaseEncoder.cs @@ -827,8 +827,16 @@ namespace MediaBrowser.MediaEncoding.Encoder return string.Format(" -b:v {0}", bitrate.Value.ToString(UsCulture)); } + if (string.Equals(videoCodec, "libx264", StringComparison.OrdinalIgnoreCase)) + { + // h264 + return string.Format(" -maxrate {0} -bufsize {1}", + bitrate.Value.ToString(UsCulture), + (bitrate.Value * 2).ToString(UsCulture)); + } + // h264 - return string.Format(" -maxrate {0} -bufsize {1}", + return string.Format(" -b:v {0} -maxrate {0} -bufsize {1}", bitrate.Value.ToString(UsCulture), (bitrate.Value * 2).ToString(UsCulture)); } @@ -896,7 +904,8 @@ namespace MediaBrowser.MediaEncoding.Encoder } else { - args += "-map -0:v"; + // No known video stream + args += "-vn"; } if (state.AudioStream != null) diff --git a/MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs b/MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs index cec272b398..e547f2fae4 100644 --- a/MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs +++ b/MediaBrowser.MediaEncoding/Encoder/EncodingUtils.cs @@ -8,25 +8,7 @@ namespace MediaBrowser.MediaEncoding.Encoder { public static string GetInputArgument(List<string> inputFiles, MediaProtocol protocol) { - if (protocol == MediaProtocol.Http) - { - var url = inputFiles.First(); - - return string.Format("\"{0}\"", url); - } - if (protocol == MediaProtocol.Rtmp) - { - var url = inputFiles.First(); - - return string.Format("\"{0}\"", url); - } - if (protocol == MediaProtocol.Rtsp) - { - var url = inputFiles.First(); - - return string.Format("\"{0}\"", url); - } - if (protocol == MediaProtocol.Udp) + if (protocol != MediaProtocol.File) { var url = inputFiles.First(); diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index 89730a11fd..6a5945b761 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -533,8 +533,10 @@ namespace MediaBrowser.MediaEncoding.Encoder probeSize = probeSize + " " + analyzeDuration; probeSize = probeSize.Trim(); + var forceEnableLogging = request.Protocol != MediaProtocol.File; + return GetMediaInfoInternal(GetInputArgument(inputFiles, request.Protocol), request.InputPath, request.Protocol, extractChapters, - probeSize, request.MediaType == DlnaProfileType.Audio, request.VideoType, cancellationToken); + probeSize, request.MediaType == DlnaProfileType.Audio, request.VideoType, forceEnableLogging, cancellationToken); } /// <summary> @@ -577,14 +579,6 @@ namespace MediaBrowser.MediaEncoding.Encoder /// <summary> /// Gets the media info internal. /// </summary> - /// <param name="inputPath">The input path.</param> - /// <param name="primaryPath">The primary path.</param> - /// <param name="protocol">The protocol.</param> - /// <param name="extractChapters">if set to <c>true</c> [extract chapters].</param> - /// <param name="probeSizeArgument">The probe size argument.</param> - /// <param name="isAudio">if set to <c>true</c> [is audio].</param> - /// <param name="videoType">Type of the video.</param> - /// <param name="cancellationToken">The cancellation token.</param> /// <returns>Task{MediaInfoResult}.</returns> private async Task<MediaInfo> GetMediaInfoInternal(string inputPath, string primaryPath, @@ -593,6 +587,7 @@ namespace MediaBrowser.MediaEncoding.Encoder string probeSizeArgument, bool isAudio, VideoType videoType, + bool forceEnableLogging, CancellationToken cancellationToken) { var args = extractChapters @@ -614,7 +609,14 @@ namespace MediaBrowser.MediaEncoding.Encoder EnableRaisingEvents = true }); - _logger.Debug("{0} {1}", process.StartInfo.FileName, process.StartInfo.Arguments); + if (forceEnableLogging) + { + _logger.Info("{0} {1}", process.StartInfo.FileName, process.StartInfo.Arguments); + } + else + { + _logger.Debug("{0} {1}", process.StartInfo.FileName, process.StartInfo.Arguments); + } using (var processWrapper = new ProcessWrapper(process, this, _logger)) { @@ -1248,8 +1250,8 @@ namespace MediaBrowser.MediaEncoding.Encoder lock (_runningProcesses) { proceses = _runningProcesses.ToList(); + _runningProcesses.Clear(); } - _runningProcesses.Clear(); foreach (var process in proceses) { @@ -1319,16 +1321,16 @@ namespace MediaBrowser.MediaEncoding.Encoder { } - lock (_mediaEncoder._runningProcesses) - { - _mediaEncoder._runningProcesses.Remove(this); - } - DisposeProcess(process); } private void DisposeProcess(IProcess process) { + lock (_mediaEncoder._runningProcesses) + { + _mediaEncoder._runningProcesses.Remove(this); + } + try { process.Dispose(); diff --git a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs index c16d3afbda..2f8ecaece9 100644 --- a/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs +++ b/MediaBrowser.MediaEncoding/Probing/ProbeResultNormalizer.cs @@ -47,6 +47,8 @@ namespace MediaBrowser.MediaEncoding.Probing info.MediaStreams = internalStreams.Select(s => GetMediaStream(isAudio, s, data.format)) .Where(i => i != null) + // Drop subtitle streams if we don't know the codec because it will just cause failures if we don't know how to handle them + .Where(i => i.Type != MediaStreamType.Subtitle || !string.IsNullOrWhiteSpace(i.Codec)) .ToList(); if (data.format != null) @@ -185,11 +187,7 @@ namespace MediaBrowser.MediaEncoding.Probing // If ffprobe reported the container bitrate as being the same as the video stream bitrate, then it's wrong if (videoStreamsBitrate == (info.Bitrate ?? 0)) { - var streamBitrates = info.MediaStreams.Where(i => !i.IsExternal).Select(i => i.BitRate ?? 0).Sum(); - if (streamBitrates > (info.Bitrate ?? 0)) - { - info.Bitrate = streamBitrates; - } + info.InferTotalBitrate(true); } } |
