【问题标题】:HTML5 and PHP: Play base 64 encoded video fileHTML5 和 PHP:播放 base 64 编码的视频文件
【发布时间】:2014-11-05 20:19:16
【问题描述】:

我正在尝试使用 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" />...

我正在使用 PHP 获取文件并在将其发送给用户之前对其进行 base64 编码:

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

我也试过了:

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

有什么建议吗?

【问题讨论】:

  • 仅仅因为您可以提供数据 uri 并不意味着后端播放器会接受这样的事情...

标签: javascript php html html5-video


【解决方案1】:

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

然后我会从解码的文件创建一个Blob object,然后从blob创建一个objectURL,并将这个objectURL作为HTML5视频标签的src。

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

【讨论】:

  • 谢谢,会试试的。有什么方法可以使用数据 URI 而不用 base64 编码文件?我尝试不对文件进行编码,然后只使用: document.getElementById("video_holder").src = "data:video/mp4;" + xmlhttp.responseText;
  • 你应该能够: var videoBlob = new Blob(videoData, {type : 'video/mp4'});并将 blob 推送到 objectURL 并将 objectURL 推送到 video 标签的 src。 More info
猜你喜欢
  • 1970-01-01
  • 2016-08-24
  • 1970-01-01
  • 2013-05-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多