flutter - 在 Flutter 中更新使用 bytearray 创建的 MP3 文件中的元数据
问题描述
我目前正在录制一个实时流并使用 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)
解决方案
您将能够通过使用颤振 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();
});
}
推荐阅读
- java - 如何从一个文本文件中填写 4 个不同的 ArrayList?
- laravel - 我无法使用 POST 方法保存值 - laravel vue
- javascript - 如何在javascript中获取滚动条的结尾
- react-native - 反应原生改变 Animated.Image 源而不闪烁
- python - 如果先前的时间步长低于限制,则在 pandas 数据帧中回填错误的时间值
- java - 无法加载类“org.slf4j.impl.StaticLoggerBinder”没有任何作用
- ios - 在 IOS 上获取数据 react redux
- azure - Microsoft Azure 备份服务器失败并出现错误 182
- excel-formula - 使用excel公式返回子集中的最后一项
- pdf - Cupsfilter 编码错误““x”并且在终端中打印/将 html 转换为 pdf 时自定义页面大小无效