经过身份验证后,HTML5视频无法在移动浏览器上运行

时间:2015-02-03 20:57:20

标签: html5 video mobile

我正在使用像<video src="test.mp4" controls>​​</video>这样的标准视频标签。我在具有NTLM身份验证的SharePoint 2013环境中使用基本身份验证作为后备。视频标记在支持HTML5视频的所有桌面浏览器上都可以正常运行。

在移动浏览器上,一旦我对网站进行身份验证,视频标记就会失败。该视频只是由IIS 8提供的静态公共内容,不属于SharePoint。到目前为止唯一的例外是Android上的Firefox,它没有问题。我已经删除了NTLM身份验证并仅使用相同的结果切换到基本身份验证。

到目前为止我已经测试过:

  • iPad iOS 8 - Safari,Chrome
  • Android K&amp; L - Chrome,Firefox
  • Windows Phone 8.1 - IE

只要我未对视频所在的主机进行身份验证,视频就会正常工作。因此,如果我在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的行为方式相同,不太可能。这是设计的吗?任何确定正在发生的事情的方向都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

试试这个

我有一个与你的问题相同的问题(E / StagefrightMetadataRetriever(183):无法为'snipped-video-url'实例化一个提取器。)。经过大量的工作后,终于找到了纠正它的方法。

在项目清单中添加此行

<uses-permission android:name="android.permission.INTERNET" />

错误 Error

错误之后 After error