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