mirror of
https://github.com/jellyfin/jellyfin.git
synced 2026-01-15 23:58:57 +00:00
3.0.5713.4
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user