我正在使用一个标准的视频标签,比如so<video src="test.mp4" controls></video>
。我在sharepoint 2013环境中使用ntlm身份验证,基本身份验证作为回退。视频标签在所有支持HTML5视频的桌面浏览器上都可以正常工作。
在移动浏览器上,一旦我向站点进行身份验证,视频标记就会失败。视频只是iis 8提供的静态公共内容,不是sharepoint的一部分。到目前为止唯一的例外是android上的firefox,它可以正常工作。我删除了ntlm auth并切换到basic auth,但结果相同。
我已经测试过了:
iPad iOS 8-Safari、Chrome
安卓K&L-Chrome、火狐
Windows Phone 8.1-IE
只要我没有通过视频所在主机的身份验证,视频就可以工作。因此,如果我在host1上,标记指向host2上的视频,则该视频将工作,直到我向host2进行身份验证。
如果我正在进行基于表单的身份验证,视频也可以正常工作。在我的例子中,我使用的是微软tmg。
我已经用android chrome做到了这一点:它将首先发送一个0-1字节的范围请求,chrome是用户代理。未经验证时,它将要求以StageReflight作为用户代理的视频的其余部分。经过身份验证后,它不会发送任何内容,只是无法播放视频。发生这种情况时,adb logcat返回:
e/StageFrightMetadataRetriever(183):无法为“截取的视频URL”实例化提取器。
E/MediaResourceGetter(11682):配置数据源时出错
E/MediaResourceGetter(11682):java.lang.RuntimeException:SetDataSource失败:状态=0x8000000
e/mediaresourcegetter(11682):在android.media.mediametataretriever上。
E/MediaResourceGetter(11682):位于android.media.mediaMetadataRetriever.setdatasource(mediaMetadataRetriever.java:105)
e/mediaresourcegetter(11682):位于org.chromium.content.browser.mediaresourcegetter.configure(mediaresourcegetter.java:417)
e/mediaresourcegetter(11682):位于org.chromium.content.browser.mediaresourcegetter.configure(mediaresourcegetter.java:259)
e/mediaresourcegetter(11682):位于org.chromium.content.browser.mediaresourcegetter.extract(mediaresourcegetter.java:153)
e/mediaresourcegetter(11682):位于org.chromium.content.browser.mediaresourcegetter.extractMediaMetadata(mediaresourcegetter.java:125)
E/MediaResourceGetter(11682):无法配置元数据提取程序
i/mediafocuscontrol(744):来自android.media.audiomanager@2ff8d914org.chromium.media.mediaPlayerListener@23b9af5d的audiofocus requestaudiofocus()
d/mediaplayer(11682):无法在客户端打开文件,正在尝试服务器端
i/awesomeplayer(183):setdatasource_l()
我的第一个想法是这是一个chrome/safari的问题,但是ie的行为方式相同,这就不太可能了。这是故意的吗?想知道发生什么事的任何方向都是值得赞赏的。
最佳答案
试试这个
我有一个与您的问题相同的问题(e/stageFrightMetadataRetriever(183):无法为“截取的视频URL”实例化提取器。在做了大量工作之后,终于找到了纠正的方法。
在项目清单中添加此行
<uses-permission android:name="android.permission.INTERNET" />
错误
错误后