diff --git a/MediaBrowser.Api/Playback/BaseStreamingService.cs b/MediaBrowser.Api/Playback/BaseStreamingService.cs
index 1510dd472f..cddd051971 100644
--- a/MediaBrowser.Api/Playback/BaseStreamingService.cs
+++ b/MediaBrowser.Api/Playback/BaseStreamingService.cs
@@ -290,7 +290,7 @@ namespace MediaBrowser.Api.Playback
/// System.String.
protected string GetTextSubtitleParam(Video video, MediaStream subtitleStream, long? startTimeTicks)
{
- var path = subtitleStream.IsExternal ? GetConvertedAssPath(video, subtitleStream) : GetExtractedAssPath(video, subtitleStream);
+ var path = subtitleStream.IsExternal ? GetConvertedAssPath(video, subtitleStream) : GetExtractedAssPath(video, subtitleStream, startTimeTicks);
if (string.IsNullOrEmpty(path))
{
@@ -299,7 +299,7 @@ namespace MediaBrowser.Api.Playback
var param = string.Format(",ass='{0}'", path.Replace('\\', '/').Replace(":/", "\\:/"));
- if (startTimeTicks.HasValue)
+ if (startTimeTicks.HasValue && subtitleStream.IsExternal)
{
var seconds = Convert.ToInt32(TimeSpan.FromTicks(startTimeTicks.Value).TotalSeconds);
param += string.Format(",setpts=PTS-{0}/TB", seconds);
@@ -313,10 +313,13 @@ namespace MediaBrowser.Api.Playback
///
/// The video.
/// The subtitle stream.
+ /// The start time ticks.
/// System.String.
- private string GetExtractedAssPath(Video video, MediaStream subtitleStream)
+ private string GetExtractedAssPath(Video video, MediaStream subtitleStream, long? startTimeTicks)
{
- var path = Kernel.Instance.FFMpegManager.GetSubtitleCachePath(video, subtitleStream.Index, ".ass");
+ var offset = TimeSpan.FromTicks(startTimeTicks ?? 0);
+
+ var path = Kernel.Instance.FFMpegManager.GetSubtitleCachePath(video, subtitleStream.Index, offset, ".ass");
if (!File.Exists(path))
{
@@ -326,7 +329,7 @@ namespace MediaBrowser.Api.Playback
try
{
- var task = MediaEncoder.ExtractTextSubtitle(inputPath, type, subtitleStream.Index, path, CancellationToken.None);
+ var task = MediaEncoder.ExtractTextSubtitle(inputPath, type, subtitleStream.Index, offset, path, CancellationToken.None);
Task.WaitAll(task);
}
@@ -347,7 +350,7 @@ namespace MediaBrowser.Api.Playback
/// System.String.
private string GetConvertedAssPath(Video video, MediaStream subtitleStream)
{
- var path = Kernel.Instance.FFMpegManager.GetSubtitleCachePath(video, subtitleStream.Index, ".ass");
+ var path = Kernel.Instance.FFMpegManager.GetSubtitleCachePath(video, subtitleStream.Index, null, ".ass");
if (!File.Exists(path))
{
diff --git a/MediaBrowser.Common/MediaInfo/IMediaEncoder.cs b/MediaBrowser.Common/MediaInfo/IMediaEncoder.cs
index 56223b99cb..8dc18067c6 100644
--- a/MediaBrowser.Common/MediaInfo/IMediaEncoder.cs
+++ b/MediaBrowser.Common/MediaInfo/IMediaEncoder.cs
@@ -38,10 +38,11 @@ namespace MediaBrowser.Common.MediaInfo
/// The input files.
/// The type.
/// Index of the subtitle stream.
+ /// The offset.
/// The output path.
/// The cancellation token.
/// Task.
- Task ExtractTextSubtitle(string[] inputFiles, InputType type, int subtitleStreamIndex, string outputPath, CancellationToken cancellationToken);
+ Task ExtractTextSubtitle(string[] inputFiles, InputType type, int subtitleStreamIndex, TimeSpan offset, string outputPath, CancellationToken cancellationToken);
///
/// Converts the text subtitle to ass.
diff --git a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs
index 509d1e1879..639e6e6b5c 100644
--- a/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs
+++ b/MediaBrowser.Controller/MediaInfo/FFMpegManager.cs
@@ -30,7 +30,7 @@ namespace MediaBrowser.Controller.MediaInfo
internal FileSystemRepository SubtitleCache { get; set; }
private readonly ILibraryManager _libraryManager;
-
+
private readonly IServerApplicationPaths _appPaths;
private readonly IMediaEncoder _encoder;
@@ -219,11 +219,14 @@ namespace MediaBrowser.Controller.MediaInfo
///
/// The input.
/// Index of the subtitle stream.
+ /// The offset.
/// The output extension.
/// System.String.
- public string GetSubtitleCachePath(Video input, int subtitleStreamIndex, string outputExtension)
+ public string GetSubtitleCachePath(Video input, int subtitleStreamIndex, TimeSpan? offset, string outputExtension)
{
- return SubtitleCache.GetResourcePath(input.Id + "_" + subtitleStreamIndex + "_" + input.DateModified.Ticks, outputExtension);
+ var ticksParam = offset.HasValue ? "_" + offset.Value.Ticks : "";
+
+ return SubtitleCache.GetResourcePath(input.Id + "_" + subtitleStreamIndex + "_" + input.DateModified.Ticks + ticksParam, outputExtension);
}
}
}
diff --git a/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs b/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs
index a8b0e0225a..a27244a574 100644
--- a/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs
+++ b/MediaBrowser.Server.Implementations/Library/LuceneSearchEngine.cs
@@ -24,15 +24,15 @@ namespace MediaBrowser.Server.Implementations.Library
{
public LuceneSearchEngine(IServerApplicationPaths serverPaths, ILogManager logManager)
{
- string luceneDbPath = serverPaths.DataPath + "\\SearchIndexDB";
- if (!System.IO.Directory.Exists(luceneDbPath))
- System.IO.Directory.CreateDirectory(luceneDbPath);
- else if(File.Exists(luceneDbPath + "\\write.lock"))
- File.Delete(luceneDbPath + "\\write.lock");
+ //string luceneDbPath = serverPaths.DataPath + "\\SearchIndexDB";
+ //if (!System.IO.Directory.Exists(luceneDbPath))
+ // System.IO.Directory.CreateDirectory(luceneDbPath);
+ //else if(File.Exists(luceneDbPath + "\\write.lock"))
+ // File.Delete(luceneDbPath + "\\write.lock");
- LuceneSearch.Init(luceneDbPath, logManager.GetLogger("Lucene"));
+ //LuceneSearch.Init(luceneDbPath, logManager.GetLogger("Lucene"));
- BaseItem.LibraryManager.LibraryChanged += LibraryChanged;
+ //BaseItem.LibraryManager.LibraryChanged += LibraryChanged;
}
public void LibraryChanged(object source, ChildrenChangedEventArgs changeInformation)
@@ -75,9 +75,9 @@ namespace MediaBrowser.Server.Implementations.Library
public void Dispose()
{
- BaseItem.LibraryManager.LibraryChanged -= LibraryChanged;
+ //BaseItem.LibraryManager.LibraryChanged -= LibraryChanged;
- LuceneSearch.CloseAll();
+ //LuceneSearch.CloseAll();
}
}