mirror of
				https://github.com/jellyfin/jellyfin.git
				synced 2025-11-03 19:17:24 -05:00 
			
		
		
		
	fix subtitle position after seek in chrome
This commit is contained in:
		
							parent
							
								
									2002b0ef39
								
							
						
					
					
						commit
						dacdfd272a
					
				@ -1462,6 +1462,13 @@ namespace MediaBrowser.Api.Playback
 | 
			
		||||
                {
 | 
			
		||||
                    // Duplicating ItemId because of MediaMonkey
 | 
			
		||||
                }
 | 
			
		||||
                else if (i == 24)
 | 
			
		||||
                {
 | 
			
		||||
                    if (videoRequest != null)
 | 
			
		||||
                    {
 | 
			
		||||
                        videoRequest.CopyTimestamps = string.Equals("true", val, StringComparison.OrdinalIgnoreCase);
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -2021,6 +2028,11 @@ namespace MediaBrowser.Api.Playback
 | 
			
		||||
                    state.EstimateContentLength = transcodingProfile.EstimateContentLength;
 | 
			
		||||
                    state.EnableMpegtsM2TsMode = transcodingProfile.EnableMpegtsM2TsMode;
 | 
			
		||||
                    state.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo;
 | 
			
		||||
 | 
			
		||||
                    if (state.VideoRequest != null)
 | 
			
		||||
                    {
 | 
			
		||||
                        state.VideoRequest.CopyTimestamps = transcodingProfile.CopyTimestamps;
 | 
			
		||||
                    }
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
@ -2184,9 +2196,9 @@ namespace MediaBrowser.Api.Playback
 | 
			
		||||
 | 
			
		||||
            if (state.VideoRequest != null)
 | 
			
		||||
            {
 | 
			
		||||
                if (string.Equals(state.OutputContainer, "mkv", StringComparison.OrdinalIgnoreCase))
 | 
			
		||||
                if (string.Equals(state.OutputContainer, "mkv", StringComparison.OrdinalIgnoreCase) && state.VideoRequest.CopyTimestamps)
 | 
			
		||||
                {
 | 
			
		||||
                    //inputModifier += " -noaccurate_seek";
 | 
			
		||||
                    inputModifier += " -noaccurate_seek";
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
 | 
			
		||||
@ -137,9 +137,9 @@ namespace MediaBrowser.Api.Playback.Progressive
 | 
			
		||||
 | 
			
		||||
            var isOutputMkv = string.Equals(state.OutputContainer, "mkv", StringComparison.OrdinalIgnoreCase);
 | 
			
		||||
 | 
			
		||||
            if (state.RunTimeTicks.HasValue)
 | 
			
		||||
            if (state.RunTimeTicks.HasValue && state.VideoRequest.CopyTimestamps)
 | 
			
		||||
            {
 | 
			
		||||
                //args += " -copyts -avoid_negative_ts disabled -start_at_zero";
 | 
			
		||||
                args += " -copyts -avoid_negative_ts disabled -start_at_zero";
 | 
			
		||||
            }
 | 
			
		||||
            
 | 
			
		||||
            if (string.Equals(videoCodec, "copy", StringComparison.OrdinalIgnoreCase))
 | 
			
		||||
 | 
			
		||||
@ -187,6 +187,9 @@ namespace MediaBrowser.Api.Playback
 | 
			
		||||
        [ApiMember(Name = "EnableAutoStreamCopy", Description = "Whether or not to allow automatic stream copy if requested values match the original source. Defaults to true.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
 | 
			
		||||
        public bool EnableAutoStreamCopy { get; set; }
 | 
			
		||||
 | 
			
		||||
        [ApiMember(Name = "CopyTimestamps", Description = "Whether or not to copy timestamps when transcoding with an offset. Defaults to false.", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
 | 
			
		||||
        public bool CopyTimestamps { get; set; }
 | 
			
		||||
        
 | 
			
		||||
        [ApiMember(Name = "Cabac", Description = "Enable if cabac encoding is required", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
 | 
			
		||||
        public bool? Cabac { get; set; }
 | 
			
		||||
        
 | 
			
		||||
 | 
			
		||||
@ -44,6 +44,7 @@ namespace MediaBrowser.Controller.MediaEncoding
 | 
			
		||||
        public int? CpuCoreLimit { get; set; }
 | 
			
		||||
        public bool ReadInputAtNativeFramerate { get; set; }
 | 
			
		||||
        public SubtitleDeliveryMethod SubtitleMethod { get; set; }
 | 
			
		||||
        public bool CopyTimestamps { get; set; }
 | 
			
		||||
 | 
			
		||||
        /// <summary>
 | 
			
		||||
        /// Gets a value indicating whether this instance has fixed resolution.
 | 
			
		||||
 | 
			
		||||
@ -794,6 +794,8 @@ namespace MediaBrowser.MediaEncoding.Encoder
 | 
			
		||||
                state.EstimateContentLength = transcodingProfile.EstimateContentLength;
 | 
			
		||||
                state.EnableMpegtsM2TsMode = transcodingProfile.EnableMpegtsM2TsMode;
 | 
			
		||||
                state.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo;
 | 
			
		||||
 | 
			
		||||
                state.Options.CopyTimestamps = transcodingProfile.CopyTimestamps;
 | 
			
		||||
            }
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
@ -425,6 +425,7 @@ namespace MediaBrowser.Model.Dlna
 | 
			
		||||
                playlistItem.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo;
 | 
			
		||||
                playlistItem.AudioCodec = transcodingProfile.AudioCodec.Split(',')[0];
 | 
			
		||||
                playlistItem.VideoCodec = transcodingProfile.VideoCodec;
 | 
			
		||||
                playlistItem.CopyTimestamps = transcodingProfile.CopyTimestamps;
 | 
			
		||||
                playlistItem.SubProtocol = transcodingProfile.Protocol;
 | 
			
		||||
                playlistItem.AudioStreamIndex = audioStreamIndex;
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -32,6 +32,7 @@ namespace MediaBrowser.Model.Dlna
 | 
			
		||||
        public string VideoProfile { get; set; }
 | 
			
		||||
 | 
			
		||||
        public bool? Cabac { get; set; }
 | 
			
		||||
        public bool CopyTimestamps { get; set; }
 | 
			
		||||
        public string AudioCodec { get; set; }
 | 
			
		||||
 | 
			
		||||
        public int? AudioStreamIndex { get; set; }
 | 
			
		||||
@ -232,6 +233,8 @@ namespace MediaBrowser.Model.Dlna
 | 
			
		||||
                list.Add(new NameValuePair("ItemId", item.ItemId));
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            list.Add(new NameValuePair("CopyTimestamps", (item.CopyTimestamps).ToString().ToLower()));
 | 
			
		||||
            
 | 
			
		||||
            return list;
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
@ -269,7 +272,7 @@ namespace MediaBrowser.Model.Dlna
 | 
			
		||||
            // HLS will preserve timestamps so we can just grab the full subtitle stream
 | 
			
		||||
            long startPositionTicks = StringHelper.EqualsIgnoreCase(SubProtocol, "hls")
 | 
			
		||||
                ? 0
 | 
			
		||||
				: (this.PlayMethod == PlayMethod.Transcode ? StartPositionTicks : 0);
 | 
			
		||||
				: (PlayMethod == PlayMethod.Transcode && !CopyTimestamps ? StartPositionTicks : 0);
 | 
			
		||||
 | 
			
		||||
            // First add the selected track
 | 
			
		||||
            if (SubtitleStreamIndex.HasValue)
 | 
			
		||||
 | 
			
		||||
@ -29,6 +29,9 @@ namespace MediaBrowser.Model.Dlna
 | 
			
		||||
        [XmlAttribute("transcodeSeekInfo")]
 | 
			
		||||
        public TranscodeSeekInfo TranscodeSeekInfo { get; set; }
 | 
			
		||||
 | 
			
		||||
        [XmlAttribute("copyTimestamps")]
 | 
			
		||||
        public bool CopyTimestamps { get; set; }
 | 
			
		||||
 | 
			
		||||
        [XmlAttribute("context")]
 | 
			
		||||
        public EncodingContext Context { get; set; }
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user