createObjectURL: введите ошибку в Safari при использовании Blob

В HTML <video>объект, я не могу воспроизвести видео, записанное библиотекой video.js-record. Я проверил Blob, возвращенный вplayer.recordedData переменную и хотел назначить ее объекту, как указано в примере из документации:

recordedVideo.src = createObjURL(this.player.recordedData);

Он не работает с ошибкой в ​​этой конкретной строке:

Отклонение необработанного обещания: TypeError: Type error

-

(Я уже проверяю использование URL против webkitURL используя эту функцию:

function createObjURL ( file ) {
    if ( window.webkitURL ) {
        return window.webkitURL.createObjectURL( file );
    } else if ( window.URL && window.URL.createObjectURL ) {
        return window.URL.createObjectURL( file );
    } else {
        return null;
    }
}

и, похоже, использует правильную версию.)

1 ответ

Глядя на документ video.js-record, player.recordedData не является Blob (что вам нужно передать createObjectUrl), но массив сегментов blob - это будет соответствовать TypeError.

Следующее изменение должно помочь:

function createObjURL ( blobPieces ) {
    var blob = new Blob(blobPieces, { type: 'video/webm' });
    if ( window.webkitURL ) {
        return window.webkitURL.createObjectURL( blob );
    } else if ( window.URL && window.URL.createObjectURL ) {
        return window.URL.createObjectURL( blob );
    } else {
        return null;
    }
}
Другие вопросы по тегам