Парсер Javascript для RDF/JSON от WEBVTT

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

Прямо к делу - мне нужен скрипт, который захватывает структуру 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.

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


person 3mpetri    schedule 01.08.2011    source источник
comment
Возможно ли, что RDF/JSON — это просто сложная структура JSON? O ведет себя как массив данных вектора P, который находится под объектом S?   -  person 3mpetri    schedule 02.08.2011
comment
Мне кажется очень странным, что WebVTT, разработанный в 2011 году, насколько я могу судить, еще не полностью JSON...   -  person jwl    schedule 24.02.2012


Ответы (2)


Я написал синтаксический анализатор WebVTT для полифилла Captionator <track>/HTML5.

Не стесняйтесь выбирать источник ветки разработки (которая лучше всего соответствует 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);

Удачи :)

person Christopher    schedule 03.08.2011
comment
как вы справляетесь с ситуацией, когда несколько реплик перекрываются? Например, одно с 00:00 до 01:30, а другое с 00:00 до 00:50, и вы хотите иметь доступ к обоим значениям структуры json? Я также не знаю, как динамически назначать имя subject и predicate локальной переменной при извлечении некоторого значения из определенного файла json (например, var a = ''; //how to get the rfd/json subject? var b = ''; //how to get the rdf/json predicate? $('#meta').append(cueObject[a][b][0].value);). У меня здесь серьезный беспорядок: D - [ссылка]b-webdesign.com/multilab/ Тест05 - person 3mpetri; 05.08.2011
comment
результатом разбора является список сигналов, упорядоченный по времени. Так что вы должны получить его из TextTrackList. - person Silvia; 11.08.2011
comment
@Christopher @Silvia У меня возникли проблемы с запуском рабочего примера метаданных <track>. Не мог бы кто-нибудь из вас мне помочь? Я задал вопрос об этом здесь. Спасибо! - person Steph; 21.02.2012

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

person 3mpetri    schedule 02.08.2011