416 (Requested Range Not Satisfiable) Ошибка HTTP при использовании большого двоичного объекта в качестве источника видео

Я создал URL-адрес объекта с большим двоичным объектом

let src = URL.createObjectURL(blob)

и использовал его как атрибут моего видео src, но это вызывает эту ошибку:

GET blob:http://localhost:4200/ab3cc5aa-19cc-41f1-a4b7-55e1fa3ce85c 416 (Requested Range Not Satisfiable)

Есть идеи, как это исправить?


Хотя я думаю, что моя проблема носит общий характер, я использую angular 2, поэтому мой код выглядит так:

let src = this.sanitizer.bypassSecurityTrustUrl(URL.createObjectURL(blob));

и шаблон

<video *ngFor="let videoUrl of _videos" [src]="videoUrl"></video>

Кроме того, я использую angular-cli в качестве своего сервера, и, поскольку это выглядит как ошибка сервера (?), это может быть полезно знать.


person maximedupre    schedule 13.09.2017    source источник


Ответы (1)


Эта ошибка означает, что браузер пытался получить диапазон несуществующего мультимедиа.
Я могу придумать три способа, которые могли бы вызвать его из элемента мультимедиа:

  • используйте параметр #t= timerange со значением вне допустимого диапазона: Но браузеры, похоже, просто игнорируют его в этом случае...

    <video src="https://dl.dropboxusercontent.com/s/bch2j17v6ny4ako/movie720p.mp4#t=90000,100000" autoplay controls></video>

  • Удалите файл во время его чтения (или аннулируйте blobURI большого двоичного объекта до его полной загрузки): Это вызовет ошибку 404, а не 416.

    v.onloadedmetadata = e => {
      URL.revokeObjectURL(v.src);
      v.currentTime = 300;
      };
    fetch('https://dl.dropboxusercontent.com/s/bch2j17v6ny4ako/movie720p.mp4').then(r=>r.blob()).then(b=>{
      v.src = URL.createObjectURL(b);
      })
    <video id="v" autoplay></video>

  • Неверные метаданные о том, что продолжительность медиафайла больше, чем есть на самом деле: Я еще не проверял

  • Передайте пустой BLOB-объект в качестве источника мультимедиа: Возможно, это так

    v.src = URL.createObjectURL(new Blob([], {type:'video/mp4'}));
    <video id="v" autoplay controls></video>

[Примечание] Поскольку мы ищем сетевые ошибки, попробуйте приведенные выше фрагменты с открытой консолью dev-tools, нет возможности отобразить эти ошибки непосредственно в консоли фрагмента.

person Kaiido    schedule 14.09.2017