【问题标题】:Updating MetaData in MP3 file created using bytearray in Flutter在 Flutter 中更新使用 bytearray 创建的 MP3 文件中的元数据
【发布时间】:2020-11-17 03:44:46
【问题描述】:

我目前正在录制一个实时流,并使用 bytearray 将其写入 Flutter 中的文件,并将其作为流读取,然后使用 File.openWrite 将其写入文件,一切顺利,但我刚刚意识到我需要编写文件中的一些元数据,我什至不知道如何去做。我在 Android 中使用 ID3Tag 库做过一次,但我似乎在 Flutter 中找不到任何类似的东西。任何帮助表示赞赏。像往常一样提前谢谢你!我试过使用https://pub.dev/packages/audiotagger/

但是,我一直遇到此错误,不知道如何解决此问题。 Checking further because the ID3 Tag ends at 0x00 but the mp3 audio doesn't start until 0x129

这也是错误的一部分:

W/System.err(20398): java.lang.NullPointerException: Attempt to invoke interface method 'void org.jaudiotagger.tag.Tag.setField(org.jaudiotagger.tag.FieldKey, java.lang.String[])' on a null object reference
W/System.err(20398):    at com.nicolorebaioli.audiotagger.AudiotaggerPlugin$Util.setFieldIfExist(AudiotaggerPlugin.java:222)
W/System.err(20398):    at com.nicolorebaioli.audiotagger.AudiotaggerPlugin.writeTags(AudiotaggerPlugin.java:92)
W/System.err(20398):    at com.nicolorebaioli.audiotagger.AudiotaggerPlugin.onMethodCall(AudiotaggerPlugin.java:64)
W/System.err(20398):    at io.flutter.plugin.common.MethodChannel$IncomingMethodCallHandler.onMessage(MethodChannel.java:233)
W/System.err(20398):    at io.flutter.embedding.engine.dart.DartMessenger.handleMessageFromDart(DartMessenger.java:85)
W/System.err(20398):    at io.flutter.embedding.engine.FlutterJNI.handlePlatformMessage(FlutterJNI.java:692)
W/System.err(20398):    at android.os.MessageQueue.nativePollOnce(Native Method)
W/System.err(20398):    at android.os.MessageQueue.next(MessageQueue.java:326)
W/System.err(20398):    at android.os.Looper.loop(Looper.java:160)

【问题讨论】:

    标签: flutter dart dart-pub dart-packages


    【解决方案1】:

    您将能够通过使用颤振 ffmpeg 库来做到这一点。

    https://pub.dev/packages/flutter_ffmpeg/

    将其添加到文件后,使用下面的代码将元数据添加到文件中。

    void ffmpegFileUpdate(fileName) {
      var abs = absolutePath + "/temp.mp3";
      var newP = absolutePath + "/" + fileName;
    
      final FlutterFFmpeg _flutterFFmpeg = new FlutterFFmpeg();
      var arguments = ["-i", abs, "-c:v", "mp3", newP];
      _flutterFFmpeg.executeWithArguments(arguments).then((rc) {
        File(abs).delete();    
      });
    }
    

    【讨论】:

      猜你喜欢
      • 2021-11-20
      • 2011-11-01
      • 1970-01-01
      • 2020-09-25
      • 1970-01-01
      • 2020-02-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多