How to get&modify metadata to supported audio files on Android?

后端 未结 1 368
耶瑟儿~
耶瑟儿~ 2021-01-07 02:26

Background

Android supports various audio files encoding and decoding.

I record audio into an audio file using android.media.MediaRecorder

相关标签:
1条回答
  • 2021-01-07 03:05

    It seems there's no way to do it uniformly for all supported audio formats in Android. There are some limited options for particular formats though, so I suggest to stick with one format.

    MP3 is the most popular one and there should be a lot of options like this one.

    If you don't want to deal with encoding/decoding, there are some options for a WAV format.

    There's also a way to add a metadata track to a MP4 container using MediaMuxer (you can have an audio-only MP4 file) or like this.

    Regarding MediaStore: here's an example (at the end of page 318) on how to add metadata to it just after using MediaRecorder. Though as far as I know the data won't be recorded inside the file.

    Update

    I compiled an example app using this MP4 parser library and MediaRecorder example from SDK docs. It records an audio, puts it in MP4 container and adds String metadata like this:

    MetaDataInsert cmd = new MetaDataInsert();
    cmd.writeRandomMetadata(fileName, "lore ipsum tralalala");
    

    Then on the next app launch this metadata is read and displayed:

    MetaDataRead cmd = new MetaDataRead();
    String text = cmd.read(fileName);
    tv.setText(text);
    

    Update #2

    Regarding m4a file extension: m4a is just an alias for an mp4 file with AAC audio and has the same file format. So you can use my above example app and just change the file name from audiorecordtest.mp4 to audiorecordtest.m4a and change audio encoder from MediaRecorder.AudioEncoder.AMR_NB to MediaRecorder.AudioEncoder.AAC.

    0 讨论(0)
提交回复
热议问题