Обратный вызов при рендеринге записанного и живого / потокового аудио / видео - PullRequest
0 голосов
/ 09 октября 2009

Ребята ...! Я - новичок в этой области аудио / видео форматов / кодеков, их проигрывателей, их открытых API и т. Д. Буду очень признателен за ваше терпение, а также за советы по этому моему вопросу.

Вопрос: Почти все аудио / видео плееры показывают информацию о времени прохождения в формате чч: мм: сс. Я хочу иметь возможность зарегистрировать мой обратный вызов - который может быть либо обратным вызовом Java / апплета, либо обратным вызовом Javascript - который вызывается при каждом «временном тике» и запускает мой пользовательский код. Возможно, это не тиканье времени, а событие «прохода кадра» в жаргоне кодеков. Возможно, эти кодеки / проигрыватели позволяют вам даже указать частоту обратного вызова (каждые столько кадров или секунд) ...

Во-вторых, я хотел бы иметь возможность сделать это как для записанного контента, так и для живого / потокового контента.

Какое программное обеспечение с открытым исходным кодом, инструменты, API, «концепции» и т. Д. Мне стоит посмотреть? Я хотел бы иметь возможность обрабатывать самые популярные форматы, такие как FLV, AVI, MP3, MPEG. В идеале я бы предпочел иметь дело с чем-то в Java / Javascript.

Не уверен, с чего начать. Пример, фрагмент кода или даже просто процесс / шаги, которым я должен следовать, очень помогли бы. Еще раз спасибо.

1 Ответ

1 голос
/ 12 октября 2009

Это зависит от того, в какой среде вы работаете, и от того, что вы хотите сделать в обратном вызове. В некоторых мультимедийных средах есть способ добавить видео, субтитры или аудио фильтры, которые имеют доступ к различным данным из потока. Один из таких фреймворков с открытым исходным кодом - GStreamer . Другим языком является Processing на основе Java, хотя он не может напрямую декодировать популярные видеоформаты. Я думаю, что VLC , который, конечно, является королем видеоформатов с открытым исходным кодом, также имеет API, который потенциально может удовлетворить ваши потребности.

Новый HTML5-видеоэлемент определяет событие timeupdate, которое будет запускаться каждые 15-250 мс во время воспроизведения видео. Атрибут currentTime доступен для получения текущей позиции воспроизведения. Также можно манипулировать видео HTML5 непосредственно в коде JavaScript .

Если вам просто нужен обратный вызов во время воспроизведения видео и вам не нужно фильтровать данные, вы можете просто использовать стандартные функции таймера вашего языка, например, setTimeout() в JavaScript, чтобы запросить обратный вызов таймера с частотой кадров видео.

...