Javascript HTML5和PHP:播放Base64编码的视频文件

Javascript HTML5和PHP:播放Base64编码的视频文件,javascript,php,html,html5-video,Javascript,Php,Html,Html5 Video,我正在尝试使用HTML5数据URI播放一个base 64编码的MP4。由于某种原因,视频无法播放。该方法适用于图像文件(jpeg和png),但由于某些原因,它不适用于媒体文件 在客户端,我有: document.getElementById("video_holder").src = "data:video/mp4;base64," + xmlhttp.responseText; HTML类似于: <video controls> <source type="video/w

我正在尝试使用HTML5数据URI播放一个base 64编码的MP4。由于某种原因,视频无法播放。该方法适用于图像文件(jpeg和png),但由于某些原因,它不适用于媒体文件

在客户端,我有:

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

<video controls> <source type="video/webm" src="" id="video_holder" />...
我还尝试:

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

有什么建议吗?

我想说,您首先需要在JavaScript中解码Base 64文件。对此进行了解释,但某些浏览器不支持它

然后,我将从解码文件创建一个,然后从blob创建一个,并将这个objectURL作为HTML5视频标记的src推送


我还没有做到这一点,但这是我会这样做,如果我不得不这样做。为什么首先需要对视频文件进行base64编码?这会产生开销并增加处理时间。如果您需要加密,DRM解决方案会更好

仅仅因为您可以提供一个数据uri并不意味着后端播放器会接受这样的东西…谢谢,我会尝试。是否有任何方法可以使用数据URI而不在base64中对文件进行编码?我尝试不编码文件,然后只使用:document.getElementById(“video_holder”).src=“data:video/mp4;”+xmlhttp.responseText;您应该能够:var videoBlob=newblob(videoData,{type:'video/mp4'});并将blob推送到objectURL,将objectURL推送到视频标记的src。
$file = file_get_contents($path);
echo base64_encode(trim($file));