@ -290,7 +290,7 @@ namespace MediaBrowser.Api.Playback
/// <returns>System.String.</returns>
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
/// </summary>
/// <param name="video">The video.</param>
/// <param name="subtitleStream">The subtitle stream.</param>
/// <param name="startTimeTicks">The start time ticks.</param>
/// <returns>System.String.</returns>
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
/// <returns>System.String.</returns>
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 ) )
{