createObjectURL: Ошибка типа в Safari при использовании Blob - PullRequest
1 голос
/ 24 января 2020

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

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

. Ошибка в этой указанной строке c:

Необработанное отклонение обещания: Ошибка типа: Ошибка типа

-

(я уже проверяю использование 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 Ответ

0 голосов
/ 27 января 2020

Глядя на документ видео. js -запись, 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;
    }
}
...