La registrazione audio in formato mp3 in un’app per iPhone

Sto sviluppando una applicazione per iPhone che registra l’audio in .formato wav.

Ecco il codice:

NSMutableDictionary* recordSetting = [[NSMutableDictionary alloc]init];         
[recordSetting setValue :[NSNumber  numberWithInt:kAudioFormatLinearPCM] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:11025.0] forKey:AVSampleRateKey];         
[recordSetting setValue:[NSNumber numberWithInt: 1] forKey:AVNumberOfChannelsKey];
[recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];




NSArray *path = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,
 NSUserDomainMask, YES);

  NSString *documentsDirectory = [path objectAtIndex:0]; 

  NSString *myDBnew = [documentsDirectory stringByAppendingPathComponent:@"test.wav"];

 recordedTmpFile = [NSURL fileURLWithPath:myDBnew];

NSLog(@"Using File called: %@",recordedTmpFile);

        recorder = [[ AVAudioRecorder alloc] initWithURL:recordedTmpFile settings:recordSetting error:&error];
        [recorder setDelegate:self];
        [recorder prepareToRecord];
        [recorder record];

Codice di cui sopra è la registrazione audio in .il formato wav. Se voglio registrare l’audio in MP3 utilizzando la chiave di kAudioFormatMPEGLayer3(mp3) invece di kAudioFormatLinearPCM(.wav), quali altre modifiche devo fare? Variazioni recordSetting dizionario come frequenza di campionamento, canali e tutti.

O suggerire qualsiasi formato audio che è compatibile sia con iPhone e Android, di piccole dimensioni e possono essere registrati direttamente da app per iPhone.

OriginaleL’autore ios | 2012-05-11

2 Replies
  1. 24

    Non è possibile registrare in formato MP3 è un formato proprietario, quando si tratta di codifica. Queste sono le impostazioni che ho usato io, si esce di ~150 KB per 2 min di tempo di registrazione:

    NSString *tempDir = NSTemporaryDirectory();
    NSString *soundFilePath = [tempDir stringByAppendingPathComponent:@"sound.m4a"];
    
    NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
    NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
                                      [NSNumber numberWithInt:kAudioFormatMPEG4AAC], AVFormatIDKey,
                                      [NSNumber numberWithInt:AVAudioQualityMin], AVEncoderAudioQualityKey,
                                      [NSNumber numberWithInt:16], AVEncoderBitRateKey,
                                      [NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
                                      [NSNumber numberWithFloat:8000.0], AVSampleRateKey,
                                      [NSNumber numberWithInt:8], AVLinearPCMBitDepthKey,
                                      nil];

    Anche facendo la conversione è un processore intensa operazione, se stai inviando questo audio di un server, è possibile utilizzare FFMPEG con il mp3lame libreria per fare la conversione audio sul server.

    EDIT: questo è il codice per Android registrazione è impostato su AMR codifica perché AAC è supportato solo come di nido d’ape.

    mediaRecorder = new MediaRecorder();
    mediaRecorder.setAudioSource(MediaRecorder.AudioSource.MIC);
    mediaRecorder.setOutputFormat(MediaRecorder.OutputFormat.MPEG_4);
    mediaRecorder.setAudioEncoder(MediaRecorder.AudioEncoder.AMR_NB);
    mediaRecorder.setAudioChannels(1);
    mediaRecorder.setOutputFile("sample.m4a");
    Grazie per l’aiuto ma come è possibile ottenere .File AAC da questo .m4a non è supportato su android.Per favore fatemi sapere.
    Il mio Android partner per lo sviluppo mi ha dato questo developer.android.com/guide/appendix/media-formats.html ci si può vedere che è possibile codificare in formato AAC su Android e risparmiare .file m4a in modo che si può avere lo stesso .formato m4a sia per iOS e Android senza problemi.
    Sono riuscito a risolvere il tuo problema, amico?
    Grazie per la vostra meravigliosa risposta, ora voglio sapere che posso modulare a livello di programmazione in android(ie. cambiare il tono audio) e poi convertirlo in .formato m4a quindi funziona su entrambi..
    Che sembra essere un argomento diverso quindi io proporrei di aprire una nuova discussione per questo. Quanto riguarda la registrazione audio va solo utilizzare le stesse impostazioni che ho postato qui, come le loro controparti e impostare il tipo di file da m4a, io aggiornare la mia risposta con il codice di Android per questo.

    OriginaleL’autore 8vius

  2. 1

    Non è possibile registrare l’audio in .file mp3. kAudioFormatMPEGLayer3 è solo per playback the .mp3 format audio. C’è no codec available for .mp3 recording. Avete bisogno di registrare in aac o wav formato e convertirlo in .mp3 formato.

    Meglio controllare il seguente link e immagini:

    Registrazione Audio Di Riferimento

    La registrazione audio in formato mp3 in un'app per iPhone

    Qui è un link per imparare la base per la conversione di formato audio:

    L’Audio Convertitore Di Riferimento

    OriginaleL’autore Dinesh Raja

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *