Элемент Cordova & iOS - HTML5 <video>не загружает удаленный источник с параметрами запроса - PullRequest
0 голосов
/ 05 мая 2020

Контекст: мне нужен доступ к защищенным носителям за моим сервером. Поскольку я не могу передавать заголовки в тег <video>, доступ можно получить, запросив одноразовый токен доступа к файлу, который затем добавляется к медиа-объекту в качестве параметра запроса. Моя реализация выглядит так:

async loadMedia(URI) {
    //Extracting MediaObject id & filename from URI
    let [id, filename] = URI.split("/")[2].split("-");

    //Obtaining token from MediaObject
    let { data } = await Api.get(`${MEDIA_ENDPOINT}/${id}`, {
      properties: ["token"]
    });

    //Obtaining MimeType from Filename
    let type = lookup(filename);

    return {
      src: `${process.env.HOSTURL}${URI}?token=${data.token}`,
      type
    };
}

И компонент выглядит так:

<video controls width="100%">
    <source src="${src}" type="${type}">
</video>

Он работает на веб-устройствах и Android устройствах, но на iOS он просто показывает пустой экран управления:

Blank Video Screen on iOS

Тот же метод повторно используется для изображений, и они, кажется, отлично работают в iOS, но видео доставляют мне проблемы. Я что-то упустил?

Возвращенный src выглядит примерно так:

https://example.com/media/123-5ea3ba34b6ac1907212752.mp4?token=103416a1b294e1db83ee3175993cb79c

Я также пробовал использовать <video src="${src}" /> и фреймы, без удачи.

Временным решением может быть загрузка всего носителя через XHR и установка base64 как sr c, но это будет проблемой для больших медиафайлов и медленных rnet соединений.

Я осмотрелся и не смог найти видеопроигрыватель HTTP, который может передавать заголовки запросов.

Если это важно, я использую VueJS и загружаю медиа и другой контент через анонимный Компонент.

Любые мысли приветствуются :)

1 Ответ

0 голосов
/ 01 июня 2020

можете ли вы отправить конфигурацию. xml подробности для ios Я могу разобраться в проблеме.

...