Je peux enregistrer une vidéo avec la webcam, lire le blob résultant sur le navigateur et le télécharger sur la machine locale, mais lorsque je sauvegarde le fichier sur le serveur, il est illisible. J'ai essayé d'envoyer les morceaux au serveur et de les concaténer, et aussi d'envoyer le blob entier, mais le résultat est le même (vidéo illisible). J'ai d'abord lu les blobs avec un FileReader(), qui donne un résultat base64, puis l'envoie au serveur, où je base64_decode() et l'enregistre dans un dossier.Comment enregistrer une vidéo enregistrée avec MediaRecorder API sur un serveur php?
Code JS:
var reader = new FileReader();
reader.readAsDataURL(chunks[index]);
reader.onload = function() {
upload(reader.result, function(response){
if(response.success){
// upload next chunk
}
});
};
sur le serveur:
$json = json_decode($request->getContent(), true);
$chunk = base64_decode($json["chunk"]);
// all chunks get
file_put_contents("/uploadDirecotry/chunk".$json['index'].".webm", $json["chunk"]);
Lorsque tous les morceaux sont téléchargés:
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");
}
Je ne sais pas ce que je fais mal. J'ai essayé pendant plus d'une semaine pour que cela fonctionne, mais ce ne sera pas le cas. S'il vous plaît aider!
Excellent! Merci beaucoup! J'y ai beaucoup tripoté et j'avais changé le code plusieurs fois, et j'avais raté cette petite faute de frappe. Aussi, a dû ajouter cette ligne: $ json ["chunk"] = str_replace ('données: video/webm; base64,', '', $ json ["chunk"]); avant le décodage, pour le faire fonctionner. –