将视频文件从设备加载为“ ByteData”抖动

问题描述 投票:0回答:1

我正在使用flutter相机包来录制视频并将视频保存到一个临时目录,之后我使用flutter的ffmpeg包进行一些转换。但是,要实现此目的,我首先必须对录制的视频进行复制以创建输出文件路径。

当我尝试从设备加载资产​​时,挑战就来了。下面的代码块用于文件的复制和重命名。

static Future<File> copyFileAssets(String assetName, String localName) async {
     ByteData assetByteData = await rootBundle.load(assetName);

    final List<int> byteList = assetByteData.buffer
        .asUint8List(assetByteData.offsetInBytes, assetByteData.lengthInBytes);

    final String fullTemporaryPath =
        join((await tempDirectory).path, localName);

    return new File(fullTemporaryPath)
        .writeAsBytes(byteList, mode: FileMode.writeOnly, flush: true);
  }

问题出在此行ByteData assetByteData = await rootBundle.load(assetName);我收到此错误消息Unable to load asset: /storage/emulated/0/Android/data/com.timz/files/timz/1585820950555.mp4,但奇怪的是,这仅在我为第一个运行构建时发生。在随后的热重启中,其他所有工作都很好。

flutter dart filesystems
1个回答
0
投票

[我后来自己得到了此修复程序rootBundle旨在仅加载您在pubspec.yaml上声明了路径的资产,但是以某种方式,当应用热重启时,它奇迹般地加载了已保存的文件。

以字节读取文件给出了我希望通过根捆绑程序加载它的内容。这是下面的代码。Uint8List assetByteData = await File(assetName).readAsBytes();

© www.soinside.com 2019 - 2024. All rights reserved.