Esempio n. 1
0
        /// <summary>
        /// Gets the converted ass path.
        /// </summary>
        /// <param name="video">The video.</param>
        /// <param name="subtitleStream">The subtitle stream.</param>
        /// <param name="startTimeTicks">The start time ticks.</param>
        /// <param name="performConversion">if set to <c>true</c> [perform conversion].</param>
        /// <returns>System.String.</returns>
        private string GetConvertedAssPath(Video video, MediaStream subtitleStream, long?startTimeTicks, bool performConversion)
        {
            // If it's already ass, no conversion neccessary
            //if (string.Equals(Path.GetExtension(subtitleStream.Path), ".ass", StringComparison.OrdinalIgnoreCase))
            //{
            //    return subtitleStream.Path;
            //}

            var offset = TimeSpan.FromTicks(startTimeTicks ?? 0);

            var path = Kernel.Instance.FFMpegManager.GetSubtitleCachePath(video, subtitleStream.Index, offset, ".ass");

            if (performConversion)
            {
                try
                {
                    var parentPath = Path.GetDirectoryName(path);

                    Directory.CreateDirectory(parentPath);

                    var task = MediaEncoder.ConvertTextSubtitleToAss(subtitleStream.Path, path, subtitleStream.Language, offset, CancellationToken.None);

                    Task.WaitAll(task);
                }
                catch
                {
                    return(null);
                }
            }

            return(path);
        }
        /// <summary>
        /// Gets the converted ass path.
        /// </summary>
        /// <param name="video">The video.</param>
        /// <param name="subtitleStream">The subtitle stream.</param>
        /// <param name="startTimeTicks">The start time ticks.</param>
        /// <param name="performConversion">if set to <c>true</c> [perform conversion].</param>
        /// <returns>System.String.</returns>
        private string GetConvertedAssPath(Video video, MediaStream subtitleStream, long?startTimeTicks, bool performConversion)
        {
            var offset = TimeSpan.FromTicks(startTimeTicks ?? 0);

            var path = Kernel.Instance.FFMpegManager.GetSubtitleCachePath(video, subtitleStream.Index, offset, ".ass");

            if (performConversion && !File.Exists(path))
            {
                try
                {
                    var parentPath = Path.GetDirectoryName(path);

                    if (!Directory.Exists(parentPath))
                    {
                        Directory.CreateDirectory(parentPath);
                    }

                    var task = MediaEncoder.ConvertTextSubtitleToAss(subtitleStream.Path, path, subtitleStream.Language, offset, CancellationToken.None);

                    Task.WaitAll(task);
                }
                catch
                {
                    return(null);
                }
            }

            return(path);
        }