2022年5月9日 星期一

LimeJS : TTS audio reload

2022年5月9日 星期一

一直以來都覺得,HTML5 的聲音在 iOS 上很難處理,所以總是走一步算一步,只能說「盡量」讓它能正常播放出來。

前幾天有人反應「HTML5 單字高手」在 iPad 上,聲音會有無法播放的情形,試了一下,如果是要播放 .mp3 檔案,一切正常;如果是使用 Google TTS ,在 iOS 10.3.4 沒問題(之前都是在這台上測試的),在 iOS 15.x 中,同一個 TTS 的網址,第一次播放正常,但是按了「播放」鈕重播,只出現「播放中」的狀態,卻沒有聲音。追蹤了一下「networkState」,代碼是「2」,也就是:

MEDIA_ERR_NETWORK

似乎只有在 iOS 15.x 中這樣子。

再看了一下自己的程式碼中,這一行註解掉了:

soundQuestion.baseElement.load();

應該是原來測試時,發現可有可無,就註解掉了。

.load() 是用來重新載入影音檔的方法,把上面那行註解的符號拿掉,在 iOS 15.x 中,按「播放」鈕,果然可以正常地重播語音了。

好吧!將上面兩個觀察結合起來,只有在發生「MEDIA_ERR_NETWORK」時,才執行 .load():

if(soundQuestion.baseElement['networkState']==2) {
soundQuestion.baseElement.load();
}

Google TTS 重播的問題不只在「HTML5 單字高手」出現,在「HTML5 English 1200」也有相同的問題,趁還記得,就一起處理掉了。

個人喜歡分享,更喜歡別人將發現的問題提出來;雖然解決問題常常要花不少時間,但過程中,心情是愉悅的,問題解決了,更是開心。


沒有留言:

張貼留言

 
雄::gsyan © 2009. Design by Pocket