¿Cómo puedo convertir audio .mp3 a .m4a mediante programación en android

No quiero usar ffmpeg. Actualmente podía mux m4a audio con el vídeo mp4. Deseo agregar el audio mp3 también que requirió el mp3 a la conversión de m4a. Podía convertir wav a m4a pero no mp3 a m4a con código abajo

Aquí está mi código.

private void convertAudio(String filename) throws IOException { String outputpath =Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_MUSIC).getPath()+"/converted.m4a"; // Set up MediaExtractor to read from the source. MediaExtractor extractor = new MediaExtractor(); extractor.setDataSource(filename); int trackCount = extractor.getTrackCount(); // Set up MediaMuxer for the destination. MediaMuxer muxer; muxer = new MediaMuxer(outputpath, MediaMuxer.OutputFormat.MUXER_OUTPUT_MPEG_4); // Set up the tracks. HashMap<Integer, Integer> indexMap = new HashMap<Integer, Integer>(trackCount); for (int i = 0; i < trackCount; i++) { extractor.selectTrack(i); MediaFormat format = extractor.getTrackFormat(i); format.setString(MediaFormat.KEY_MIME, MediaFormat.MIMETYPE_AUDIO_AMR_NB); int dstIndex = muxer.addTrack(format); indexMap.put(i, dstIndex); } // Copy the samples from MediaExtractor to MediaMuxer. boolean sawEOS = false; int bufferSize = 32000; int frameCount = 0; int offset = 100; ByteBuffer dstBuf = ByteBuffer.allocate(bufferSize); MediaCodec.BufferInfo bufferInfo = new MediaCodec.BufferInfo(); /* if (degrees >= 0) { muxer.setOrientationHint(degrees); }*/ // Test setLocation out of bound cases muxer.start(); while (!sawEOS) { bufferInfo.offset = offset; bufferInfo.size = extractor.readSampleData(dstBuf, offset); if (bufferInfo.size < 0) { sawEOS = true; bufferInfo.size = 0; } else { bufferInfo.presentationTimeUs = extractor.getSampleTime(); bufferInfo.flags = extractor.getSampleFlags(); int trackIndex = extractor.getSampleTrackIndex(); muxer.writeSampleData(indexMap.get(trackIndex), dstBuf, bufferInfo); extractor.advance(); frameCount++; } } muxer.stop(); muxer.release(); return; } 

Parece que la respuesta a esta pregunta (a partir de ahora) es que no existe una solución gratuita disponible (por ejemplo, searchable) para convertir "mp3" a "m4a" en Android que no utiliza "ffmpeg".

Sin embargo, esto no significa que no se pueda hacer:

  • Alguien debería ser capaz de leer los documentos de especificación relevantes y luego implementar la transformación; Es decir, escribir un montón de código Java. De hecho, la existencia de ffmpeg en sí demuestra que esto es técnicamente factible. Y legalmente también.

  • Alguien podría haber hecho ya el trabajo, y elegido no compartirlo con otros.

¿Por qué no hay una alternativa libre?

Probablemente … porque no hay nadie preparado para escribir uno. Probablemente, porque el tipo de personas que estarían inclinados a hacerlo de forma gratuita no ven el punto de reinventar la rueda!

Entonces, ¿qué debería hacer?

Supongo que desea / necesita una implementación "ffmpeg-free" debido a las restricciones de licencia de LGPL / GPL. Eso es genial. Pero si usted no quiere encajar con la forma de código abierto de hacerlo (y LGPL no es oneroso), entonces usted necesita para resolver el problema de su auto (o ustedes mismos). Las alternativas son:

  1. Escriba el software de su auto (o ustedes mismos).
  2. Pague a alguien para que haga el trabajo de codificación para usted.
  3. Encuentre una implementación comercial existente y pague por una licencia.

Si usted (individual o colectivamente) hace 1 o 2, entonces podría elegir poner los resultados de su trabajo o inversión a disposición de los demás, de forma gratuita (bajo cualquier licencia que elija) o por dinero.

  • Creación de una instancia sencilla de ExoPlayer
  • Archivo de selección de archivos de Android
  • Error de MediaPlayer de Android: Error de MediaPlayer (1, -2147483648) en Stream de Internet
  • ExoPlayer AudioTrack Tartamudez
  • Streaming de audio desde una URL en Android usando MediaPlayer?
  • Cómo reproducir archivos mp3 utilizando sonic NDK en Android?
  • Los archivos OGG no se enlazarán correctamente usando Android usando MediaPlayer
  • Los archivos mp3 de baja calidad no se reproducen correctamente como se esperaba
  • Android: grabar sonido en formato mp3
  • Precisión de MediaPlayer.seekTo (int msecs)
  • Lectura de mp3 desde archivo de expansión
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.