синхронизировать и выделять текст HTML для аудио

При необходимости я могу объяснить более подробно, но, по сути, мне нужно произвести изменения CSS в тексте HTML синхронно со звуковой дорожкой, т. е. выделить слова/фразы синхронно с воспроизведением звука. Мне также нужно управлять воспроизведением звука, нажимая на текст. У меня хорошие навыки HTML/CSS, но я не так силен в js, поэтому надеюсь, что есть подход jQuery. Я надеюсь, что кто-то может направить меня в лучшем направлении.

Спасибо заранее,

свс


person shecky    schedule 24.05.2012    source источник


Ответы (1)


Для простоты использования я рекомендую комбинацию jQuery и Popcorn.js для всего, где вы хотите интегрировать мультимедиа с HTML. , и наоборот. В качестве примера см. этот сообщение о jsfiddle.

Для записи, если jsfiddle когда-нибудь исчезнет, ​​вот код:

HTML

<audio id="greeting" src="https://dl.dropboxusercontent.com/u/17154625/greeting.ogg" controls></audio>

<div id="text">
   <span id="w1" class="word" data-start="1.0">Hello</span>,
   and <span id="w2" class="word" data-start="2.0">welcome</span>
   to Stack <span id="w3" class="word" data-start="3.0">Overflow</span>.
   Thank you for asking your question.
</div>​

CSS

.word {
   color: red;
}
.word:hover, .word.selected {
    color: blue;
    cursor: pointer;
}​

JS

var pop = Popcorn("#greeting");

var wordTimes = {
    "w1": { start: 1, end: 1.5 },
    "w2": { start: 1.9, end: 2.5 },
    "w3": { start: 3, end: 4 }
};

$.each(wordTimes, function(id, time) {
     pop.footnote({
        start: time.start,
        end: time.end,
        text: '',
        target: id,
        effect: "applyclass",
        applyclass: "selected"
    });
});

pop.play();

$('.word').click(function() {
    var audio = $('#greeting');
    audio[0].currentTime = parseFloat($(this).data('start'), 10);
    audio[0].play();
});​
person thisgeek    schedule 24.05.2012
comment
Супер-спасибо большое! Я буду занят, играя с этим ... Надеюсь, вы побалуете меня, если мне нужно будет продолжить. Ваше здоровье! - person shecky; 25.05.2012
comment
p.s. что вы использовали для генерации голоса в демонстрации jsfiddle? - person shecky; 25.05.2012
comment
На моем Mac я запустил say "Hello, and welcome to Stack Overflow. Thank you for asking your question." -o greeting.ogg - person thisgeek; 25.05.2012
comment
Спасибо еще раз! Я не знал о системных голосовых опциях! - person shecky; 26.05.2012
comment
@thisgeek Я пытался использовать свою собственную ссылку на Dropbox с файлом .mp3, но он по какой-то причине не воспроизводится, есть идеи, почему? - person bouncingHippo; 23.08.2012
comment
@bouncingHippo Пробовали ли вы поместить звуковой файл в свою общедоступную папку? - person thisgeek; 24.08.2012
comment
Вы вставили wordTimes вручную или как-то их сгенерировали? - person akanevsky; 19.10.2015