gpt4 book ai didi

asp.net - 使用 HttpHandler 和 IIS 5.1 在 iPhone 上播放 Quicktime 视频

转载 作者:行者123 更新时间:2023-11-28 21:40:47 25 4
gpt4 key购买 nike

我正在尝试使用 HttpHandler 从 ASP.NET Web 应用程序将 QuickTime 视频流式传输到 iPhone。从 IIS 5.1 (Windows XP) 托管 Web 应用程序时,视频播放器打开,然后显示错误“服务器配置不正确”。但是,当使用 IIS 7.5 (Windows 7) 时,视频播放正常。

生产环境运行的是IIS 6.0,也有同样的问题,通过Mobile Safari在iPhone上播放视频报错如上。

我检查了 Http header ,它们在两个服务器之间似乎几乎相同(除了少数几个,例如 Server header ,它们显然不同),除了它们以不同的顺序出现,但我怀疑这是导致问题的原因。

根据 Google 网上论坛上的 this thread,添加“Accept-Ranges: bytes” header 会有所帮助,尽管这对我们没有影响。我还添加了 ETag header ,但没有任何运气。

实际负责发送文件的代码如下所示:

Context.Response.Buffer = true;
Context.Response.ContentType = "video/x-m4v";

Context.Response.AppendHeader("Content-Disposition", "filename=\"Video.m4v\"");
Context.Response.AppendHeader("Content-Length", "23456789");

Context.Response.AppendHeader("Accept-Ranges", "bytes");
Context.Response.AppendHeader("ETag", GetETag(path));

Context.Response.TransmitFile(path);

上面传输文件的代码似乎运行正常,视频文件在所有桌面浏览器中以及在 Windows 7 上从 IIS 7.5 托管时都能正常播放。只有在尝试使用移动设备在 iPhone 上播放视频文件时,问题才会出现Safari 将上述代码与托管在 IIS 5.1 或 IIS 6.0 上的 ASP.NET Web 应用程序结合使用。

有没有其他人经历过这样的事情并且对我可以做些什么来使它工作有任何想法?

最佳答案

经过一番搜索,我找到了这篇文章 Range-Specific Requests in ASP.NET这描述了我遇到的确切问题。从该站点实现 RangeRequestHandlerBase 类(进行一些小的修改以适应我们现有的项目结构)似乎已经解决了问题,并且视频播放现在可以从 IIS5/6 正常运行。

@Eric - 我对你的回答投了赞成票,因为你的评论是对正确方向的插入。仅添加“Accept-Ranges” header 是不够的(尽管在 IIS7 中工作),并且需要修改 http 处理程序以处理范围请求并确保发送正确的数据。

关于asp.net - 使用 HttpHandler 和 IIS 5.1 在 iPhone 上播放 Quicktime 视频,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1635209/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com