commit
615ea35a21
|
@ -63,6 +63,15 @@ namespace MediaBrowser.Api
|
||||||
|
|
||||||
Instance = this;
|
Instance = this;
|
||||||
_sessionManager.PlaybackProgress += _sessionManager_PlaybackProgress;
|
_sessionManager.PlaybackProgress += _sessionManager_PlaybackProgress;
|
||||||
|
_sessionManager.PlaybackStart += _sessionManager_PlaybackStart;
|
||||||
|
}
|
||||||
|
|
||||||
|
private void _sessionManager_PlaybackStart(object sender, PlaybackProgressEventArgs e)
|
||||||
|
{
|
||||||
|
if (!string.IsNullOrWhiteSpace(e.PlaySessionId))
|
||||||
|
{
|
||||||
|
PingTranscodingJob(e.PlaySessionId, e.IsPaused);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void _sessionManager_PlaybackProgress(object sender, PlaybackProgressEventArgs e)
|
void _sessionManager_PlaybackProgress(object sender, PlaybackProgressEventArgs e)
|
||||||
|
@ -401,7 +410,7 @@ namespace MediaBrowser.Api
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Logger.Debug("Transcoding kill timer stopped for JobId {0} PlaySessionId {1}. Killing transcoding", job.Id, job.PlaySessionId);
|
Logger.Info("Transcoding kill timer stopped for JobId {0} PlaySessionId {1}. Killing transcoding", job.Id, job.PlaySessionId);
|
||||||
|
|
||||||
KillTranscodingJob(job, true, path => true);
|
KillTranscodingJob(job, true, path => true);
|
||||||
}
|
}
|
||||||
|
|
|
@ -165,40 +165,40 @@ namespace MediaBrowser.Api.Playback.Progressive
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Not static but transcode cache file exists
|
//// Not static but transcode cache file exists
|
||||||
if (isTranscodeCached)
|
//if (isTranscodeCached && state.VideoRequest == null)
|
||||||
{
|
//{
|
||||||
var contentType = state.GetMimeType(outputPath);
|
// var contentType = state.GetMimeType(outputPath);
|
||||||
|
|
||||||
try
|
// try
|
||||||
{
|
// {
|
||||||
if (transcodingJob != null)
|
// if (transcodingJob != null)
|
||||||
{
|
// {
|
||||||
ApiEntryPoint.Instance.OnTranscodeBeginRequest(transcodingJob);
|
// ApiEntryPoint.Instance.OnTranscodeBeginRequest(transcodingJob);
|
||||||
}
|
// }
|
||||||
|
|
||||||
return await ResultFactory.GetStaticFileResult(Request, new StaticFileResultOptions
|
// return await ResultFactory.GetStaticFileResult(Request, new StaticFileResultOptions
|
||||||
{
|
// {
|
||||||
ResponseHeaders = responseHeaders,
|
// ResponseHeaders = responseHeaders,
|
||||||
ContentType = contentType,
|
// ContentType = contentType,
|
||||||
IsHeadRequest = isHeadRequest,
|
// IsHeadRequest = isHeadRequest,
|
||||||
Path = outputPath,
|
// Path = outputPath,
|
||||||
FileShare = FileShare.ReadWrite,
|
// FileShare = FileShare.ReadWrite,
|
||||||
OnComplete = () =>
|
// OnComplete = () =>
|
||||||
{
|
// {
|
||||||
if (transcodingJob != null)
|
// if (transcodingJob != null)
|
||||||
{
|
// {
|
||||||
ApiEntryPoint.Instance.OnTranscodeEndRequest(transcodingJob);
|
// ApiEntryPoint.Instance.OnTranscodeEndRequest(transcodingJob);
|
||||||
}
|
// }
|
||||||
}
|
// }
|
||||||
|
|
||||||
}).ConfigureAwait(false);
|
// }).ConfigureAwait(false);
|
||||||
}
|
// }
|
||||||
finally
|
// finally
|
||||||
{
|
// {
|
||||||
state.Dispose();
|
// state.Dispose();
|
||||||
}
|
// }
|
||||||
}
|
//}
|
||||||
|
|
||||||
// Need to start ffmpeg
|
// Need to start ffmpeg
|
||||||
try
|
try
|
||||||
|
|
|
@ -1,6 +1,7 @@
|
||||||
using MediaBrowser.Model.Serialization;
|
using MediaBrowser.Model.Serialization;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Concurrent;
|
using System.Collections.Concurrent;
|
||||||
|
using System.Collections.Generic;
|
||||||
using System.IO;
|
using System.IO;
|
||||||
using System.Xml;
|
using System.Xml;
|
||||||
using CommonIO;
|
using CommonIO;
|
||||||
|
@ -24,13 +25,22 @@ namespace MediaBrowser.Common.Implementations.Serialization
|
||||||
|
|
||||||
// Need to cache these
|
// Need to cache these
|
||||||
// http://dotnetcodebox.blogspot.com/2013/01/xmlserializer-class-may-result-in.html
|
// http://dotnetcodebox.blogspot.com/2013/01/xmlserializer-class-may-result-in.html
|
||||||
private readonly ConcurrentDictionary<string, System.Xml.Serialization.XmlSerializer> _serializers =
|
private readonly Dictionary<string, System.Xml.Serialization.XmlSerializer> _serializers =
|
||||||
new ConcurrentDictionary<string, System.Xml.Serialization.XmlSerializer>();
|
new Dictionary<string, System.Xml.Serialization.XmlSerializer>();
|
||||||
|
|
||||||
private System.Xml.Serialization.XmlSerializer GetSerializer(Type type)
|
private System.Xml.Serialization.XmlSerializer GetSerializer(Type type)
|
||||||
{
|
{
|
||||||
var key = type.FullName;
|
var key = type.FullName;
|
||||||
return _serializers.GetOrAdd(key, k => new System.Xml.Serialization.XmlSerializer(type));
|
lock (_serializers)
|
||||||
|
{
|
||||||
|
System.Xml.Serialization.XmlSerializer serializer;
|
||||||
|
if (!_serializers.TryGetValue(key, out serializer))
|
||||||
|
{
|
||||||
|
serializer = new System.Xml.Serialization.XmlSerializer(type);
|
||||||
|
_serializers[key] = serializer;
|
||||||
|
}
|
||||||
|
return serializer;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -168,6 +168,12 @@ namespace MediaBrowser.MediaEncoding.Probing
|
||||||
}
|
}
|
||||||
|
|
||||||
ExtractTimestamp(info);
|
ExtractTimestamp(info);
|
||||||
|
|
||||||
|
var stereoMode = GetDictionaryValue(tags, "stereo_mode");
|
||||||
|
if (string.Equals(stereoMode, "left_right", StringComparison.OrdinalIgnoreCase))
|
||||||
|
{
|
||||||
|
info.Video3DFormat = Video3DFormat.FullSideBySide;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return info;
|
return info;
|
||||||
|
|
|
@ -231,6 +231,8 @@ namespace MediaBrowser.Providers.MediaInfo
|
||||||
video.HasSubtitles = mediaStreams.Any(i => i.Type == MediaStreamType.Subtitle);
|
video.HasSubtitles = mediaStreams.Any(i => i.Type == MediaStreamType.Subtitle);
|
||||||
video.Timestamp = mediaInfo.Timestamp;
|
video.Timestamp = mediaInfo.Timestamp;
|
||||||
|
|
||||||
|
video.Video3DFormat = video.Video3DFormat ?? mediaInfo.Video3DFormat;
|
||||||
|
|
||||||
await _itemRepo.SaveMediaStreams(video.Id, mediaStreams, cancellationToken).ConfigureAwait(false);
|
await _itemRepo.SaveMediaStreams(video.Id, mediaStreams, cancellationToken).ConfigureAwait(false);
|
||||||
|
|
||||||
if (options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh ||
|
if (options.MetadataRefreshMode == MetadataRefreshMode.FullRefresh ||
|
||||||
|
|
|
@ -72,7 +72,7 @@ namespace MediaBrowser.Server.Implementations.UserViews
|
||||||
User = view.UserId.HasValue ? _userManager.GetUserById(view.UserId.Value) : null,
|
User = view.UserId.HasValue ? _userManager.GetUserById(view.UserId.Value) : null,
|
||||||
CollapseBoxSetItems = false,
|
CollapseBoxSetItems = false,
|
||||||
Recursive = recursive,
|
Recursive = recursive,
|
||||||
ExcludeItemTypes = new[] { "UserView", "CollectionFolder" }
|
ExcludeItemTypes = new[] { "UserView", "CollectionFolder", "Person" },
|
||||||
|
|
||||||
}).ConfigureAwait(false);
|
}).ConfigureAwait(false);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user