Ionic конвертировать видео URI в объект File для загрузки в Firebase - PullRequest
0 голосов
/ 10 ноября 2018

Я хочу преобразовать URI пути к файлу в объект файла для загрузки в хранилище Filebase. Но после того, как я выбрал видео и позвонил

window.resolveLocalFileSystemURL (...)

никогда не предупреждает File и uploadToFirebase () не вызывает. Итак, я не знаю, как это сделать.

doGetPicture() {

    // TODO:
    // get picture from camera

    const options: CameraOptions = {
      quality: 100,
      destinationType: this.camera.DestinationType.FILE_URI,
      sourceType: this.camera.PictureSourceType.PHOTOLIBRARY,
      mediaType: this.camera.MediaType.VIDEO,
    }

    this.camera.getPicture(options).then((_imagePath) => {
      alert('got image path ' + _imagePath);

      window.resolveLocalFileSystemURL(_imagePath, function (fileEntry) {
        fileEntry.file(function (file) {
          alert('got file! '+file);
          console.log('File__++ ', file);
        });
      });

    });

  }


uploadToFirebase(file) {

    // Create the file metadata
    var metadata = {
      contentType: 'video/mp4'
    };

    // Upload file and metadata to the object 'videos/test.mp4'
    this.fbRef.child('videos/' + file.name).put(file, metadata);

  }

Спасибо

PS. Я использую Ionic v.4

1 Ответ

0 голосов
/ 26 ноября 2018

Вы можете использовать родные ионные плагины MediaCapture & File и записывать видео следующим образом:

recordVid() {
  let options: CaptureVideoOptions = { limit: 1, duration: 5 }
  this.mediaCap.captureVideo(options).then((data: MediaFile[]) => {
    let capturedVid = data[0];
    let localVideoPath = capturedVid.fullpath;
    let directoryPath = localVideoPath.substr(0, localVideoPath.lastIndexOf('/'));
    let fileName = localVideoPath.substr(localVideoPath.lastIndexOf('/') + 1); 
    this.file.readAsArrayBuffer(directoryPath, fileName).then((result) => {
      console.log(result);
      let blob = new Blob([result], { type: "video/mp4" });
      //then upload the blob to firebase storage
      this.uploadToFirebase(blob);
    });
//catch errors here and maybe add a function to play video in frontend
}

Сама UploadTask описана здесь: Загрузить видео Blob в Firebase

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...