Registrare / catturare la riproduzione audio interna di app Android e esportre mp3?

È ansible registrare il suono interno generato dall'applicazione?

La mia applicazione ti permette di creare e riprodurre sequenze musicali.

  • Android: Come submit il messaggio con il post di image su facebook?
  • Aggiorna database SQLite da una versione all'altra?
  • Problema nel bloccare l'utente nella chatlist utilizzando il server smack e open fire
  • Come utilizzare il firebase con ViewPager e FragmentPagerAdapter?
  • È ansible ruotare un disegno nella descrizione xml?
  • Verifica del suono Android
  • soundPool.play(soundIds[i], 1f, 1f, 1, 0, Constants.TIME_RATE); 

    Vorrei poter registrare la sequenza e esportre su mp3.

    Ho guardato Audio Capture ma setAudioSource (int audio_source) sembra solo accettare la logging MIC.

    Grazie

  • Come posso aggiungere un'image su EditText?
  • Tavolozza di colore del materiale di progettazione
  • android tornare alla prima schermata
  • Errore di visualizzazione con dispositivo di funzionamento del bean di gelatina (SPAN_EXCLUSIVE_EXCLUSIVE non può avere una lunghezza zero)
  • Sqlite Elimina la syntax di query in Android
  • la ricerca delle barre delle azioni non si chiuderà dopo la ricerca
  • 3 Solutions collect form web for “Registrare / catturare la riproduzione audio interna di app Android e esportre mp3?”

    No, non c'è API per get l'output audio, anche per la tua app (in realtà non è del tutto vero, perché è ansible ottenerlo attraverso l'API Visualizer , ma sarebbe di qualità così bassa che dubito che sarebbe di qualsiasi uso per te).

    Se vuoi che tipo di funzionalità dovrai implementarla da soli. Questo è; quando si avvia la riproduzione dei suoni, li mescola e scrivi il risultato in un file. Se i suoni sono compressi, dovrai anche decidere se stessi.

    Tieni presente che non c'è nessun encoder MP3 incluso con Android, quindi dovresti fornire il tuo stesso encoder MP3 comunque se questo è il formato in cui si desidera esportre.

    Come ha detto il Michael, u deve implementare il proprio encoder e decoder per questo. Visualizer fornisce una qualità molto bassa di becaz che possiamo utilizzarla per mostrare su viste personalizzate e effetti sincronizzati con equalizzatore.

    Questo è il collegamento where u troverà un decoder e un encoder semplice per il file MP3. Dove stanno leggendo i dati dal file MP3 e inserendolo in un nuovo file MP3. Avevano anche creato un supporto per un'altra estensione.

    http://code.google.com/p/ringdroid/source/browse/#svn%2Fbranches%2Fgingerbread%2Fsrc%2Fcom%2Fringdroid

    Secondo http://xzpeter.org/?p=254 è ansible catturare la riproduzione audio interna se si modifica le fonti Android. In particolare la function di scrittura della class AudioFlinger::MixerThread . (Si noti che l'articolo è un po 'vecchio – sulle versioni Android più recenti AudioFlinger stato riorganizzato e il codice di scrittura può ora essere trovato nella function threadLoop_write() ).

    Citando l'autore originale della soluzione:

    AudioFlinger è implementato sotto frameworks/base/services/audioflinger/ . Ciò che intendiamo fare è trovare l'output del mixer. Nel file AudioFlinger.cpp possiamo vedere AudioFlinger::MixerThread::threadLoop() , che è il filo di lavoro del mixer, e questo MixerThread è ereditato da AudioFlinger::BaseThread . Quindi, basta cercare la parola chiave mOutput->write con il tuo miglior editor (vim, emacs, gedit, qualunque cosa) e troveremo qualcosa di simile sotto la function threadLoop() :

     mLastWriteTime = systemTime(); mInWrite = true; mBytesWritten += mixBufferSize; int bytesWritten = (int)mOutput->write(mMixBuffer, mixBufferSize); if (bytesWritten < 0) mBytesWritten -= mixBufferSize; mNumWrites++; mInWrite = false; 

    Questo è il punto in cui il buffer di output del mixer viene trasferito ai codici correlati all'hardware e la clip audio è in mMixbuffer , con il formato mixBufferSize . In questo buffer, ci sono dati audio raw PCM con frequenza di campionamento 44100Hz, 2 canali e 16 bit bit endian come parametro. Se si scrive questo buffer ad un file, come /data/wav.raw , è sufficiente utilizzare l'adb pull per recuperare il file di dati nella macchina host e riprodurlo con aplay:
    aplay -t raw -c 2 -f S16_LE -r 44100 wav.raw

    Comunque, per convertirlo in mp3 devi usare l'encoder esterno come dichiarato da Michael.

    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.