2017-08-07 61 views
0

所以我使用Angular和video.js库。我有一个链接到保存为变量的视频和既不SRC也不ngSrc属性不与角的表达式(例如=“{{SRC}}”工作角度表达式不适用于video.js库

例:

<div class="section-video" > 
      <video class="video-js vjs-default-skin" width="640" height="380" controls 
        data-setup='{ "aspectRatio":"640:380", "playbackRates": [1, 1.5, 2] }'> 
       <source ng-src="{{item.video}}" type='video/mp4'> 
      </video> 
     </div> 

jquery的:

$(function(){ 
     if (document.querySelector(".video-js")) { 
      var player = videojs(document.querySelector(".video-js")); 
     } 
    }); 

如果我在SRC使用一个实际的链接它工作正常,如

<source src="http://techslides.com/demos/sample-videos/small.mp4" type='video/mp4'> 

我得到的错误是

VIDEOJS: ERROR: (CODE:4 MEDIA_ERR_SRC_NOT_SUPPORTED) No compatible source was found for this media.

任何人有任何想法我该如何解决这个问题?谢谢。

回答

1

这为我工作:

HTML:

<div class="section-video" > 
    <video class="video-js vjs-default-skin" width="640" height="380" controls data-setup='{ "aspectRatio":"640:380", "playbackRates": [1, 1.5, 2] }'> 
    <source ng-src="{{trustSrc(item.video)}}" type='video/mp4'> 
    </video> 
</div> 

的JavaScript(不要忘记注入$ SCE到控制器中):

$scope.trustSrc = function(src) { 
    return $sce.trustAsResourceUrl(src); 
}; 

UPDATE:

做完s后青梅的研究,似乎有一种替代解决方案,以挖掘,以及这将是这个样子:

HTML:

<div class="section-video" > 
    <video class="video-js vjs-default-skin" width="640" height="380" controls data-setup='{ "aspectRatio":"640:380", "playbackRates": [1, 1.5, 2] }'> 
    <source ng-src="{{item.video}}" type='video/mp4' html5vfix> 
    </video> 
</div> 

的JavaScript:

app.directive('html5vfix', function() { 
    return { 
     restrict: 'A', 
     link: function(scope, element, attr) { 
      attr.$set('src', attr.vsrc); 
     } 
    } 
}); 

来源:HERE

+0

不幸这些工作都没有..看起来像videojs根本不适用于ngSrc(当我用它与src协作的链接,它不再工作)。并且应用程序只是不想接受任何常规src属性中的表达式... –

+0

您可以上传代码的[Plunkr](https://plnkr.co/)吗?我正在使用上述解决方案的项目中使用videojs与ng-src。 –

+0

这就是我所得到的。在item.video中有一个文件名,比如“\ file \ intro \ 1501837600116.mp4”,它本身很好,但在通过表达式评估时不会。我想如果我在中使用ng-src,我需要在