角度基数64视频插值失败($sce)
Angular base64 video interpolation fail ($sce)
我正在尝试使用 Angular 呈现 base64 视频,只是由于提供商不信任源(这是一个简单的数据 URL),它无法插入它$sce它。
Error: [$interpolate:interr] Can't interpolate: {{video}}
Error: [$sce:insecurl] Blocked loading resource from url not allowed by $sceDelegate policy.
URL: data:video/mp4;base64,AAAAGGZ0eXBtcDQyAAAAAGlzb21tcDQyAAAvzm1vb3YAAABsbXZoZ…+VXw5feXy+X3p3xV429Xirw87eVd0svWnUu3by8hW9zS6twXS5ZcbmgmlcKy+3CsI4raC9YA==
到目前为止,我已经尝试过:
$scope.video = $sce.trustAsResourceUrl('base64-string-here');
这不起作用,我相信该方法仍然期望有效的链接而不是数据 URL,因此它不是正确的解决方案。
第二次尝试:
angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) {
// Completely disable SCE.
// Do not use in new projects.
$sceProvider.enabled(false);
});
这当然有效,但随后它会禁用整个提供程序,从而使应用程序容易受到攻击。
我还没有遇到一个有效的解决方案,我正在毫不费力地显示 base64 图像,所以我相信一定有办法解决它,或者至少是一种解决方法。
非常感谢任何帮助!
如果有人正在寻找解决方案,这是我在发布问题 3 个月后输入的内容:
用于视频的 Base64 不是一个好主意,即使您解决了插值问题,应用程序在播放时也会在 Android 上崩溃。
我花了很多时间,所以"如何在应用程序上播放非流媒体视频"的解决方案是:
-
将文件下载到本地手机并从那里播放(如果您使用 angular,请查找 ngCordova 文件传输插件)
-
对于安卓:HTML5视频标签将不起作用。原因介于权限问题和Android不允许在HTML上播放本地视频之间。使用安卓视频播放器,例如此媒体播放器
对于iOS:HTML5视频标签非常适合播放本地视频。它将其转换为本机。
希望有一天它能帮助到某人。
相关文章:
- 当json解析空响应时,Whatwg-Fetch失败,我该如何防止它
- JsFiddle在分叉后描述失败
- 为什么不'当单元测试出现解析错误时,我的因果报应测试会失败
- 当一些承诺失败时,如何继续使用$q.all()
- 失败:等待Protractor与页面同步时出错:“”;在窗口上找不到角度”;
- 在Jquery中单击传播失败
- 网页上失败的javascript会导致所有其他脚本失败
- 带有对象解析的响应javascript ajax失败
- 一台特定计算机的Ajax请求数据未定义/失败
- Nodejs服务器:加载资源失败:服务器的响应状态为404(未找到)
- jQuery.getJSON失败,语法错误
- ng disabled在放入多个表达式时失败
- Jasmine单元测试在监视服务方法时失败
- jQuery分页下一页和上一页按钮在点击零或超过最后一页后失败
- 在iframe的情况下,jQuery html()将失败
- 在我的情况下,使用带有变量失败的 jquery 选择器
- CSS中的转换似乎失败了,原因是什么
- 在数组中插入对象失败
- Backbone fetch中的Ajax在fetch调用退出后完成,因此fetch调用中没有成功/失败事件
- 角度基数64视频插值失败($sce)