![]() |
|
||||||||||
|
|
|
|||||
|
Здравствуйте, возник вопрос: есть ли что-нибудь во Flex для отображения и синхронизации субтитров или что-нибудь, что облегчит процесс написания своего механизма?
|
|
|||||
|
ветеран форума
|
Есть CuePoint-ы для видео, которые можно задать массивом. Соответственно, пишем простой скрипт преобразования файла субтитров в нужный нам формат, и отображаем. Либо генерируем xml из файла субтитров, и расставляем cuepoint-ы на стадии кодирования. Проблема в том, что в в mpeg-видео, которые выглядит намного качественнее, субтитры не встраиваются, а синхронизация происходит по тайперу, что плохо сказывается на ее качестве.
__________________
4am is time to rock |
|
|||||
|
Регистрация: Mar 2001
Адрес: msk
Сообщений: 1,416
|
1. А что значит "в mpeg-видео субтитры не встраиваются"? А куда встраиваются? В flv?
2. А чем плохо отображение по таймеру? Можно использовать таймер + netStream.time и всё будет точно. В чём беда? 3. На перспективу, есть еще hXMP 4. Самый волнующий вопрос: а как реализовать мультиязычные субтитры? Все равно ведь XML (вот титлы ютьюба).
__________________
#define true false //счастливой отладки, друзья |
|
|||||
|
Если уже самому делать, то использовать playheadUpdate и синхронизировать по этому времени. Титры хранить в XML в формате, что то типа:
Ну это я так думаю))) Хотелось бы узнать, может кто уже изобрел велосипед? |
|
|||||
|
ветеран форума
|
1. Да, в flv встраиваются cuepoint-ы с произвольными текстовыми данными.
2. Просто меньше точность, чем родной механизм в flv. 4. Завести атрибут в xml, прописать там язык, сложить все субтитры в один xml и отображать нужный язык. Либо несколько xml и грузить нужный. 1ое лучше тем, что в рантайме переключается моментально, но грузяться субтитры для всех языков в этом случае. Цитата:
__________________
4am is time to rock Последний раз редактировалось DarkLight; 14.01.2009 в 15:36. |
|
|||||
|
Под велосипедом я имел не организацию XML файла, распарсить можно все что угодно, а еще какой-нибудь механизм для субтитров
Может класс есть какой во флексе?Это что же получается? На каждый playheadUpdate (по умолчанию, интервал вроде 250 мс) мы должны перебирать в цикле весь массив субтитров и искать между какими временными значениями субтитров он находится и что сейчас показывать? А если субтитров тысячи? О_о Последний раз редактировалось marat_sa; 14.01.2009 в 15:56. |
|
|||||
|
Цитата:
Subtitles["время в секундах"]="мой текст" Subtitles["время в секундах"]="мой текст 2" Высчитывать во время воспроизведения секунды - переводить это в строку и далее, текущее время воспроизведения в секундах у нас же есть myPlayHeadSeconds // текущее время воспроизведения var currSecond:String=myPlayHeadSeconds.toString(); if(Subtitles[currSecond]!=undefined){ /// trace(Subtitles[currSecond]); - текущий субтитр } Я заводил пустую субтитру в таком случае |
|
|||||
|
ветеран форума
|
Нет, загрузить субтитры, распарсить и скормить CuePointManager-у
__________________
4am is time to rock |
|
|||||
|
Начал делать - возник вопросик:
содаем экземпляр CuePointManager. В качестве первого параметра в него передается owner:VideoPlayer, а у меня видео проигшрывается через кастмный компонент-плеер на базе VideoDisplay. Этот VideoPlayer должен лежать вроде по адресу mx.controls.videoClasses.VideoPlayer, но у меня в пакете videoClasses только 2 класса CuePointManager и VideoError. Откуда взять этот класс и как привести VideoDisplay к нему??? |
|
|||||
|
Регистрация: Mar 2001
Адрес: msk
Сообщений: 1,416
|
let me google this for you:
http://blog.goosepoopproductions.com...uepointmanager
__________________
#define true false //счастливой отладки, друзья |
![]() |
![]() |
Часовой пояс GMT +4, время: 15:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|