这是我的用例:
我向用户展示一组小型播放视频。当用户点击其中一个小视频时,我会暂停所有小视频并加载更高比特率版本的视频。
一切正常,除非它真的很慢,一些网络诊断表明问题是所有小视频继续加载,即使我在他们的网络上调用了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)视频。
谢谢!
答案 0 :(得分:5)
问题是电影继续加载,即使它们没有播放。您可以在YouTube上轻松查看:只需点击视频,然后点击暂停 - 进度条就会继续增长。
我相信没有其他方法可以阻止它,但在暂停时关闭每个NetStream。接受稍微延迟和/或跳转到下一个相邻的关键帧,您可以在最后一个位置继续播放影片:分配了流的视频对象应该仍然显示最后一帧,直到有新内容,或{ {1}}被调用,您可以使用video.clear()
存储最后一个游戏位置,并在使用ns.time
重新连接后返回该位置。