将图像和视频数据转换为基础64

时间:2016-09-27 06:48:38

标签: html5 html5-video

我试图通过转换为base 64编码值来加密图像和视频src。我参考了https://www.iandevlin.com/blog/2012/09/html5/html5-media-and-data-uri

以下是我的HTML代码:

    <!DOCTYPE html>
<html>
<body>

<video style="width: 640px; height: 360px;" onloadstart="" id="mediaplayer" oncontextmenu="return false;"  controls preload src="" poster=""/>

</body>
<script src="https://code.jquery.com/jquery-3.1.1.js"></script> 
<script>
    // To access player after its creation through jQuery use:
    var videoSrc = 'http://clips.vorwaerts-gmbh.de/VfE_html5.mp4';
    var imageSrc = 'http://www.w3schools.com/images/w3html5.gif';
    var playerObj = $('#mediaplayer')[0];   
    var encodedSrc = btoa(playerObj.src);
    var decodedSrc = atob(encodedSrc);
    var playerObjPoster = playerObj.poster;
    console.log(decodedSrc);
    playerObj.src = "data:video/mp4;base64,"+btoa(videoSrc);
    //playerObj.src = videoSrc;
    playerObj.poster = 'data:image/gif;base64,'+btoa(imageSrc);
    //playerObj.poster = imageSrc;
</script>


</html>

在运行时图像和视频src显示为编码值,但网页上都没有显示图像和视频。

任何建议?

1 个答案:

答案 0 :(得分:1)

它不像这样工作。您必须base64编码文件的实际内容,而不是文件的路径。您使用的链接实际上在示例中显示了这一点:

function getEncodedVideoString($type, $file) { 
   return 'data:video/' . $type . ';base64,' .     base64_encode(file_get_contents($file)); 
}

目前正在发生的事情是浏览器正在尝试将解码后的值(whis是一个URI)用作实际的图像或视频数据,当然它也会失败。