【问题标题】:Play a video file from a Virtual URL从虚拟 URL 播放视频文件
【发布时间】:2012-07-21 16:27:06
【问题描述】:

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

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

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

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

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

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

【问题讨论】:

    标签: asp.net video iis-7 http-headers ashx


    【解决方案1】:

    原来主要问题在于 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>
    

    希望这对某人有所帮助...

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-04
      • 1970-01-01
      • 1970-01-01
      • 2015-03-09
      • 2019-02-22
      • 2019-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多