update live stream handling
This commit is contained in:
parent
dd8dd1938a
commit
10b9a865b7
|
@ -132,7 +132,7 @@ namespace MediaBrowser.Api
|
||||||
/// Called when [transcode beginning].
|
/// Called when [transcode beginning].
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="path">The path.</param>
|
/// <param name="path">The path.</param>
|
||||||
/// <param name="streamId">The stream identifier.</param>
|
/// <param name="playSessionId">The play session identifier.</param>
|
||||||
/// <param name="transcodingJobId">The transcoding job identifier.</param>
|
/// <param name="transcodingJobId">The transcoding job identifier.</param>
|
||||||
/// <param name="type">The type.</param>
|
/// <param name="type">The type.</param>
|
||||||
/// <param name="process">The process.</param>
|
/// <param name="process">The process.</param>
|
||||||
|
@ -141,7 +141,7 @@ namespace MediaBrowser.Api
|
||||||
/// <param name="cancellationTokenSource">The cancellation token source.</param>
|
/// <param name="cancellationTokenSource">The cancellation token source.</param>
|
||||||
/// <returns>TranscodingJob.</returns>
|
/// <returns>TranscodingJob.</returns>
|
||||||
public TranscodingJob OnTranscodeBeginning(string path,
|
public TranscodingJob OnTranscodeBeginning(string path,
|
||||||
string streamId,
|
string playSessionId,
|
||||||
string transcodingJobId,
|
string transcodingJobId,
|
||||||
TranscodingJobType type,
|
TranscodingJobType type,
|
||||||
Process process,
|
Process process,
|
||||||
|
@ -160,7 +160,7 @@ namespace MediaBrowser.Api
|
||||||
DeviceId = deviceId,
|
DeviceId = deviceId,
|
||||||
CancellationTokenSource = cancellationTokenSource,
|
CancellationTokenSource = cancellationTokenSource,
|
||||||
Id = transcodingJobId,
|
Id = transcodingJobId,
|
||||||
StreamId = streamId
|
PlaySessionId = playSessionId
|
||||||
};
|
};
|
||||||
|
|
||||||
_activeTranscodingJobs.Add(job);
|
_activeTranscodingJobs.Add(job);
|
||||||
|
@ -324,10 +324,10 @@ namespace MediaBrowser.Api
|
||||||
/// Kills the single transcoding job.
|
/// Kills the single transcoding job.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="deviceId">The device id.</param>
|
/// <param name="deviceId">The device id.</param>
|
||||||
/// <param name="streamId">The stream identifier.</param>
|
/// <param name="playSessionId">The play session identifier.</param>
|
||||||
/// <param name="deleteFiles">The delete files.</param>
|
/// <param name="deleteFiles">The delete files.</param>
|
||||||
/// <returns>Task.</returns>
|
/// <returns>Task.</returns>
|
||||||
internal void KillTranscodingJobs(string deviceId, string streamId, Func<string, bool> deleteFiles)
|
internal void KillTranscodingJobs(string deviceId, string playSessionId, Func<string, bool> deleteFiles)
|
||||||
{
|
{
|
||||||
if (string.IsNullOrEmpty(deviceId))
|
if (string.IsNullOrEmpty(deviceId))
|
||||||
{
|
{
|
||||||
|
@ -338,7 +338,7 @@ namespace MediaBrowser.Api
|
||||||
{
|
{
|
||||||
if (string.Equals(deviceId, j.DeviceId, StringComparison.OrdinalIgnoreCase))
|
if (string.Equals(deviceId, j.DeviceId, StringComparison.OrdinalIgnoreCase))
|
||||||
{
|
{
|
||||||
return string.IsNullOrWhiteSpace(streamId) || string.Equals(streamId, j.StreamId, StringComparison.OrdinalIgnoreCase);
|
return string.IsNullOrWhiteSpace(playSessionId) || string.Equals(playSessionId, j.PlaySessionId, StringComparison.OrdinalIgnoreCase);
|
||||||
}
|
}
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
|
@ -539,10 +539,10 @@ namespace MediaBrowser.Api
|
||||||
public class TranscodingJob
|
public class TranscodingJob
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the stream identifier.
|
/// Gets or sets the play session identifier.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The stream identifier.</value>
|
/// <value>The play session identifier.</value>
|
||||||
public string StreamId { get; set; }
|
public string PlaySessionId { get; set; }
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the path.
|
/// Gets or sets the path.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
|
@ -126,7 +126,7 @@ namespace MediaBrowser.Api.Playback
|
||||||
var data = GetCommandLineArguments("dummy\\dummy", state, false);
|
var data = GetCommandLineArguments("dummy\\dummy", state, false);
|
||||||
|
|
||||||
data += "-" + (state.Request.DeviceId ?? string.Empty);
|
data += "-" + (state.Request.DeviceId ?? string.Empty);
|
||||||
data += "-" + (state.Request.StreamId ?? string.Empty);
|
data += "-" + (state.Request.PlaySessionId ?? string.Empty);
|
||||||
data += "-" + (state.Request.ClientTime ?? string.Empty);
|
data += "-" + (state.Request.ClientTime ?? string.Empty);
|
||||||
|
|
||||||
var dataHash = data.GetMD5().ToString("N");
|
var dataHash = data.GetMD5().ToString("N");
|
||||||
|
@ -1009,7 +1009,7 @@ namespace MediaBrowser.Api.Playback
|
||||||
}
|
}
|
||||||
|
|
||||||
var transcodingJob = ApiEntryPoint.Instance.OnTranscodeBeginning(outputPath,
|
var transcodingJob = ApiEntryPoint.Instance.OnTranscodeBeginning(outputPath,
|
||||||
state.Request.StreamId,
|
state.Request.PlaySessionId,
|
||||||
transcodingId,
|
transcodingId,
|
||||||
TranscodingJobType,
|
TranscodingJobType,
|
||||||
process,
|
process,
|
||||||
|
@ -1511,7 +1511,7 @@ namespace MediaBrowser.Api.Playback
|
||||||
}
|
}
|
||||||
else if (i == 21)
|
else if (i == 21)
|
||||||
{
|
{
|
||||||
request.StreamId = val;
|
request.PlaySessionId = val;
|
||||||
}
|
}
|
||||||
else if (i == 22)
|
else if (i == 22)
|
||||||
{
|
{
|
||||||
|
|
|
@ -160,7 +160,7 @@ namespace MediaBrowser.Api.Playback.Dash
|
||||||
// If the playlist doesn't already exist, startup ffmpeg
|
// If the playlist doesn't already exist, startup ffmpeg
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ApiEntryPoint.Instance.KillTranscodingJobs(request.DeviceId, request.StreamId, p => false);
|
ApiEntryPoint.Instance.KillTranscodingJobs(request.DeviceId, request.PlaySessionId, p => false);
|
||||||
|
|
||||||
if (currentTranscodingIndex.HasValue)
|
if (currentTranscodingIndex.HasValue)
|
||||||
{
|
{
|
||||||
|
|
|
@ -135,7 +135,7 @@ namespace MediaBrowser.Api.Playback.Hls
|
||||||
// If the playlist doesn't already exist, startup ffmpeg
|
// If the playlist doesn't already exist, startup ffmpeg
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ApiEntryPoint.Instance.KillTranscodingJobs(request.DeviceId, request.StreamId, p => false);
|
ApiEntryPoint.Instance.KillTranscodingJobs(request.DeviceId, request.PlaySessionId, p => false);
|
||||||
|
|
||||||
if (currentTranscodingIndex.HasValue)
|
if (currentTranscodingIndex.HasValue)
|
||||||
{
|
{
|
||||||
|
|
|
@ -54,8 +54,8 @@ namespace MediaBrowser.Api.Playback.Hls
|
||||||
[ApiMember(Name = "DeviceId", Description = "The device id of the client requesting. Used to stop encoding processes when needed.", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
|
[ApiMember(Name = "DeviceId", Description = "The device id of the client requesting. Used to stop encoding processes when needed.", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
|
||||||
public string DeviceId { get; set; }
|
public string DeviceId { get; set; }
|
||||||
|
|
||||||
[ApiMember(Name = "StreamId", Description = "The stream id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
|
[ApiMember(Name = "PlaySessionId", Description = "The play session id", IsRequired = true, DataType = "string", ParameterType = "query", Verb = "DELETE")]
|
||||||
public string StreamId { get; set; }
|
public string PlaySessionId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
@ -95,7 +95,7 @@ namespace MediaBrowser.Api.Playback.Hls
|
||||||
|
|
||||||
public void Delete(StopEncodingProcess request)
|
public void Delete(StopEncodingProcess request)
|
||||||
{
|
{
|
||||||
ApiEntryPoint.Instance.KillTranscodingJobs(request.DeviceId, request.StreamId, path => true);
|
ApiEntryPoint.Instance.KillTranscodingJobs(request.DeviceId, request.PlaySessionId, path => true);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|
|
@ -194,7 +194,7 @@ namespace MediaBrowser.Api.Playback
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
result.StreamId = Guid.NewGuid().ToString("N");
|
result.PlaySessionId = Guid.NewGuid().ToString("N");
|
||||||
}
|
}
|
||||||
|
|
||||||
return result;
|
return result;
|
||||||
|
|
|
@ -71,7 +71,7 @@ namespace MediaBrowser.Api.Playback
|
||||||
|
|
||||||
public string Params { get; set; }
|
public string Params { get; set; }
|
||||||
public string ClientTime { get; set; }
|
public string ClientTime { get; set; }
|
||||||
public string StreamId { get; set; }
|
public string PlaySessionId { get; set; }
|
||||||
public string LiveStreamId { get; set; }
|
public string LiveStreamId { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -206,8 +206,8 @@ namespace MediaBrowser.Model.Dlna
|
||||||
list.Add(new NameValuePair("Profile", item.VideoProfile ?? string.Empty));
|
list.Add(new NameValuePair("Profile", item.VideoProfile ?? string.Empty));
|
||||||
list.Add(new NameValuePair("Cabac", item.Cabac.HasValue ? item.Cabac.Value.ToString() : string.Empty));
|
list.Add(new NameValuePair("Cabac", item.Cabac.HasValue ? item.Cabac.Value.ToString() : string.Empty));
|
||||||
|
|
||||||
string streamId = item.PlaybackInfo == null ? null : item.PlaybackInfo.StreamId;
|
string playSessionId = item.PlaybackInfo == null ? null : item.PlaybackInfo.PlaySessionId;
|
||||||
list.Add(new NameValuePair("StreamId", streamId ?? string.Empty));
|
list.Add(new NameValuePair("PlaySessionId", playSessionId ?? string.Empty));
|
||||||
list.Add(new NameValuePair("api_key", accessToken ?? string.Empty));
|
list.Add(new NameValuePair("api_key", accessToken ?? string.Empty));
|
||||||
|
|
||||||
string liveStreamId = item.MediaSource == null ? null : item.MediaSource.LiveStreamId;
|
string liveStreamId = item.MediaSource == null ? null : item.MediaSource.LiveStreamId;
|
||||||
|
|
|
@ -13,10 +13,10 @@ namespace MediaBrowser.Model.MediaInfo
|
||||||
public List<MediaSourceInfo> MediaSources { get; set; }
|
public List<MediaSourceInfo> MediaSources { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the stream identifier.
|
/// Gets or sets the play session identifier.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <value>The stream identifier.</value>
|
/// <value>The play session identifier.</value>
|
||||||
public string StreamId { get; set; }
|
public string PlaySessionId { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the error code.
|
/// Gets or sets the error code.
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Common.Internal</id>
|
<id>MediaBrowser.Common.Internal</id>
|
||||||
<version>3.0.606</version>
|
<version>3.0.607</version>
|
||||||
<title>MediaBrowser.Common.Internal</title>
|
<title>MediaBrowser.Common.Internal</title>
|
||||||
<authors>Luke</authors>
|
<authors>Luke</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
<description>Contains common components shared by Emby Theater and Emby Server. Not intended for plugin developer consumption.</description>
|
<description>Contains common components shared by Emby Theater and Emby Server. Not intended for plugin developer consumption.</description>
|
||||||
<copyright>Copyright © Emby 2013</copyright>
|
<copyright>Copyright © Emby 2013</copyright>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="MediaBrowser.Common" version="3.0.606" />
|
<dependency id="MediaBrowser.Common" version="3.0.607" />
|
||||||
<dependency id="NLog" version="3.2.0.0" />
|
<dependency id="NLog" version="3.2.0.0" />
|
||||||
<dependency id="SimpleInjector" version="2.7.0" />
|
<dependency id="SimpleInjector" version="2.7.0" />
|
||||||
</dependencies>
|
</dependencies>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Common</id>
|
<id>MediaBrowser.Common</id>
|
||||||
<version>3.0.606</version>
|
<version>3.0.607</version>
|
||||||
<title>MediaBrowser.Common</title>
|
<title>MediaBrowser.Common</title>
|
||||||
<authors>Emby Team</authors>
|
<authors>Emby Team</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2011/08/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Model.Signed</id>
|
<id>MediaBrowser.Model.Signed</id>
|
||||||
<version>3.0.606</version>
|
<version>3.0.607</version>
|
||||||
<title>MediaBrowser.Model - Signed Edition</title>
|
<title>MediaBrowser.Model - Signed Edition</title>
|
||||||
<authors>Emby Team</authors>
|
<authors>Emby Team</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
<package xmlns="http://schemas.microsoft.com/packaging/2010/07/nuspec.xsd">
|
||||||
<metadata>
|
<metadata>
|
||||||
<id>MediaBrowser.Server.Core</id>
|
<id>MediaBrowser.Server.Core</id>
|
||||||
<version>3.0.606</version>
|
<version>3.0.607</version>
|
||||||
<title>Media Browser.Server.Core</title>
|
<title>Media Browser.Server.Core</title>
|
||||||
<authors>Emby Team</authors>
|
<authors>Emby Team</authors>
|
||||||
<owners>ebr,Luke,scottisafool</owners>
|
<owners>ebr,Luke,scottisafool</owners>
|
||||||
|
@ -12,7 +12,7 @@
|
||||||
<description>Contains core components required to build plugins for Emby Server.</description>
|
<description>Contains core components required to build plugins for Emby Server.</description>
|
||||||
<copyright>Copyright © Emby 2013</copyright>
|
<copyright>Copyright © Emby 2013</copyright>
|
||||||
<dependencies>
|
<dependencies>
|
||||||
<dependency id="MediaBrowser.Common" version="3.0.606" />
|
<dependency id="MediaBrowser.Common" version="3.0.607" />
|
||||||
</dependencies>
|
</dependencies>
|
||||||
</metadata>
|
</metadata>
|
||||||
<files>
|
<files>
|
||||||
|
|
Loading…
Reference in New Issue
Block a user