2016-09-06 72 views
1

我有一個html音頻元素正在播放我的音軌。這是一個非常簡單的設置:html音頻元素的自定義開始和結束點

<audio controls loop="loop"> 
    <source type="audio/wav" src="song.wav"> 
</audio> 

我認爲這將是一樣簡單,使自定義的開始和結束點。即如果我的曲目長10秒,我想稍微修剪一下,這樣只會播放歌曲的中間部分。

the W3 audio tag doc它似乎沒有任何指定開始和結束時間的選項。

我不是要求任何人爲我寫代碼;我正在尋找如何解決這個問題的概念指南。我需要它來處理循環,即它應該在每個循環中以我指定的值開始和結束。我正在尋找一個辦法,是完全客戶端和工作在Chrome

+0

你最好看看mdn以供參考。 w3schools是不完整的,而且往往是不正確的。請查看:https://developer.mozilla.org/en-US/docs/Web/HTML/Element/audio –

+0

@RobertParham注意到了,但我仍然沒有看到列出的任何'開始'或'結束'指令。 –

+0

也許這將有助於.. http://stackoverflow.com/questions/12029509/html-5-audio-play-file-at-certain-time-point –

回答

1

我也沒搞清楚,一些作品。

canplaythrough事件不能滿足,因爲音頻將循環;此事件只有一次

解僱作爲替代,我使用的timeupdate事件:(這CoffeeScript中)

window.playbackStart = 2 
    window.playbackEnd = 4 

    $("audio").off("timeupdate").on "timeupdate", (e) -> 
     audio = e.currentTarget 
     if audio.currentTime > playbackEnd 
     audio.currentTime = playbackStart 

這看起來很簡單,但我不得不做一些調試,因爲調用currentTime =沒有工作(只是將時間設置爲零,無論如何)。事實證明,這個問題實際上是服務器端的(參見https://stackoverflow.com/a/32667819/2981429)。

我需要:

  1. 配置我的服務器使用HTTP 1.1

    • nginx的,我加

      proxy_http_version 1.1; 
      proxy_set_header Connection ""; 
      

      location { }

  2. 在我的應用程序中,爲響應設置標題Accept-Ranges: bytes
+0

很酷。不會想到這一點。 –

-1

我會修剪這稍微從我掛在評論答案修改代碼.wav文件本身

+0

我真的在這裏尋找客戶端唯一的解決方案。 –

0

...看到commments的信息

http://jsfiddle.net/mNPCP/313/

// set start and end times 
    var startTime = 12; 
    var endTime = 15; 
    myAudio=document.getElementById('audio2'); 
    myAudio.addEventListener('canplaythrough', function() { 

     // start it at the start time 
     this.currentTime = startTime; 
     this.play(); 
     // let it play to the end time and then reset the play time 
     setTimeout(function(){ 
     this.currentTime = startTime; 
     }, (endTime-startTime)*1000) 
    }); 
+0

不幸的是我不認爲這會很簡單。 Chrome在設置currentTime方面存在問題,當音頻循環播放時,canplaythough不足以解決問題。雖然我很欣賞你的嘗試。我會讓你知道我經過多一點研究後弄清楚 –

+0

,看來我的問題實際上可能是服務器端(見http://stackoverflow.com/a/32667819/2981429) –

相關問題