我们在网站上托管了一个 .mp4 视频。我可以从网站的正式版播放该视频,但无法从网站的测试版播放。
生产网站的 .mp4 MIME 类型为video/mpeg
,这显然是不正确的 - 请参阅这里。而测试服务器的 MIME 类型设置正确————video/mp4
但媒体播放器说它无法播放该文件。(并且更改 MIME 类型以匹配生产网站并不能解决问题。)
这似乎表明 MIME 类型不是问题。
根据此 Microsoft 知识库文章,即使在 Media Player 12 中也不支持 .mp4 文件格式……除非您安装编解码器。但是,如上所述,可以从制作站点播放……并且,如果我右键单击视频并将其下载到我的桌面,我也可以从我的桌面播放它。
这似乎表明编解码器(或缺少编解码器)不是问题。
... 但是我能如果我安装了编解码器包,则播放视频(来自测试网站)。
不用说,我很困惑。有人能解释一下吗?
Windows 7(企业版)x64
媒体播放器 12
Windows Server 2008 R2 / IIS 7.5
答案1
如果有人遇到类似的问题...
事实证明,问题与服务器上的数字证书有关。
在生产机上,证书名称与 DNS 名称匹配。在测试机上,则不匹配。(每个测试服务器都托管多个测试网站。)因此,您会收到证书(“名称不匹配”)警告。但是,在忽略警告后,您仍然可以下载其他类型的静态内容 - 我们有 PDF 和图像(各种格式),它们都运行良好 - 只是 Media Player 不知出于什么原因无法工作。
我们的服务器管理员向我保证,一旦你忽略证书警告,证书名称不匹配就不再是问题了。这对我来说似乎是合理的,也符合我所知道的情况,否则我会在原帖中提到这一点。
但是当我尝试在运行 Fiddler 的情况下访问 MP4 文件时,出现了第二个证书不匹配错误弹出窗口(来自 Fiddler)...然后在我说“忽略此错误并继续”之后,视频确实播放了。
所以我最好的猜测是:
- 由于名称不匹配,媒体播放器下载请求悄悄失败(而不是弹出另一个警告对话框)
- ...导致内容无效
- ... 导致错误消息暗示存在编解码器问题。
在我看来,这里有几件事出了问题。
- 证书不应该是一个问题,因为我已经指示浏览器(碰巧是 IE)忽略“错误”。
- 即使这是一个问题,我也不明白为什么我没有收到另一个证书警告(直到我尝试使用 Fiddler 访问该网站)。
- 如果错误在 WMP 中被正确捕获,我应该会得到一个不同的(不那么误导的)错误消息。
但证书即将到期需要续订...因此在续订时,我们将站点名称添加为证书上的“别名”(主题备用名称,又称“SAN”)。因此,我们不再在测试站点上收到证书名称不匹配警告...并且视频播放正常。