From 4ca526979ddb665ce905cd5943738a2c5657ab31 Mon Sep 17 00:00:00 2001 From: Luke Pulverenti Date: Thu, 27 Aug 2015 11:58:07 -0400 Subject: 3.0.5713.4 --- MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs | 26 ++++++++++------------ 1 file changed, 12 insertions(+), 14 deletions(-) (limited to 'MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs') diff --git a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs index 1005decb1..d30b105a5 100644 --- a/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs +++ b/MediaBrowser.MediaEncoding/Encoder/MediaEncoder.cs @@ -248,8 +248,7 @@ namespace MediaBrowser.MediaEncoding.Encoder { try { - //stream.KeyFrames = await GetKeyFrames(inputPath, stream.Index, cancellationToken) - // .ConfigureAwait(false); + //stream.KeyFrames = await GetKeyFrames(inputPath, stream.Index, cancellationToken).ConfigureAwait(false); } catch (OperationCanceledException) { @@ -283,7 +282,7 @@ namespace MediaBrowser.MediaEncoding.Encoder private async Task> GetKeyFrames(string inputPath, int videoStreamIndex, CancellationToken cancellationToken) { - const string args = "-i {0} -select_streams v:{1} -show_frames -show_entries frame=pkt_dts,key_frame -print_format compact"; + const string args = "-i {0} -select_streams v:{1} -show_packets -print_format compact -show_entries packet=flags -show_entries packet=pts_time"; var process = new Process { @@ -318,7 +317,7 @@ namespace MediaBrowser.MediaEncoding.Encoder { process.BeginErrorReadLine(); - await StartReadingOutput(process.StandardOutput.BaseStream, lines, 120000, cancellationToken).ConfigureAwait(false); + await StartReadingOutput(process.StandardOutput.BaseStream, lines, cancellationToken).ConfigureAwait(false); } catch (OperationCanceledException) { @@ -336,7 +335,7 @@ namespace MediaBrowser.MediaEncoding.Encoder } } - private async Task StartReadingOutput(Stream source, List lines, int timeoutMs, CancellationToken cancellationToken) + private async Task StartReadingOutput(Stream source, List lines, CancellationToken cancellationToken) { try { @@ -354,14 +353,15 @@ namespace MediaBrowser.MediaEncoding.Encoder .Where(i => i.Length == 2) .ToDictionary(i => i[0], i => i[1]); - string pktDts; - int frameMs; - if (values.TryGetValue("pkt_dts", out pktDts) && int.TryParse(pktDts, NumberStyles.Any, CultureInfo.InvariantCulture, out frameMs)) + string flags; + if (values.TryGetValue("flags", out flags) && string.Equals(flags, "k", StringComparison.OrdinalIgnoreCase)) { - string keyFrame; - if (values.TryGetValue("key_frame", out keyFrame) && string.Equals(keyFrame, "1", StringComparison.OrdinalIgnoreCase)) + string pts_time; + double frameSeconds; + if (values.TryGetValue("pts_time", out pts_time) && double.TryParse(pts_time, NumberStyles.Any, CultureInfo.InvariantCulture, out frameSeconds)) { - lines.Add(frameMs); + var ms = frameSeconds * 1000; + lines.Add(Convert.ToInt32(ms)); } } } @@ -376,7 +376,6 @@ namespace MediaBrowser.MediaEncoding.Encoder _logger.ErrorException("Error reading ffprobe output", ex); } } - /// /// The us culture /// @@ -802,7 +801,7 @@ namespace MediaBrowser.MediaEncoding.Encoder public ProcessWrapper(Process process, MediaEncoder mediaEncoder, ILogger logger) { Process = process; - this._mediaEncoder = mediaEncoder; + _mediaEncoder = mediaEncoder; _logger = logger; Process.Exited += Process_Exited; } @@ -819,7 +818,6 @@ namespace MediaBrowser.MediaEncoding.Encoder } catch (Exception ex) { - _logger.ErrorException("Error determing process exit code", ex); } lock (_mediaEncoder._runningProcesses) -- cgit v1.2.3