2010-06-18 179 views
19

我有一個使用html5 <audio>標記在瀏覽器中播放音頻的javascript。它在iPhone瀏覽器中正常工作,但不適用於Android。 (使用android 2.1的htc願望進行測試。)任何人都知道爲什麼?在Android瀏覽器中播放html5音頻

我的代碼:

function playHTML5(sound, soundcv){ 
       // sound = url to m4a audio file 
       // soundcv = div in which the audioplayer should go 

    var audio = document.createElement('audio'); 
    audio.src = sound; 
    audio.controls = "controls"; 
    if (currentSound != null){ 
    soundcv.replaceChild(audio,currentSound); 
    } else { 
    soundcv.appendChild(audio); 
    } 
    currentSound = audio; 
} 

順便說一句,我也試圖放大音頻按鈕,在iPhone(默認一個相當小)顯示出來,沒有運氣迄今爲止 - 會感激任何想法!

+0

佩卡:謝謝固定的格式!沒有注意到我搞砸了。 – 2010-06-18 12:57:13

回答

1

你檢查了你的audio format嗎?

+0

是的,我在Android上運行良好的本機應用程序中使用完全相同的媒體文件。 3gp音頻,是核心媒體文件的一部分。所以除非這些出於某種原因不能在html5標籤中播放,即使它們可以在本地應用中,那也不應該是問題所在? – 2010-06-18 12:59:17

+0

嗯,看起來你是對的,雖然:有可能是Android支持的一般格式和它支持的音頻標籤之間的區別:http://www.w3schools.com/html5/html5_audio.asp – 2010-06-18 13:15:43

+0

@anderslov有你嘗試過不同的瀏覽器。我不太瞭解android,所以我不確定你有什麼選擇。 – Jla 2010-06-18 13:46:57

14

FroYo中最新的Android瀏覽器尚不支持HTML5音頻元素。這不是一個錯誤,而是一個尚未實現的功能。它可能會出現在薑餅。

更新:薑餅瀏覽器有音頻元素。

+2

http://html5test.com顯示不支持PCM,MP3,AAC, Ogg Vorbis或WebM音頻在我的FroYo瀏覽器中。 – 2010-07-21 17:05:33

+1

感謝您的回答。但如果這不是一個錯誤,那麼文檔顯然不清楚,要稍微說明一點 - 它應該清楚地聲明不支持音頻。 – 2010-08-11 15:02:39

+0

文檔不清楚是怎麼回事?目前沒有瀏覽器支持html5 100%。你不希望他們記錄下他們不支持的所有內容,這些都是來自w3c管道的東西?音頻標籤是最新瀏覽器剛剛開始採用的新功能。僅僅因爲iPhone支持它並不會成爲Android上的一個bug。 – 2010-08-11 17:05:17

12

這裏是谷歌Android錯誤的鏈接,該錯誤是因Android缺乏對AUDIO標籤的支持而提交的。 請投票。

http://code.google.com/p/android/issues/detail?id=10546

BTW,有變通,這讓你的Android 1.6。2.2播放MP3本身,像:

<video src="test.mp3" onclick="this.play();"></video> 
+0

你是對的這個作品會膨脹。 – Grego 2011-10-14 11:44:33

+2

哇。真的,谷歌?如果你把它放在視頻標籤中,它就可以工作。他們把這件事搞得多糟糕了? – 2011-12-09 21:43:20

+0

我在Samsung Mini上運行Android 2.3.6,但仍然無法使用視頻標籤或音頻標籤播放我的小mp3。我測試它在鉻和它的作品。你能確認視頻標籤的變通嗎?任何其他的閱讀你可以鏈接到它?謝謝:) – Reinsbrain 2012-11-16 18:42:53

1

我有我的Kindle Fire的麻煩,而且發現一件似乎修復它的小東西。

<audio> 
    <source src="someclip.mp3" type="audio/mpeg" /> 
</audio> 

我誤以爲「音頻/ mp3」。我使用的是沒有原生控件的播放器(使用HTML5/JS)。

1

我在使用trigger.io部署到運行Android Jellybean的Nexus 7時獲得了此項目的工作,但僅當我使用絕對URL時纔會播放音頻。我不知道相對路徑是什麼尚未使用的音頻從我的項目中,但希望這將幫助別人了...

(function() { 

    var currentSound; 
    // I have a div called "page" 
    var soundcv = document.body; 

    // This only works for one sound for simplicity's sake 
    function playSound(sound){ 

     if (currentSound == null){ 
      var audio = document.createElement('audio'); 
      audio.src = sound; 
      soundcv.appendChild(audio); 
      currentSound = audio; 
     } 

     currentSound.play(); 
    } 

    // This isn't a real audio file URL - replace it with one of your own 
    playSound('http://example.com/example.mp3'); 
})(); 
+1

來自Trigger.io的Amir與我聯繫,他解決了這個問題 - 如果你使用createElement('video'),那麼它一切正常!看看[在我的Github上標記0.1的手機遊戲Soft Paws](https://github.com/gavD/soft-paws/tree/v0.1),它在Trigger.io中運行,並具有聲音 – 2012-08-23 21:55:00

0

我一直在擺弄這個一整天,我終於得到了我的與雅虎Web播放器在我的舊的三星Droid的瀏覽器中運行:

<a href="somefolder/file.mp3"></a> 
<script type="text/javascript" src="http://webplayer.yahooapis.com/player.js"></script> 

偉大工程提出旁邊您可以點擊播放MP3的文字一個小箭頭圖標。謝謝雅虎。

我忘了提及在本地測試時,音頻不會顯示在我的Chrome或Firefox瀏覽器中。儘管我的手機瀏覽器效果很好。

0

我知道這是一個黑客,但它在任何地方都可以工作(據我所知)!

你可以使用視頻元素,並將你的mp3轉換成mp4和ogg文件(android的firefox ogg)。你也可以設計它的樣式,所以它不會顯示任何不適合的默認玩家。請參見下面的代碼:

<video id="audioTest" width="1" height="1" style="top: -100px; left: -100px; position: absolute;" preload > 
    <source src="audio.mp4" type="video/mp4"> 
    <source src="audio.ogv" type="video/ogg"> 
</video> 

你可以在你的js代碼使用然後播放:

var audioTest = document.getElementById("audioTest"); 
audioTest.addEventListener("ended",onSoundComplete,false); 
audioTest.play();