2015-08-21 35 views
3

我想播放從特定時間戳開始的音頻。但我甚至無法得到最簡單的例子。我嘗試了以下,並修改w3school's example在HTML5中尋找不一致音頻播放器

<body> 
    <audio src="skyfall.mp3" id="audio" controls preload></audio> 
    <button onclick="play()">Play</button> 
</body> 
<script type="text/javascript"> 
    var secs = 32; 
    function play(){ 

     var p = document.getElementById("audio"); 
     p.currentTime = secs; 
     console.log('Playing at secs: ' + secs); 
     p.play(); 
    } 
</script> 

但在每個瀏覽器不同的音頻播放:Chrome瀏覽器的Windows是約4秒末,Android版Chrome似乎噴滴,移動Safari瀏覽器是關閉的。 (即使VLC在播放文件時也存在此問題。)如果從文件開始處開始播放,它們將保持同步。

因此,在我看來,HTML5音頻標準要麼不正確地實施,要麼解釋不好。

我讀過服務器端的支持有時是有責任的,但我不確定當我讀取本地文件時這將是一個問題。最終我想在科爾多瓦項目中得到這個工作。

任何想法?

回答

0

問題出在文件編碼。對於MP3文件,只有恆定比特率搜索才能在所有瀏覽器中正確/一致地工作。 W3表示MP3是所有瀏覽器正式支持的唯一格式,所以我認爲使用CBR MP3就是答案。也就是說,Mozilla在格式支持上有更多in-depth guide

當比特率不恆定時,瀏覽器在給定相同時間戳的情況下尋找不同音頻段。尋找算法對於恆定比特率是簡單的,但對於可變比特率更復雜(並且通常涉及某種形式的估計);我無法在HTML標準中找到此操作的定義,因此不同的瀏覽器實現這一點並不奇怪。

This answer有一些更多的討論和潛在的解決方法。

3

我遇到了同樣的問題,我通過將MP3文件轉換爲CBR(恆定比特率)格式來解決此問題。然後,它可以解決currentTime與實際聲音之間的不一致問題。

Choose the CBR format


步驟:

  • 下載並安裝 「無畏」(這是一個免費的任何平臺)
  • 打開你的MP3文件
  • 單擊[文件] - > [導出] - > [選項] - > [常量](請參閱: Converting MP3 to Constant Bit Rate
  • Audacity will a SK您提供LAME MP3編碼器 (參見:[下載和安裝LAME MP3編碼器])

不會有任何不一致/異步問題。


另見:

TJ_Tsai/[email protected]