#flutter #dart #dart-pub #dart-packages
#flutter #dart #dart-pub #dart-пакеты
Вопрос:
В настоящее время я записываю прямую трансляцию и записываю ее в файл в flutter, используя bytearray, и считываю его как поток, а затем записываю его в файл, используя 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)
Ответ №1:
Вы сможете сделать это с помощью библиотеки flutter 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();
});
}