Beispiel #1
0
        /// <summary>
        /// Возвращает время синхронизации видео по времени субтитров и номеру интервала субтитров
        /// </summary>
        /// <param name="syncTitlesTime">Время субтитров</param>
        /// <param name="RecordNumber">номер интервала субтитров</param>
        /// <returns></returns>
        internal TimeSpan GetSyncTime(TimeSpan syncTitlesTime, int recordNumber)
        {
            //return Subtitles[SearchAndTools.BinarySearchInTimesFromTitles(syncTitlesTime, Subtitles, Records[recordNumber])].Begin;

            TimeSpan TS = new TimeSpan();

            try
            {
                int N = SearchAndTools.BinarySearchInTimesFromTitles(syncTitlesTime, Subtitles, Records[recordNumber]);
                if (N < 0 || N > subtitles.Count - 1)
                {
                    throw new Exception();
                }
                TS = subtitles[N].Begin;
            }
            catch (Exception e)
            {
                throw new SyncException("Ошибка синхронизации - " + e.Message);
            }
            return(TS);
        }
Beispiel #2
0
        /////////// <summary>
        /////////// Ищет номер записи субтитра по времени видео
        /////////// </summary>
        /////////// <param name="timeVideo">Время по видео</param>
        /////////// <returns>Номер соответствующего титра в коллекции Subtitles</returns>



        /// <summary>
        /// Функция возвращает титр соответствующий данному моменту на видео
        /// </summary>
        /// <param name="TimeVideo">Время на видео</param>
        /// <returns></returns>
        public Subtitle GetSubtitle(TimeSpan TimeVideo)
        {
            Subtitle S = new Subtitle();

            if (!Ready)
            {
                return(S);
            }
            try
            {
                int N = SearchAndTools.BinarySearch(TimeVideo, subtitles);
                if (N < 0 || N > subtitles.Count - 1)
                {
                    S.Text += "0;00;00;000 Не найден субтитр для текущего времени"; return(S);
                }
                S = subtitles[N];
            }
            catch (Exception e)
            {
                InfoWindow.Show("Ошибка при поиске субтитров: " + e.Message);
            }
            return(S);
        }
Beispiel #3
0
        /// <summary>
        /// Функция возвращает титр через поиск его по времени, указанному в титрах
        /// </summary>
        /// <param name="TimeTitles">Время, которое должно быть указано в тексте титров</param>
        /// <returns></returns>
        public Subtitle GetSubtitleOfTitlesTimeText(TimeSpan TimeTitles)
        {
            Subtitle S = new Subtitle();

            if (!Ready)
            {
                return(S);
            }
            try
            {
                int N = SearchAndTools.BinarySearchInTimesFromTitles(TimeTitles, subtitles, 0, subtitles.FindLastIndex((x) => { return(x.Begin > TimeSpan.FromSeconds(-1)); }));
                if (N < 0 || N > subtitles.Count - 1)
                {
                    throw new Exception();
                }
                S = subtitles[N];
            }
            catch (Exception e)
            {
                InfoWindow.Show("Ошибка синхронизации " + e.Message);
            }
            return(S);
            // return subtitles[SearchAndTools.BinarySearchInTimesFromTitles(TimeTitles, subtitles,0, subtitles.FindLastIndex((x)=> {return x.Begin > TimeSpan.FromSeconds(-1); } ))];
        }