HTML5 Video не работает с тегом AngularJS ng-src

AngularJS ng-src не работает с элементом HTML5 Video в этой скрипте: http://jsfiddle.net/FsHah/5/

Глядя на элемент видео, тэг src заполняется правильным src uri, но видео не воспроизводится.

Разве это не поддерживается в AngularJS , каково обходное решение для этого?

Просто создайте фильтр:

 app.filter("trustUrl", ['$sce', function ($sce) { return function (recordingUrl) { return $sce.trustAsResourceUrl(recordingUrl); }; }]); 

В файле просмотра:

  

В настоящее время это похоже на ошибку в AngularJS: https://github.com/angular/angular.js/issues/1352

Замена источника с помощью

Чтобы воспроизвести видео, я просто использовал следующий метод: кнопка, называемая воспроизведением, и в ng-клике кнопки вы должны записать это

  var myVideo = document.getElementsByTagName('video')[0]; myVideo.src = vidURL; myVideo.load(); myVideo.play(); 

для воспроизведения видео в индексе использования ng-repeat. Надеюсь, поможет.

Мой ответ несколько лет спустя, но это для тех, кто все еще ищет решение. Я была такая же проблема. Я помнил, что Youtube отображает свои встроенные видео с помощью другого тега – iframe. Я применил свойства, которые хотел, и это сработало.

Для всех, кто знаком с AngularJS, {{video}} – переменная $ scope.video в элементе управления для этой страницы, которая имеет путь к видео.

Удалите тег источника из тега видео и попробуйте это.

  

и в вашем угловом приложении создайте такой фильтр

  app.filter("trustUrl", function($sce) { return function(Url) { console.log(Url); return $sce.trustAsResourceUrl(Url); }; }); 

Я пробовал с помощью ajax-звонка, и он вообще не работал. в то время как я вижу, что $ scope.src имеет правильное значение после вызова ajax, ng-src не получает обновление.

Я пробовал, $ timeout с $ apply и все еще ничего не делал. Кто-нибудь может понять эту проблему?

обходной путь

в controllerе

 $scope.mp3 = "http://download.jw.org/audio.mp3" $scope.$watch('mp3', function() { $("audio").attr("src",$scope.mp3) }); 

HTML:

  

Это предосторожность по умолчанию в AngularJS. См. Подробности: https://docs.angularjs.org/api/ng/service/ $ sce

Чтобы отключить «Строгое контекстное экранирование», вы можете определить это в файле app.js

 angular.module('myAppWithSceDisabledmyApp', []).config(function($sceProvider) { // Completely disable SCE. For demonstration purposes only! // Do not use in new projects. $sceProvider.enabled(false); }); 

Однако они не рекомендуют. Но вы можете использовать для подобного controllerа:

 var myAppControllers = angular.module('myAppControllers', []); ScorpAppControllers.controller('HomeCtrl', ['$scope', 'Home', function ($scope, Home) { $scope.Home = Home.query(); }]).config(function($sceProvider) { $sceProvider.enabled(false); }); 

Вы можете использовать модуль ng-media .

 angular.module('app', ['media']) .controller('mainCtrl', function($scope) { $scope.videoSources = []; $scope.loadVideos = function() { $scope.videoSources.push('http://www.w3schools.com/html/mov_bbb.mp4'); $scope.videoSources.push('http://www.w3schools.com/html/mov_bbb.webm'); }; }); 
    

Просто используйте vanilla js (обычный javascript), чтобы сделать эту работу. Если вы слушаете такие события, как onended, вы можете пересмотреть использование $ scope. $ Apply ().

Мой пример:

 document.getElementById('video').src = $scope.videos[$scope.videoindex]; 

Я думаю, что происходит то, что Angular заполняет атрибуты src после того, как и элементы были добавлены на страницу, поэтому браузер видит элементы со сломанными URL-адресами. Я работал вокруг него, используя ng-if :

   

Это заставляет элемент привязываться к существованию foo , который является переменной области, заполняемой через вызов AJAX.

  • Обнаруживать, когда видео HTML5 заканчивается
  • Как проверить, может ли браузер воспроизводить mp4 с помощью тега html5?
  • Прямая трансляция HTML5
  • Дождитесь загрузки видео в формате HTML5
  • chrome может воспроизводить видео html5 mp4, но html5test сказал, что хром не поддерживает видеокодек mp4
  • iPad Safari mobile, похоже, игнорирует положение z-индексации для видеоэлементов html5
  • масштаб HTML5 Видео и разбить соотношение сторон для заполнения всего сайта
  • Как играть в видео html5 в браузерах IE8
  • Автовоспроизведение видео HTML5 в мобильном браузере
  • Давайте будем гением компьютера.