2017-08-07 64 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,我需要在