3.0.5713.4

This commit is contained in:
Luke Pulverenti
2015-08-27 11:58:07 -04:00
parent 0e1b983ffc
commit 4ca526979d
10 changed files with 214 additions and 137 deletions

View File

@@ -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<List<int>> 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<int> lines, int timeoutMs, CancellationToken cancellationToken)
private async Task StartReadingOutput(Stream source, List<int> 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);
}
}
/// <summary>
/// The us culture
/// </summary>
@@ -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)