mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	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…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user