ウェブカメラでビデオを録画し、結果のBLOBをブラウザで再生してローカルマシンでダウンロードすることができますが、ファイルをサーバーに保存するとそのファイルは読めません。私はサーバーにチャンクを送信しようとし、そこにそれらを連結し、全体のブロブを送信しようとしましたが、結果は同じ(読み取り不可能なビデオ)です。 まずFileBufferをFileReader()で読み込み、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");
}
を私は私が間違っているのかわかりません。私はそれを働かせるために一週間以上努力してきましたが、それはできません。助けてください!あなたの代わりにこの
file_put_contents("/uploadDirecotry/chunk".$json['index'].".webm", $chunk);
はまた、私は提案し、書き込みモードでは、あなたの「forループ」の前に最終的なファイルを開いてください。この
file_put_contents("/uploadDirecotry/chunk".$json['index'].".webm", $json["chunk"]);
使用の復号化されたチャンク
を保存する必要が
素晴らしい!どうもありがとう!それをたくさん回り込んで、コードを何度か変更してしまい、この小さな誤字を逃してしまった。また、次の行を追加する必要がありました。 $ json ["chunk"] = str_replace( 'data:video/webm; base64、'、 ''、$ json ["chunk"]);デコードする前に 、それを動作させる。 –