Парсер Javascript для RDF / JSON от WEBVTT - PullRequest
5 голосов
/ 02 августа 2011

Добрый вечер.

Прямо в точку - мне нужен скрипт, который захватывает структуру RDF / JSON с определенного промежутка времени в файле WEBVTT.Существует ли такая вещь?

RDF / JSON - это указанная Talis файловая структура, которая выглядит следующим образом:

{ "S" : { "P" : [ O ] } }

WEBVTT реализует упомянутую структуру следующим образом:

0
00:00:00,000 --> 00:00:46,119
{ "S" : { "P" : [ O ] } }

1
00:00:48,000 --> 00:00:50,211
{ "S" : { "P" : [ O ] } }

...

И я использовал бы такой файл при просмотре видеофайлов таким образом, чтобы, когда я нажимал на какую-то часть временной шкалы, скрипт выбирал соответствующий код RDF / JSON (я могу сделать это сейчас, уже есть парсер WEBVTT),а затем синтаксический анализатор получает запрошенную информацию об объекте из структуры RDF / JSON.

Я был действительно счастлив, когда увидел, что в jQuery реализован getJson, но он работает только для «обычных» файлов json.

Лучше всего было бы просто написать сценарий, но мои сроки и знания очень ограничены, поэтому я хотел бы услышать любое предложение или решение, которое кто-нибудь может знать.

Ответы [ 2 ]

5 голосов
/ 03 августа 2011

Я написал синтаксический анализатор WebVTT для моего <track> / HTML5 polyfill с субтитрами для видео Captionator .

Не стесняйтесь выбирать источник ветки разработки (который имеет лучшийСоответствие WebVTT, так что, вероятно, лучше взглянуть на это, чем на стабильную ветвь.)

Код парсера начинается здесь: https://github.com/cgiffard/Captionator/blob/captioncrunch/js/captionator.js#L1686

В конечном счете, то, что вы описываете, выглядит примерносоответствует предполагаемому варианту использования для типа дорожки metadata (как описано в спецификации TimedTextTrack WHATWG .) Вы можете использовать Captionator (я бы также порекомендовал вам другую библиотеку, ноЯ не знаю ничего другого, что не поставляется в комплекте с целым видеопроигрывателем или которое реализует API-интерфейс TimedTextTrack JS, который вам понадобится) для его поддержки - событие TextTrack.oncuechange и TextTrack.activeCuesСписок позволяет прослушивать изменения в репликах, когда пользователь ищет в пределах временной шкалы видео.Затем вы можете получить текст каждой реплики (за исключением метаданных и заголовка метки) и проанализировать его как JSON.Просто установите дорожку с субтитрами, как показано ниже:

<video src="myvideo.webm" poster="poster.jpg" width="512" height="288">
    <track kind="metadata" src="meta.webvtt" type="text/webvtt" srclang="en" label="Metadata Track" default />
</video>

Затем включите библиотеку титров, инициализируйте ее в соответствии с документацией , выберите свою дорожку и настройте обработчик событий.Вы можете получить доступ к тексту отдельной реплики следующим образом:

var cueText = document.getElementById("video").tracks[0].activeCues[0].getCueAsSource();

Тогда просто:

var RDFData = JSON.parse(cueText);

Удачи:)

1 голос
/ 02 августа 2011

Кажется, что RDF / JSON на самом деле является сложной и вложенной структурой JSON с векторами, поэтому функция getJSON будет успешно анализировать данные после ее извлечения из временной структуры WEBVTT.

...