Wavesurfer Как ускорить процесс проигрывания музыки

Я использую WaveSurferJs для воспроизведения потокового аудио и устанавливаю на бэкэнд инициализации waveurfer как MediaElement. Также сделайте рисунок вершин

var wavesurfer = WaveSurfer.create({
        .....
        container: '#waveform',
        barWidth: 2,
        barHeight: 1,
        backend: 'MediaElement',
        normalize: true
    });

wavesurfer.load(mp3_url, peakData);
wavesurfer.play();

И я делаю что-то в виде списка воспроизведения: первый звук в аудиоэлементе использует preload=true, но следующая загрузка аудио происходит так медленно, что логично, что для предварительной загрузки требуется время. Но как ускорить процесс проигрывания музыки? Есть кто-нибудь, кто пытался это сделать?

2 ответа

У меня такая же проблема. Это было решено путем обработки и сохранения данных Peak для аудио и использования их при загрузке элемента. Вам нужно установить backend 'MediaElement', чтобы он сразу начал воспроизводиться.

var wavesurfer = WaveSurfer.create({container:'#wave',
            backend: 'MediaElement'
        });

Затем вам нужно загрузить PCM из того места, где вы его сохранили, а затем передать его в качестве параметра в функцию load ().

var pcm =[0.1491,-0.0825,0.0791,..........., -0.0022];
wavesurfer.load(mp3_url, pcm);

Это немедленно начнет воспроизводить звук и сразу же начнёт рисовать сигнал.

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

exportPCM(length, accuracy, noWindow, start)
 – Exports PCM data into a JSON array.
   Optional parameters length [number] - default: 1024,
   accuracy [number] - default: 10000,
   noWindow [true|false] - default: false,
   start [number] - default: 0

Поздний ответ, но я сам решил эту проблему в эту минуту!

Это очень поздно, поэтому, вероятно, не полезно для автора, но может быть полезно для кого-то, кто ищет эту информацию.

Вам нужно использовать метод setPlaybackRate Wavesurfer Методы

Так, например, у меня есть слайдер в YII2, который имеет этот код

<?php
echo Slider::widget([
'name'=>'audio_speed',
'value'=>1,
'sliderColor'=>Slider::TYPE_GREY,
'handleColor'=>Slider::TYPE_DANGER,
'pluginOptions'=>[
'min'=>1,
    'max'=>2,
    'step'=>.1
],
'pluginEvents' => [
"slideStop" => 'function(level) { awp_player.setPlaybackRate(level.value); 
}',
]
]);
?>

Таким образом, он запускается с нормальной скоростью, 1 и позволяет пользователю удвоить скорость с шагом 0,1, перемещая ползунок, и когда пользователь прекращает "скольжение", вызывается метод.

Другие вопросы по тегам