第一、在chrome下,單個文件無誤,但多個mp3文件1.mp3,2.mp3依次播放,即當1.mp3播放完了,接着播放2.mp3不行。
我試過此法,不行。
我又試了此法;我本意是讓其循環播放,但只能播放最后一個即3.mp3。就是只取了最后一個值。
function playAudio() {
var audioElm= document.getElementById("audio");
var AF=document.getElementById('audioFile').value;
var b=AF.split(";");
for(var i=0;i
//alert(b[i]);
audioElm.src=b[i];
audioElm.play();
}
}
第二問,我使用audio標簽,src中的mp3長度是12秒。
但是,我的要求是,在5秒中播放完,從而實現快速播放的目的。onratechange屬性只是速度變快了,但是播放時間未減少。
7 个解决方案
#1
window.onload = function(){
var arr = ["3.mp3","2.mp3","1.mp3"];//把需要播放的歌曲從后往前排
var myAudio = new Audio();
myAudio.preload = true;
myAudio.controls = true;
myAudio.src = arr.pop();//每次讀數組最后一個元素
myAudio.addEventListener('ended', playEndedHandler, false);
myAudio.play();
document.getElementById("audioBox").appendChild(myAudio);
myAudio.loop = false;//禁止循環,否則無法觸發ended事件
function playEndedHandler(){
myAudio.src = arr.pop();
myAudio.play();
console.log(arr.length);
!arr.length && myAudio.removeEventListener('ended',playEndedHandler,false);//只有一個元素時解除綁定
}
}
#2
============================知道為什么html5設計成可以多個src嗎?人家的原意是以防其中一些src文件無法播放時,可以嘗試播放其它,並不是播放列表來的。簡單講就是從上到下嘗試播放,直到可以播放為止。假如第一個可以播放后面的就沒用了。
for(var i=0;i
audioElm.src=b[i];
audioElm.play();
}
============================這又是另一個概念了:你這是反復對src賦值,當然是最后一個有效。就好像你不斷試穿衣服,到出門時你最終也是只穿了最后一次試的那件上衣。
onratechange:當媒介數據的播放速率改變時運行腳本!這只是一個回調函數。就好像說你感冒了就去看醫生,這只是一個事件處理。但並不表明你現在就感冒了。“我的要求是,在5秒中播放完”重點是你怎么樣要求它快進的?
#3
引用 2 樓 xzy21com 的回復:
去看醫生,這只是一個事件處理。但並不表明你現在就感冒了。“我的要求是,在5秒中播放完”重點是你怎么樣要求它快進的?
多謝謝,祝天天 快樂。
#4
引用 2 樓 xzy21com 的回復:
試播放,直到可以播放為止。假如第一個可以播放后面的看醫生,這只是一個事件處理。但並不表明你現在就感冒了。“我的要求是,在5秒中播放完”重點是你怎么樣要求它快進的?
謝謝了。
我的音頻文件2.mp3 長度有12秒,但是,兩段有空白的(就是從3s-9s有聲音),因此我只希望播放3s-9s。我不希望剪輯音頻,因為太土了。
使用#t=3:9,就不能觸發ended的事件,真是上火,我已給html5小組發郵件了,說明,此處有bug。
我的audio標簽,
我應該怎么辦啊?謝謝了,我百度了所有的資料。
#5
window.onload = function(){
var myAudio = new Audio();
myAudio.preload = true;
myAudio.controls = true;
myAudio.src = "1.mp3";
myAudio.playbackRate=3;//快進3
myAudio.play();
var t=0;
var tt = setInterval(function(){
t++;
if(t==1){
myAudio.playbackRate=1;//恢復正常播放
}else if(t>7){
myAudio.playbackRate=100;//快進,達到盡快結束
clearInterval(tt);
}
},1000);//這里設短了又不起效果
document.getElementById("audioBox").appendChild(myAudio);
myAudio.loop = false;//禁止循環
}
#6
引用 5 樓 xzy21com 的回復:
}
謝謝大哥,祝天天快樂。我一會試驗一番。
#7
太陽光 你的 好像播放完了 再點擊播放 不從第一個播 是最后一個呢