Я пытаюсь воспроизвести базовый 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));
Какие-либо предложения?
Я бы сказал, что вам сначала нужно декодировать в JavaScript ваш файл Base 64. Это объясняется здесь, но некоторые браузеры не поддерживают его.
Затем я создавал объект Blob из декодированного файла, а затем создавал objectURL из blob и нажимал этот объектURL в качестве src видеотега HTML5.
Я еще этого не делал, но именно так я и сделал бы это, если бы пришлось. Почему вам нужно, чтобы base64 кодировал ваш видеофайл в первую очередь? Это может создать накладные расходы и увеличить время обработки. Если вам нужно шифрование, решение DRM будет лучше.