有什么方法可以在ActionScript 3中暂停NetStream类的网络流量?

时间:2011-01-09 07:18:42

标签: flash actionscript-3

这是我的用例:

我向用户展示一组小型播放视频。当用户点击其中一个小视频时,我会暂停所有小视频并加载更高比特率版本的视频。

一切正常,除非它真的很慢,一些网络诊断表明问题是所有小视频继续加载,即使我在他们的网络上调用了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)视频。

谢谢!

1 个答案:

答案 0 :(得分:5)

问题是电影继续加载,即使它们没有播放。您可以在YouTube上轻松查看:只需点击视频,然后点击暂停 - 进度条就会继续增长。

我相信没有其他方法可以阻止它,但在暂停时关闭每个NetStream。接受稍微延迟和/或跳转到下一个相邻的关键帧,您可以在最后一个位置继续播放影片:分配了流的视频对象应该仍然显示最后一帧,直到有新内容,或{ {1}}被调用,您可以使用video.clear()存储最后一个游戏位置,并在使用ns.time重新连接后返回该位置。