2

我很难尝试从网站上的虚拟 URL 播放视频。我无法直接链接到视频,因为实际文件不在网络可访问根目录下的任何位置。而且,虚拟路径实际上是一个 HTTP 处理程序(ASP.Net “ASHX”),用于额外的权限检查等。

我试图设置视频访问(使用 JWPlayer,但没有达到那一点),我一开始的 ASHX 处理程序只是使用 HTTP Header 将文件作为下载传输:content-disposition: attachment; filename=example.mp4

当我比较浏览器(Chrome 20.0.1132.57)在浏览直接链接 .mp4 文件和虚拟链接之间的行为时 - 我注意到直接链接会在一个小型嵌入式视频播放器中打开,而只有虚拟链接下载文件。

我已经尝试(但失败了)捕获 HTTP 标头的差异(使用 Fiddler)并为视频编写了一个特殊的 ASHX - 这将发送与 IIS 完全相同的响应(没有任何特定的 mp4 配置,甚至没有 mime 类型)。我似乎无法像从直接链接那样从虚拟 url 打开视频,即使我模拟所有标题(至少,据我所知)。

我尝试Content-Type & Content-Length使用Accept-Ranges & Content-Range标头发送正确的,甚至尝试在第一个没有video/mp4*/*Accept标头中模拟两阶段请求(我还尝试在第一个响应中仅发送 1 个字节/发送整个视频两个回答)。(当我说所有这些值都是“正确的”时,我的意思是它们与我在 Fiddler 中捕获的工作响应相同......)

请,有人可以解释是什么触发浏览器将文件视为视频?我需要指定/省略哪些标题?(当然除了省略content-disposition: attachment...)

4

1 回答 1

2

原来主要问题与 JWPlayer 的嵌入代码有关。

当指向视频的 URL 不包含可识别的视频扩展名时 - 播放器不知道该做什么 - 所以它需要一个明确的定义。

这是 JWPlayer 的功能嵌入代码:(请注意 的显式规范'provider':'video'

<video id="jwplayer_placeholder"
       src="http://localhost/mysite/SecuredFile.ashx?File=1234"
       height="270"
       width="480">
</video>
<script type="text/javascript">


  jwplayer("jwplayer_placeholder").setup(                                                       
  {
     modes:
     [
         { type: "flash", src: http://localhost/mysite/jwplayer/player.swf" },
         { type: 'html5' },
         { type: 'download' }
     ],
     'provider':'video'
   });
</script>

希望这可以帮助某人...

于 2012-11-08T16:07:51.943 回答