У меня есть приложение для вставки видео (mp4, HTML5).Подвох в том, что эти видео могут быть расположены в любом месте на сервере, где размещается мое приложение, а не только в каталоге приложения.Если бы это было так, мой код выглядел бы примерно так:
<video preload="auto" controls>
<source src="assets/media/video.mp4" type="video/mp4">
</video>
В моей ситуации мои видео могут жить в любом месте, например C: /Users/media/video.mp4, чтовместо этого я делаю что-то вроде этого:
<video preload="auto" controls>
<source src="C:/Users/media/video.mp4" type="video/mp4">
</video>
Проблема, с которой я сталкиваюсь, заключается в том, что Chrome (и другие браузеры, скорее всего) явно блокирует такой внешний доступ.Мой обходной путь для этого - загрузка видео на уровне сервера (сервер Tomcat), преобразование их в байтовый массив и передача его в мой HTML.Мой код Angular очищает байтовый массив и затем передает его в мой HTML.
Angular:
this.http.get(url).subscribe(data => {
this.mediaSrc = this.sanitizer.bypassSecurityTrustResourceUrl(data);
});
HTML:
<video preload="auto" controls width="75%" height="50%">
<source [src]="mediaSrc" type="video/mp4">
</video>
Эта стратегия иногда работает,Тем не менее, очень часто мое видео перестает работать, и не отображает в Chrome.Это случается только иногда и кажется совершенно случайным.Почти как если бы chrome не хватало памяти и / или блокировало видео, если оно ему не нравится.Однако загрузка страницы в новую вкладку полностью решает проблему.
Мой вопрос: есть ли лучший способ доставки видео с уровня сервера или есть что-то, что я могу исправить в своей текущей реализации, чтобы я нене сталкивался с проблемой, упомянутой выше?Я бы хотел больше рассказать о своей проблеме, но я действительно не могу понять, что вызывает эту проблему случайно, и только на определенной вкладке данного браузера.