отображение субтитров для видео в мультимедийном элементе WPF
-
05-07-2019 - |
Вопрос
Я работаю над приложением WPF, которое отображает видеоклипы как часть рабочего процесса. Я делаю это с помощью MediaElement для воспроизведения локально размещенных (а не потоковых) файлов AVI. Прекрасно работает.
Однако мне только что передали новое требование разрешить отображение субтитров во время воспроизведения клипа. Я понятия не имею, как лучше всего это сделать. Я смутно осознаю, что WMP может отображать отдельные файлы субтитров во время воспроизведения клипа, но я не знаю, поддерживает ли WPF это? Р>
Могу ли я сделать это изначально в WPF? Если нет, какие у меня варианты?
Мой запасной подход заключается в том, чтобы клиент выпекал субтитры непосредственно в видеофайл, но я бы предпочел найти лучший способ справиться с этим.
Решение
Ну, если ваше требование для субтитров - это просто наложение текста на MediaElement, то да, WPF, безусловно, может это поддерживать. Вам просто нужно поместить MediaElement в сетку вместе с TextBlock.
Реальный трюк заключается в изменении свойства TextBlock Text в соответствии с временем в MediaElement. Но, вероятно, есть много способов сделать это; первое, что приходит на ум, - это использование триггера, привязанного к свойство MediaElement.Position .
Другие советы
В WPF вам нужно проанализировать файл субтитров и выполнить синхронизацию, у вас нет события, подобного MarkerReached, в Silverlight. Но вы можете создать smi (SAMI-файл) с тем же именем файла, что и ваше видео, и поместить его в ту же папку. Затем подпишитесь на событие ScriptCommand и покажите содержимое в текстовом блоке наложения.