簡體   English   中英

如何從視頻創建 Blob URL 並分配給視頻源?

[英]How to create Blob URL from video and assign to video source?

我正在 web 頁面上顯示視頻。 但我希望最終用戶不要從瀏覽器下載視頻。 我想阻止下載視頻。

我的問題是我們可以在 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 腳本並將字節數組推送到視頻元素 stream。

//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();
     }
  });
}

代碼不包括錯誤處理。 只是主要場景。 將其視為偽代碼並執行您的實現。 我也會嘗試發布一個工作樣本

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM