我正在使用像<video src="test.mp4" controls></video>
这样的标准视频标签。我在具有NTLM身份验证的SharePoint 2013环境中使用基本身份验证作为后备。视频标记在支持HTML5视频的所有桌面浏览器上都可以正常运行。
在移动浏览器上,一旦我对网站进行身份验证,视频标记就会失败。该视频只是由IIS 8提供的静态公共内容,不属于SharePoint。到目前为止唯一的例外是Android上的Firefox,它没有问题。我已经删除了NTLM身份验证并仅使用相同的结果切换到基本身份验证。
到目前为止我已经测试过:
只要我未对视频所在的主机进行身份验证,视频就会正常工作。因此,如果我在host1上,标记指向host2上的视频,则视频将一直有效,直到我对host2进行身份验证。
如果我正在进行基于表单的身份验证,视频也会正常运行。就我而言,我使用的是Microsoft TMG。
我已经使用Android Chrome获得了这一点:它将首先发送一个范围请求,其中包含0-1字节的预期,Chrome作为用户代理。未经身份验证时,它将使用stagefright作为用户代理请求视频的其余部分。经过身份验证后,它不会发送任何内容,只是无法播放视频。发生这种情况时,ADB logcat会返回此信息:
E / StagefrightMetadataRetriever(183):无法为&#39; snipped-video-url&#39;实例化一个提取器。E / MediaResourceGetter(11682):配置数据源时出错
E / MediaResourceGetter(11682):java.lang.RuntimeException:setDataSource failed:status = 0x80000000
E / MediaResourceGetter(11682):在android.media.MediaMetadataRetriever._setDataSource(原生方法)
E / MediaResourceGetter(11682):在android.media.MediaMetadataRetriever.setDataSource(MediaMetadataRetriever.java:105)E / MediaResourceGetter(11682):at org.chromium.content.browser.MediaResourceGetter.configure(MediaResourceGetter.java:417)
E / MediaResourceGetter(11682):at org.chromium.content.browser.MediaResourceGetter.configure(MediaResourceGetter.java:259)
E / MediaResourceGetter(11682):at org.chromium.content.browser.MediaResourceGetter.extract(MediaResourceGetter.java:153)E / MediaResourceGetter(11682):at org.chromium.content.browser.MediaResourceGetter.extractMediaMetadata(MediaResourceGetter.java:125)
E / MediaResourceGetter(11682):无法配置元数据提取器
I / MediaFocusControl(744):来自android.media.AudioManager的AudioFocus requestAudioFocus()@ 2ff8d914org.chromium.media.MediaPlayerListener @ 23b9af5d
D / MediaPlayer(11682):无法在客户端打开文件,尝试服务器端
I / AwesomePlayer(183):setDataSource_l()
我的第一个想法是Chrome / Safari问题,但IE的行为方式相同,不太可能。这是设计的吗?任何确定正在发生的事情的方向都将受到赞赏。