html部分
<audio
v-for="(audio, aindex) in event.sections.audioSections"
:key="aindex"
class="audio"
:src="audio.audio"
type="audio/mp3"
@durationchange="getAudio(aindex)"
></audio>
js部分
getAudio(index) {
fetch(document.getElementsByClassName('audio')[index].src)
.then(response => {
response.blob().then(res => {
this.audioList.push({
index: Number(index),
blob: res
})
if (this.audioList.length === this.list.length) {
this.audioList.sort(this.sortArr('index')) // 加载顺序会有问题,重新排序
let merge = []
for (let j in this.audioList) {
merge.push(this.audioList[j].blob)
}
let newBlob = new Blob(merge, { type: 'video/mp4' })
this.allAudio = window.URL.createObjectURL(newBlob) // 拼接所有的audio
}
})
})
},
sortArr(arr) {
return function(a, b) {
var value1 = a[arr]
var value2 = b[arr]
return value1 - value2
}
}