मैं वीडियो रिकॉर्ड करने और अस्थायी निर्देशिका में वीडियो सहेजने के लिए स्पंदन कैमरा पैकेज का उपयोग कर रहा हूं जिसके बाद मैं कुछ परिवर्तन करने के लिए स्पंदन के 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 मिलता है, लेकिन अजीब बात यह है कि यह केवल तब होता है जब मैं पहली बार बिल्ड चलाता हूं। बाद के हॉट रीस्टार्ट पर बाकी सब ठीक काम करता है।

0
Jehonadab Okpukoro 2 अप्रैल 2020, 12:58

1 उत्तर

सबसे बढ़िया उत्तर

मुझे बाद में खुद से यह सुधार मिला rootBundle केवल उन संपत्तियों को लोड करने के लिए है जिन्हें आपने अपने pubspec.yaml पर उनके पथ घोषित कर दिए हैं, लेकिन किसी तरह, यह चमत्कारिक रूप से सहेजी गई फ़ाइल को लोड करता है जब हॉट रीस्टार्ट लागू किया गया था।

फ़ाइल को बाइट्स के रूप में पढ़ना जो मैं चाहता था उसे रूट बंडल के साथ लोड करना चाहता था। यहाँ नीचे कोड है। Uint8List assetByteData = await File(assetName).readAsBytes();

0
Jehonadab Okpukoro 3 अप्रैल 2020, 05:16