短版本:
我们的Flash应用是来自CDN的直播视频,从最近发布的Flash Player 11.7开始
背景
我们有一个在浏览器中运行的Flash应用。我们在Windows XP和Windows 7上看到了IE 8,9,10的问题。无论是32位还是64位。
当我们的应用程序向我们的CDN请求视频时,浏览器拒绝缓存它,并且它导致高网络流量。缓存在Flash Player 11.6中运行良好。
问题:
使用Fiddler,我们在好的和坏的情况下对比了HTTP请求。唯一的区别是,使用Flash Player 11.7时,原始请求包含:
Pragma: no-cache
我意识到这是特定于实现的,不受支持。请注意, 我们 不想要这个。
我们正在使用OSMF framework(版本2.0)并且可以访问源代码。
代码:
具体代码(大幅抽象):
resource = new URLResource(url);
player = new MediaPlayer();
factory = new DefaultMediaFactory();
element = factory.createMediaElement(resource);
player.media = element;
问题:
有人对此有解决方法吗?
想法包括:
可悲的是,使用其他浏览器不是我们的选择。
答案 0 :(得分:0)
简而言之,以下内容对我们有用:
改变这个:
var playerResource:URLResource = new URLResource(url);
到此:
var playerResource:StreamingURLResource = new StreamingURLResource(url);
playerResource.streamType = StreamType.LIVE_OR_RECORDED;
详细地说,我们知道OSMF 2.0在Flash 11.6和Flash 11.7之间没有变化。然而,似乎streamType
的默认值的解释确实发生了变化,可能是偶然的。 Flash 11.7将默认视为“实时流”并且不缓存。
明确指定streamType
,事情会恢复正常。 HTTP请求中没有“Pragma:no-cache”。我们的应用程序呼叫视频一次,然后缓存。此修复程序也适用于原始的env,Flash 11.6。