我想知道你们中是否有人遇到过允许使用后备解决方案嵌入 YouTube 视频的解决方案/功能,如果 YouTube 视频 - 并且仅限视频,则选择替代视频源!- 被阻止。
我们的一位企业客户可以通过代理服务器访问网络,该代理服务器清除了从 YouTube 提供的 Flash 内容。更具体地说,从 ytimg.com 提供的任何内容都被阻止。由于他们的网站上的产品视频非常多,他们发现启动时客户可以在他们的网站上观看视频而他们自己的员工不能观看很烦人。
有什么建议么?
我想知道你们中是否有人遇到过允许使用后备解决方案嵌入 YouTube 视频的解决方案/功能,如果 YouTube 视频 - 并且仅限视频,则选择替代视频源!- 被阻止。
我们的一位企业客户可以通过代理服务器访问网络,该代理服务器清除了从 YouTube 提供的 Flash 内容。更具体地说,从 ytimg.com 提供的任何内容都被阻止。由于他们的网站上的产品视频非常多,他们发现启动时客户可以在他们的网站上观看视频而他们自己的员工不能观看很烦人。
有什么建议么?
您应该尝试向 youtube 中托管的内容发出 Ajax 请求,我会这样说:
function check_youtube() {
$.ajax({
type: 'GET',
dataType: 'json',
url: URL_ON_YOUTUBE,
timeout: 5000,
success: function(data, textStatus ){
alert('Woot, Cat videos on the way!');
},
error: function(xhr, textStatus, errorThrown){
alert('Ooops, You suck, proxy blocking your way');
}
});
}
需要澄清的是,Youtube 的 Flash播放器与它播放的 FLV 或 MP4 文件不同。虽然 Flash 播放器可能来自 *.ytimg.com,但流本身来自诸如“oo.preferred.lga15s18.v2.lscache6.c.youtube.com”之类的主机。
如果您的客户阻止了前者,那么您将无法使用 Youtube 获取视频。我的方法是从具有某种自动化功能的页面启动您的视频,以识别您的客户端的 IP 地址范围并加载您自己的jwplayer或flowplayer或类似的副本。
虽然您可以使用 ajax 调用之类的方式在浏览器端执行此操作,但您仍然冒着过于保守的企业 IT 禁用 javascript 的风险。(我已经看到它发生了。这并不漂亮。)将“智能”放在您的服务器上让您可以控制,当然这意味着您需要提前知道限制是什么,以便您可以针对它们进行调整.
在构建页面时,您可以测试与 ytimg.com 的有效连接,并相应地更新您用于显示的 iframe 的源...
<iframe src="<?php
//Use a dummy (but valid) ytimg.com url to check for ytimg availability...
$h = get_headers('http://s.ytimg.com/yt/swfbin/watch_as3-vflZzp2iQ.swf');
//If ytimg.com isn't available...
if (stristr($h[0], '200') == FALSE)
{ ?>
<!--Alt URL-->
<?php
//Otherwise, if ytimg.com is available...
} else { ?>
<!--YouTube URL-->
<?php } ?> "></iframe>
或者,您可以礼貌地建议您的客户不要那么顽固,并允许他们的员工在工作中偶尔在 YouTube 上休息一下。
编辑开个玩笑,我是个白痴。使用上面 camilo_u 的建议。