2012-07-21 119 views
2

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

我试图建立视频连接(使用JWPlayer,但没有得到那点), 的ASHX处理程序我在开始时被简单地传输文件使用HTTP标头下载, :content-disposition: attachment; filename=example.mp4

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

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

我试图发出正确Content-Type & Content-Length,使用Accept-Ranges & Content-Range标头,甚至试图模仿两相请求时第一个不具有在Acceptvideo/mp4*/*(我也尝试只发送1个字节在第一个响应/在两个响应上发送整个视频)。 (当我说所有这些值是“正确的”,我的意思是它们与我在Fiddler中捕获的工作响应相同...)

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

回答

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> 

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