¿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.
- android forma más rápida de decodificar mp3 a los datos de pcm
- Android MediaPlayer no reproducir archivos mp3
- Configurar el tono de llamada personalizado de contacto, ¿cómo?
- Formato de música Android recomendado - mp3, ogg u otro?
- Raw no se puede resolver o no es un campo
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; }
- Reproducción de audio con HTML5 en el navegador de Android
- Descargar un archivo sin extensión desde un servidor
- Android MediaExtractor y la corriente mp3
- Codificación pcm muestras a mp3 en tiempo real android, ¿posible?
- Comprar música intención
- Decodificación de MP3 en Android
- Set Letras en MP3 ID3v2 Tag
- Cómo convertir datos sin formato PCM en archivos mp3?
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:
- Escriba el software de su auto (o ustedes mismos).
- Pague a alguien para que haga el trabajo de codificación para usted.
- 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.
- Certificado de fijación en Android
- Enviar mensaje al usuario en WhatsApp desde mi aplicación (Android)