#javascript #php
Вопрос:
Я работал над объединением множества видеофайлов в один видеофайл. Я нашел простой фрагмент, и он работает довольно хорошо. Тем не менее, у меня возникли проблемы на бэкэнде, когда я пытаюсь соединить файлы вместе как одно целое.
$("#submit-btn").click(function(e){
e.preventDefault();
var files = document.getElementById('files').files;
upload(files[0]);
})
function upload(file) {
var chunkSize = 50000000,
size = file.size,
numberofChunks = Math.ceil(file.size/chunkSize),
start = 0, end = start chunkSize, num = 1;
var chunkUpload = function(blob) {
var fd = new FormData();
var xhr = new XMLHttpRequest();
fd.append('upload', blob, file.name);
fd.append('num', num);
fd.append('num_chunks', numberofChunks);
xhr.open('POST', '{{LINK aj/chunk-upload}}?hash=' $('.main_session').val(), true);
xhr.send(fd);
}
while (start < size) {
chunkUpload(file.slice(start, end));
start = end;
end = Math.min(start chunkSize , file.size );
num ;
}
}
<?php
//chunk-upload.php
$target_path = 'uploads/';
$tmp_name = $_FILES['upload']['tmp_name'];
$filename = $_FILES['upload']['name'];
$target_file = $target_path.$filename;
$num = $_POST['num'];
$num_chunks = $_POST['num_chunks'];
move_uploaded_file($tmp_name, $target_file.$num);
if ($num == $num_chunks) {
$fp = fopen("uploads/{$filename}", 'w');
fclose($fp);
/* here you can reassemble chunks together */
for ($i = 1; $i <= $num_chunks; $i ) {
$fh = fopen( $target_file.$i, 'rb' );
$buffer = fread( $fh, filesize($target_file.$i));
fclose( $fh );
$total = fopen( "uploads/{$filename}", 'ab' );
$write = fwrite( $total, $buffer );
fclose($total);
}
}
Я попробовал сделать то же самое с записью файлов. Я также пробовал использовать file_get_contents, они, похоже, работают. Но когда я иду воспроизводить видео, оно не загружается, и я получаю ошибки в видео. Есть идеи, что я могу делать неправильно?
Комментарии:
1. Может быть, это поможет … github.com/PHP-FFMpeg/PHP-FFMpeg