HTML5 и PHP: Воспроизведение видеофайла в формате base64

0

Я пытаюсь воспроизвести базовый 64-битный MP4, используя URI данных HTML5. По какой-то причине видео не будет воспроизводиться. Этот подход отлично подходит для файлов изображений (jpeg и png), однако по некоторым причинам он не будет работать для медиафайлов.

На стороне клиента у меня есть:

document.getElementById("video_holder").src = "data:video/mp4;base64,"  + xmlhttp.responseText;

HTML что-то вроде:

<video controls> <source type="video/webm" src="" id="video_holder" />...

Я извлекаю файл, используя PHP и base64, кодируя его перед отправкой его пользователю:

$file = file_get_contents($path);
echo chunk_split(base64_encode(trim($file)));

Я также пробовал:

$file = file_get_contents($path);
echo base64_encode(trim($file));

Какие-либо предложения?

Теги:
html5-video

1 ответ

1
Лучший ответ

Я бы сказал, что вам сначала нужно декодировать в JavaScript ваш файл Base 64. Это объясняется здесь, но некоторые браузеры не поддерживают его.

Затем я создавал объект Blob из декодированного файла, а затем создавал objectURL из blob и нажимал этот объектURL в качестве src видеотега HTML5.

Я еще этого не делал, но именно так я и сделал бы это, если бы пришлось. Почему вам нужно, чтобы base64 кодировал ваш видеофайл в первую очередь? Это может создать накладные расходы и увеличить время обработки. Если вам нужно шифрование, решение DRM будет лучше.

  • 0
    спасибо, попробую. Есть ли способ использовать URI данных без кодирования файла в base64? Я попытался не кодировать файл, а затем просто с помощью: document.getElementById ("video_holder"). Src = "data: video / mp4;" + xmlhttp.responseText;
  • 1
    Вы должны быть в состоянии: var videoBlob = new Blob (videoData, {type: 'video / mp4'}); и поместите BLOB-объект в objectURL, а objectURL в источник тега video. Больше информации

Ещё вопросы

Сообщество Overcoder
Наверх
Меню