2012-07-25 37 views
2

這在本質上是相同的,因爲這問題,但更多的細節:的SoundCloud + Soundmanager2 + EQDATA

Soundcloud + SoundManager bug: reading a stream's eqData

所以我用帆布/ SVG /你有什麼,當它接收看起來很棒有可視化來自SoundCloud/SoundManager2的EQData,但有一些非常奇怪的事件正在發生,導致它不那麼酷。 1.)當您使用SMSound.pause()或任何變體(SoundManager.togglePause等),然後恢復所有到達SoundManager2的EQData/WaveformData停止時,它只是零。 2)如果你停止一個軌道並重新啓動它,所有的EQData/WaveformData停止。 3.)偶爾和沒有警告的EQData/WaveformData剛剛停止進入SM2並且可視化器剛剛停止,如果我進入下一首曲目,它會再次啓動,但它在30秒內從未對100%的歌曲有效。

我一直無法弄清楚這是一個SoundCloud還是SoundManager2問題,但似乎有些人有問題,但直到現在我一直無法找到任何解決方案。

鏈接可在這裏:http://nikru.com/viz/。它被剝離出網站,因爲它是針對客戶的未啓動網站,他們不希望公衆看到。 :)

任何幫助是HUGELY讚賞。

謝謝!

+0

我一直在尋找潛在的可能性,它是一個重定向或crossdomain.xml問題的問題。我相信它可能是兩個。首先,soundcloud將他們的跟蹤流重定向到他們的雲端設置(ec-media.soundcloud.com),我使用php文件修復這些文件,將這些文件解析爲最終的URL。但是,我發現他們的雲主機沒有跨域文件:http://ec-media.soundcloud.com/crossdomain.xml這意味着當我嘗試直接從那裏拉它失敗。可能需要從SoundCloud爲此進行修復... – krut 2012-07-25 05:15:45

回答

2

好的。我相信其他人也遇到過這個問題,並沒有很快解決。我希望這可以幫助別人,因爲我一直在玩一天左右的可能性,並認爲我有一個解決方案爲每個人。

發生什麼事是當SoundManager2第一次從http://api.soundcloud.com/tracks/9708215/stream?consumer_key= {YOUR KEY}頁面請求時調用該歌曲。這很棒,歌曲可以播放,因爲api.soundcloud.com有一個crossdomain.xml文件。但是,SoundManager2在下一個請求(暫停/播放或下一首/上一首曲目)時會回到它所知道的(這是一個在ec-media.soundcloud.com上的301頁面,正如我之前提到的ec- media.soundcloud.com沒有crossdomain.xml文件),這並不好。我的修復是每當我重新開始播放歌曲時,我修改聲音的URL以包含新的ts = {time}參數,然後在SMSound上運行.load(),這會導致重新加載並修復問題。

var $track = $(this), 
    data = $track.data('track'), 
    playing = $track.is('.active'); 
newURL = soundManager.sounds["track_" + data.id].url.split("&ts=")[0]; 
newURL += "&ts=" + Math.round((new Date()).getTime()/1000); 
soundManager.sounds["track_" + data.id].url = newURL; 
soundManager.sounds["track_" + data.id].load(); 
soundManager.sounds["track_" + data.id].url = newURL; 

然後,當歌曲暫停時,爲了節省帶寬,我實際上只是將它靜音並保存歌曲暫停的位置。當他們取消暫停時,我會在他們離開並取消靜音的位置上播放該曲目......這並不美妙,但它是我們所能做的(我認爲)最好的。

希望這可以幫助別人。 :)

相關問題