MediaRecorder produces jaudiotagger CannotReadException
Asked Answered
G

0

1

I am creating a m4a file with MediaRecorder as follows:

    recorder2 = new MediaRecorder();
    recorder2.setAudioSource(MediaRecorder.AudioSource.MIC);
    recorder2.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    recorder2.setAudioEncoder(MediaRecorder.AudioEncoder.AAC);
    recorder2.setAudioEncodingBitRate(128000);
    recorder2.setAudioSamplingRate(44100);
    recorder2.setOutputFile(<fullFilePath.m4a>);

It works perfectly. After the file is created, I want to add ID3 tags to it using jaudiotagger. So I do:

    AudioFile f = AudioFileIO.read(new File(<fullFilePath.m4a>));
    Tag fileTag = f.getTag();
    fileTag.setField(FieldKey.COMMENT,"AVE Tags:.....");

This is working great with WAV files generated with AudioRecord, but for m4a files generated as above with MediaRecorder I get an exception in the AudioFile line:

W/System.err: org.jaudiotagger.audio.exceptions.CannotReadException: <fullFilePath.m4a>:
Unable to find next atom because identifier is invalid ��������

I also tried with

Mp4FileReader reader = new Mp4FileReader();
AudioFile f = reader.read(new File(AveActivity.REC_DIR,song));
....

but I get the same error... What's wrong?

BTW, I am using implementation 'com.github.goxr3plus:jaudiotagger:2.2.7' (Why so many versions? Isn't this quite dangerous??)

EDIT:

There are several things that I do not like about this, so I decided to ditch jaudiotagger altogether. It doesn't make sense to use this heavy, buggy, and hard-to-track-a-trusty-version of it for android. So I made my own tiny thing here for WAVE files that works perfectly right after AudioRecord, and without the need to open/close/save the file twice.

Yet, I am not deleting the post since the first half shows that there is something strange with jaudiotagger for m4a, at least with the version I got from goxr3plus.

Greenhead answered 7/5, 2022 at 17:1 Comment(2)
Can you replace SampleRate and song with their raw values so it's clear what is being sent to MediaRecorder?Operative
Updated. song is just the full path to the m4a, and SampleRate is the usual 44100.Greenhead

© 2022 - 2024 — McMap. All rights reserved.