我试图通过转换为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显示为编码值,但网页上都没有显示图像和视频。
任何建议?
答案 0 :(得分:1)
它不像这样工作。您必须base64编码文件的实际内容,而不是文件的路径。您使用的链接实际上在示例中显示了这一点:
function getEncodedVideoString($type, $file) {
return 'data:video/' . $type . ';base64,' . base64_encode(file_get_contents($file));
}
目前正在发生的事情是浏览器正在尝试将解码后的值(whis是一个URI)用作实际的图像或视频数据,当然它也会失败。