Флаттер FireBase хранения загрузки пустых MP4 - PullRequest
0 голосов
/ 12 октября 2018

Я работал над приложением с флаттером, где пользователь делает серию фотографий, а приложение генерирует промежуток времени фотографий (или видео).Я генерирую видео mp4 с использованием каналов платформы, однако при загрузке mp4 в хранилище Firebase видео загружается как пустое.Я могу проверить, что mp4 был написан правильно, потому что я могу просматривать видео на своем ноутбуке, которое пишет эмулятор.

Кто-нибудь сталкивался с этой ошибкой раньше?

Ниже приведен код для загрузки в firebaseхранилище:

  Future saveMp4(File mp4File, User user, String date) async {
    StorageReference ref = firestorage
        .ref()
        .child(user.uid)
        .child("videos")
        .child(date+'.mp4');
    print (mp4File);
    StorageUploadTask uploadTask = ref.putFile(mp4File, StorageMetadata(contentType: 'video/mp4'));
    await uploadTask.onComplete;
    String downloadUrl = await ref.getDownloadURL();
    print ("download url: $downloadUrl");
  }

Вот выходные данные события загрузки с расположением файла, содержащего видео.

flutter: File: '/Users/ryanmorris/Library/Developer/CoreSimulator/Devices/9A6FB4BC-90B2-4AF4-A622-841979AD5430/data/Containers/Data/Application/554FDF1E-0793-47DA-964A-AF661D46CEA1/Documents/export.mp4'
flutter: EVENT StorageTaskEventType.progress
flutter: EVENT StorageTaskEventType.resume
flutter: EVENT StorageTaskEventType.progress
    [C33.1 8D504A8D-BFFF-468C-8970-17985062A8CB 192.168.1.22:62408<->172.217.23.10:443]
    Connected Path: satisfied (Path is satisfied), interface: en0
    Duration: 1.029s, DNS @0.001s took 0.005s, TCP @0.008s took 0.026s, TLS took 0.052s
    bytes in/out: 3976/1035, packets in/out: 10/8, rtt: 0.043s, retransmitted packets: 0, out-of-order packets: 0
flutter: EVENT StorageTaskEventType.progress
flutter: EVENT StorageTaskEventType.success

На платформе IOS я использовал код из https://github.com/cameronehrlich/CEMovieMaker. Я не верю, что проблема связана с кодом платформы, потому что я могу нормально воспроизвести выводимое видео.

Вот мой вывод доктора флаттера:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel beta, v0.9.4, on Mac OS X 10.14.1 18B50c, locale en-US)
[✓] Android toolchain - develop for Android devices (Android SDK 28.0.2)
[✓] iOS toolchain - develop for iOS devices (Xcode 10.0)
[✓] Android Studio (version 3.1)
[✓] Connected devices (1 available)

Firebase_storageверсия 1.0.3.

Спасибо за помощь!

1 Ответ

0 голосов
/ 10 декабря 2018

Убедитесь, что при создании файла во временной папке операция writeAsBytes является асинхронной, вы должны подождать или выполнить загрузку в firestorage в .then((File f){..})

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