2010-09-17 44 views
0

我们有一个自定义的Flash视频播放器。它使用托管的FMS $ 50 /月帐户进行流式传输。检测用户的Flash视频下载速度

有些用户抱怨说视频根本不播放。

有了这些用户之一,我们让他们去一个速度测试网站,并确定他们有一个非常缓慢的连接,我们正在假设是什么导致他们无法观看视频。

所以在我们尝试加载视频之前,我们要确定它们的连接速度。那么如果他们有足够好的连接,我们会播放视频,如果没有,我们会做一些其他的事情,比如播放低质量的视频,或者只是显示一条消息,而不是播放视频。

那么,在这种情况下确定用户连接速度的最佳方式是什么?我们应该使用动作吗?我们应该进行流测试还是渐进测试?我们应该使用ajax并将结果发送到闪存?

回答

0

您可以使用SMIL文件来定义不同版本的视频,用不同的比特率,然后将带宽检测应采取照顾你,由FMS服务器和FLVPlayback组件,我相信:

http://help.adobe.com/en_US/as3/components/WS5b3ccc516d4fbf351e63e3d118a9c65b32-7f13.html

+0

我认为这不会起作用,因为我没有使用FLVPlayback组件,并且播放的媒体比单个flv更复杂。所以我真正想要的是一种独立计算带宽的方法......就像那些带宽测试网站一样。那么一旦我在我的应用程序开始时得到这个数字,我就可以用我的自定义播放器做任何我想做的事情。 – Ryan 2010-09-18 19:53:50

1

如果你有一个托管帐户FMS,他们通常提供与内置的动态流媒体预建的视频播放器

如果您正在使用O操作。 SMF(开源媒体框架),你可以使用闪光灯媒体播放器,其提供动态流,你就必须建立一个档案,所有数据流: http://forums.adobe.com/thread/679664?tstart=0

或者,如果您正在构建自己的OSMF播放器,你可以只写一些代码:

var RTMP_URL = "your-rtmp-link"; 
    var resource:DynamicStreamingResource = new DynamicStreamingResource(RTMP_URL); 

    var vector:Vector.<DynamicStreamingItem > = new Vector.<DynamicStreamingItem > (2); 
    vector[0] = new DynamicStreamingItem("mp4:my-high-link.f4v",1500); 
    vector[1] = new DynamicStreamingItem("mp4:my-low-link.f4v",400);** 
    resource.streamItems = vector; 

    videoElement = new VideoElement(resource); 
    player = new MediaPlayer; 
    player.autoPlay = true; 

    container = new MediaContainer; 
    addChild(container); 

    player.media = videoElement; 
    container.addMediaElement(videoElement); 

    player.play(); 

或者,如果你经常动作写下您的播放器(无框架)Influxis有一个教程: http://labs.influxis.com/?p=91