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
|
// 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.EstimateContentLength = transcodingProfile.EstimateContentLength;
|
||||||
state.EnableMpegtsM2TsMode = transcodingProfile.EnableMpegtsM2TsMode;
|
state.EnableMpegtsM2TsMode = transcodingProfile.EnableMpegtsM2TsMode;
|
||||||
state.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo;
|
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 (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);
|
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))
|
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")]
|
[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; }
|
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")]
|
[ApiMember(Name = "Cabac", Description = "Enable if cabac encoding is required", IsRequired = false, DataType = "bool", ParameterType = "query", Verb = "GET")]
|
||||||
public bool? Cabac { get; set; }
|
public bool? Cabac { get; set; }
|
||||||
|
|
||||||
|
|
|
@ -44,6 +44,7 @@ namespace MediaBrowser.Controller.MediaEncoding
|
||||||
public int? CpuCoreLimit { get; set; }
|
public int? CpuCoreLimit { get; set; }
|
||||||
public bool ReadInputAtNativeFramerate { get; set; }
|
public bool ReadInputAtNativeFramerate { get; set; }
|
||||||
public SubtitleDeliveryMethod SubtitleMethod { get; set; }
|
public SubtitleDeliveryMethod SubtitleMethod { get; set; }
|
||||||
|
public bool CopyTimestamps { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets a value indicating whether this instance has fixed resolution.
|
/// Gets a value indicating whether this instance has fixed resolution.
|
||||||
|
|
|
@ -794,6 +794,8 @@ namespace MediaBrowser.MediaEncoding.Encoder
|
||||||
state.EstimateContentLength = transcodingProfile.EstimateContentLength;
|
state.EstimateContentLength = transcodingProfile.EstimateContentLength;
|
||||||
state.EnableMpegtsM2TsMode = transcodingProfile.EnableMpegtsM2TsMode;
|
state.EnableMpegtsM2TsMode = transcodingProfile.EnableMpegtsM2TsMode;
|
||||||
state.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo;
|
state.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo;
|
||||||
|
|
||||||
|
state.Options.CopyTimestamps = transcodingProfile.CopyTimestamps;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -425,6 +425,7 @@ namespace MediaBrowser.Model.Dlna
|
||||||
playlistItem.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo;
|
playlistItem.TranscodeSeekInfo = transcodingProfile.TranscodeSeekInfo;
|
||||||
playlistItem.AudioCodec = transcodingProfile.AudioCodec.Split(',')[0];
|
playlistItem.AudioCodec = transcodingProfile.AudioCodec.Split(',')[0];
|
||||||
playlistItem.VideoCodec = transcodingProfile.VideoCodec;
|
playlistItem.VideoCodec = transcodingProfile.VideoCodec;
|
||||||
|
playlistItem.CopyTimestamps = transcodingProfile.CopyTimestamps;
|
||||||
playlistItem.SubProtocol = transcodingProfile.Protocol;
|
playlistItem.SubProtocol = transcodingProfile.Protocol;
|
||||||
playlistItem.AudioStreamIndex = audioStreamIndex;
|
playlistItem.AudioStreamIndex = audioStreamIndex;
|
||||||
|
|
||||||
|
|
|
@ -32,6 +32,7 @@ namespace MediaBrowser.Model.Dlna
|
||||||
public string VideoProfile { get; set; }
|
public string VideoProfile { get; set; }
|
||||||
|
|
||||||
public bool? Cabac { get; set; }
|
public bool? Cabac { get; set; }
|
||||||
|
public bool CopyTimestamps { get; set; }
|
||||||
public string AudioCodec { get; set; }
|
public string AudioCodec { get; set; }
|
||||||
|
|
||||||
public int? AudioStreamIndex { 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("ItemId", item.ItemId));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
list.Add(new NameValuePair("CopyTimestamps", (item.CopyTimestamps).ToString().ToLower()));
|
||||||
|
|
||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -269,7 +272,7 @@ namespace MediaBrowser.Model.Dlna
|
||||||
// HLS will preserve timestamps so we can just grab the full subtitle stream
|
// HLS will preserve timestamps so we can just grab the full subtitle stream
|
||||||
long startPositionTicks = StringHelper.EqualsIgnoreCase(SubProtocol, "hls")
|
long startPositionTicks = StringHelper.EqualsIgnoreCase(SubProtocol, "hls")
|
||||||
? 0
|
? 0
|
||||||
: (this.PlayMethod == PlayMethod.Transcode ? StartPositionTicks : 0);
|
: (PlayMethod == PlayMethod.Transcode && !CopyTimestamps ? StartPositionTicks : 0);
|
||||||
|
|
||||||
// First add the selected track
|
// First add the selected track
|
||||||
if (SubtitleStreamIndex.HasValue)
|
if (SubtitleStreamIndex.HasValue)
|
||||||
|
|
|
@ -29,6 +29,9 @@ namespace MediaBrowser.Model.Dlna
|
||||||
[XmlAttribute("transcodeSeekInfo")]
|
[XmlAttribute("transcodeSeekInfo")]
|
||||||
public TranscodeSeekInfo TranscodeSeekInfo { get; set; }
|
public TranscodeSeekInfo TranscodeSeekInfo { get; set; }
|
||||||
|
|
||||||
|
[XmlAttribute("copyTimestamps")]
|
||||||
|
public bool CopyTimestamps { get; set; }
|
||||||
|
|
||||||
[XmlAttribute("context")]
|
[XmlAttribute("context")]
|
||||||
public EncodingContext Context { get; set; }
|
public EncodingContext Context { get; set; }
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user