Как я могу хранить видео blob-Data на сервере с помощью ajax и php - PullRequest
0 голосов
/ 25 апреля 2019

Я хочу сохранить данные из записанного видео на сервере по php и ajax, используя скрипт Устройство записи медиапотока из Mido в качестве базового. Работают только для аудиоданных, а не для видеофайлов. Видео файлы без изображения, только аудио. Хранение видео и проигрывание Midos Javascript работает нормально. Только мой скрипт для сохранения файла на сервере не совсем полный или неправильный.

Я использую эти данные для подготовки:

let blob = new Blob(chunks, {type: media.type })
, url = URL.createObjectURL(blob)
, li = document.createElement('li')
, mt = document.createElement(media.tag)
, hf = document.createElement('a')
;

и хотите отправить это по этому сценарию:

  var data     = new FormData();
  data.append('file', blob);
  data.append('sessID', sessID);
  data.append('idx', idx);

  $.ajax({
    url :  "./srv/lb/recorder/postWave.inc.php",
    type: 'POST',
    data: data,
    contentType: false,
    processData: false,
    success: function(data) {
      console.log('data: '+data);
    },
    error: function() {
      alert("Fehler.");
    }
  });

Вот и вся функция в Javascript:

function makeLink() {
  let blob = new Blob(chunks, {type: media.type })
    , url = URL.createObjectURL(blob)
    , li = document.createElement('li')
    , mt = document.createElement(media.tag)
    , hf = document.createElement('a')
  ;
  console.log('url: '+url+'//');
  mt.controls = true;
  mt.src = url;
  hf.href = url;
  hf.download = `${counter++}${media.ext}`;
//  hf.innerHTML = `download ${hf.download}`;
  li.appendChild(mt);
//  li.appendChild(hf);
  ul.appendChild(li);
  $('#btnWeiter').css({'visibility':'visible'});
  $('.btn').remove();

//      var filename = 'test.wav';
      var data     = new FormData();
      data.append('file', blob);
      data.append('sessID', sessID);
      data.append('idx', idx);

      $.ajax({
        url :  "./srv/lb/recorder/postWave.inc.php",
        type: 'POST',
        data: data,
        contentType: false,
        processData: false,
        success: function(data) {
          console.log('data: '+data);
        },
        error: function() {
          alert("Fehler.");
        }
      });
}

и это мой php-код:

$ext = $_POST['idx'] == 1 ? '.ogg' : '.mp4';

if(isset($_FILES['file']) and !$_FILES['file']['error']) {
  $fname = "audio_" . $_POST['sessID'] . $ext;

  move_uploaded_file($_FILES['file']['tmp_name'], "../../data/wav/" . $fname);
}

Отлично работает с файлами * .ogg, но файлы * .mp4 работают только со звуком.

Может быть, у меня есть еще что-то для видеофайлов?

...