如何从视频创建 Blob URL 并分配给视频源?



我在网页上播放视频。但我希望最终用户不应该从浏览器下载视频。我想阻止下载视频。

我的问题是我们可以在PHP中创建一个缓冲数组吗?并使用Javascript从缓冲数组创建Blob URL。然后,我可以将 Blob URL 分配给视频标记。

视频不在同一网域中。它在 CDN 上。

可能吗?

你可以做这样的事情来从php获取一个字节块,

$CHUNK_SIZE = 1024*1024; //buffer size in bytes
$handle = fopen($filename, 'rb');
$start = $_GET['position'];
//point to last serve position
fseek($handle, $start);
//read and send byte chunk
$buffer = fread($handle, CHUNK_SIZE);
echo $buffer;
ob_flush();
flush();

在javascript大小上,使用xhr(ajax(调用此php脚本,并将字节数组推送到视频元素流。

//using media source api. Check for browser compatibility
var mediaSource = new MediaSource();
mediaSource.addEventListener('sourceopen', mediaSourceOpen);
var mimeType = 'video/mp4';
var sourceBuffer = mediaSource.addSourceBuffer(mimeType);
//get the vide element and attach source
var player = document.getElementById('player');
player.src = window.URL.createObjectURL(mediaSource);
var start = 0;
function mediaSourceOpen() {
fetchData();
}
function fetchData(){
fetch('URL_TO_PHP_SCRIPT?start=' + start)
.then(response => {
return response.arrayBuffer()
}).then(buffer => {
if(buffer.byteLength > 0)
start += buffer.byteLength;
sourceBuffer.appendBuffer(buffer);
fetchData();
}
});
}

代码不包括错误处理。只是主要场景。将其视为伪代码并执行您的实现。我也会尝试发布一个工作示例

最新更新