2011-01-09 49 views
0

這是我的使用案例:任何方式在ActionScript 3中暫停NetStream類的網絡流量?

我向用戶展示一組小型播放視頻。當用戶點擊其中一個小視頻時,我會暫停所有小視頻並加載被點擊的視頻的較高比特率版本。

這一切工作正常,除非它真的很慢,並且一些網絡診斷表明問題是所有的小視頻都會繼續加載,即使我已經在其netstream上調用了pause()。

要在代碼改寫:

假設我有:

var nc:NetConnection = new NetConnection(); 
nc.connect (null); 

var ns1:NetStream = new NetStream(nc);   

var vid1:Video = new Video(WIDTH, HEIGHT); 
vid1.attachNetStream(ns1); 
ns1.play("video1.mp4"); 
stage.addChild(vid1); 

幾秒鐘去了...... VID1仍在加載,和我想要做的就是暫停兩者的視頻流VID1以及裝載VID1的網絡流量,使下面的代碼可以儘可能快地

ns1.pause(); 

var ns2:NetStream = new NetStream(nc); 
var vid2:Video = new Video(WIDTH, HEIGHT); 
vid2.attachNetStream(ns2); 
ns2.play("video2.mp4"); 
stage.addChild(vid2); 

...然後一段時間後,用戶駁回VID2運行,所以我繼續VID1的回放

ns1.resume(); 

有沒有辦法告訴ns1停止閱讀它的套接字?如果我撥打ns1.close(),則我無法通過ns1.resume()繼續播放。

如果我需要使用流協議,加載所有小視頻時握手有多重要?我試圖快速加載大量低比特率(50kbps)的視頻。

謝謝!

回答

5

問題是即使電影沒有播放,電影也會繼續加載。您可以輕鬆地在YouTube上看到:只需點擊一個視頻,然後點擊暫停 - 進度條繼續增長。

我相信沒有其他辦法可以阻止它,但是在每個NetStream暫停時關閉它。接受稍微的延遲和/或跳轉到下一個相鄰的關鍵幀,您可以在最後一個位置繼續播放電影:流分配給的視頻對象仍應顯示最後一幀,直到出現新內容或video.clear()被稱爲,並且您可以使用ns.time存儲上次播放位置,並在使用ns.seek()重新連接後返回。

+0

謝謝,這工作得很好! – jseims 2011-01-09 23:33:35