Я могу записать видео с помощью веб-камеры, воспроизвести получившийся блоб в браузере и загрузить его на локальный компьютер, но когда я сохраняю файл на сервер, он не читается. Я пробовал отправлять фрагменты на сервер и объединять их там, а также отправлять весь блок, но результат тот же (нечитаемое видео). Сначала я читаю капли с помощью FileReader(), который дает результат base64, затем отправляю его на сервер, где я использую base64_decode() и сохраняю его в папку.
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");
}
Я не знаю, что я делаю неправильно. Уже больше недели пытаюсь заставить его работать, но не получается. Пожалуйста помоги!