0
我可以用網絡攝像頭錄製視頻,在瀏覽器上播放結果blob並將其下載到本地機器上,但是當我將文件保存到服務器時,它是無法讀取的。我已經嘗試將塊發送到服務器並將它們連接在一起,並且還發送了整個blob,但結果是相同的(不可讀的視頻)。 我首先用FileReader()讀取blob,它提供了base64結果,然後將其發送到服務器,在那裏我base64_decode()它並將其保存到文件夾。如何將使用MediaRecorder API錄製的視頻保存到php服務器?
JS代碼:
var reader = new FileReader();
reader.readAsDataURL(chunks[index]);
reader.onload = function() {
upload(reader.result, function(response){
if(response.success){
// upload next chunk
}
});
};
在服務器上:
$json = json_decode($request->getContent(), true);
$chunk = base64_decode($json["chunk"]);
// all chunks get
file_put_contents("/uploadDirecotry/chunk".$json['index'].".webm", $json["chunk"]);
當所有塊被上傳:
for ($i = 0; $i < $nrOfChunks; $i++) {
$file = fopen("/uploadDirectory/chunk".$i.".webm", 'rb');
$buff = fread($file, 1024000);
fclose($file);
$final = fopen("/processed/".$video->getFileName()."-full.webm", 'ab');
$write = fwrite($final, $buff);
fclose($final);
unlink("/uploadDirectory/chunk".$i.".webm");
}
我不知道我做錯了。我已經嘗試了一個多星期的工作,但它不會。請幫忙!
太棒了!非常感謝!一直在搞亂它,我已經多次更改了代碼,並且錯過了這個小小的錯字。此外,必須添加以下行: $ json [「chunk」] = str_replace('data:video/webm; base64,','',$ json [「chunk」]); 解碼之前,使其工作。 –