2012-06-27 22 views
6

Estoy haciendo una aplicación que obtiene canciones de MediaPicker y la guarda en mi aplicación.Quiero reducir el tamaño del archivo, pero tengo una muestra llamada "AACConverter", pruebo el aplicación pero no está reduciendo el tamaño del archivo. ¿Podría alguien ayudarme a resolver este problema?Cómo reducir el tamaño del archivo de audio en IOS

- (IBAction)convert:(id)sender { 
    if (![TPAACAudioConverter AACConverterAvailable]) { 
     [[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Converting audio", @"") 
            message:NSLocalizedString(@"Couldn't convert audio: Not supported on this device", @"") 
            delegate:nil 
          cancelButtonTitle:nil 
          otherButtonTitles:NSLocalizedString(@"OK", @""), nil] autorelease] show]; 
     return; 
    } 

    // Initialise audio session, and register an interruption listener, important for AAC conversion 
    if (!checkResult(AudioSessionInitialize(NULL, NULL, interruptionListener, self), "initialise audio session")) { 
     [[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Converting audio", @"") 
           message:NSLocalizedString(@"Couldn't initialise audio session!", @"") 
           delegate:nil 
         cancelButtonTitle:nil 
         otherButtonTitles:NSLocalizedString(@"OK", @""), nil] autorelease] show]; 
     return; 
    } 


    // Set up an audio session compatible with AAC conversion. Note that AAC conversion is incompatible with any session that provides mixing with other device audio. 
    UInt32 audioCategory = kAudioSessionCategory_MediaPlayback; 
    if (!checkResult(AudioSessionSetProperty(kAudioSessionProperty_AudioCategory, sizeof(audioCategory), &audioCategory), "setup session category")) { 
     [[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Converting audio", @"") 
           message:NSLocalizedString(@"Couldn't setup audio category!", @"") 
           delegate:nil 
         cancelButtonTitle:nil 
         otherButtonTitles:NSLocalizedString(@"OK", @""), nil] autorelease] show]; 
     return; 
    } 

    NSArray *documentsFolders = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    audioConverter = [[[TPAACAudioConverter alloc] initWithDelegate:self 
                  source:[[NSBundle mainBundle] pathForResource:@"audio" ofType:@"mp3"] 
                 destination:[[documentsFolders objectAtIndex:0] stringByAppendingPathComponent:@"audio.m4a"]] autorelease]; 



    NSLog(@"destinatiion path is %@",[[documentsFolders objectAtIndex:0]stringByAppendingFormat:@"audio.m4a"]); 
    ((UIButton*)sender).enabled = NO; 
    [self.spinner startAnimating]; 
    self.progressView.progress = 0.0; 
    self.progressView.hidden = NO; 

    [audioConverter start]; 
} 

- (IBAction)playConverted:(id)sender { 
    if (audioPlayer) { 
     [audioPlayer stop]; 
     [audioPlayer release]; 
     audioPlayer = nil; 
     [(UIButton*)sender setTitle:@"Play converted" forState:UIControlStateNormal]; 
    } else { 
     NSArray *documentsFolders = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
     NSString *path = [[documentsFolders objectAtIndex:0] stringByAppendingPathComponent:@"audio.m4a"]; 
     audioPlayer = [[AVAudioPlayer alloc] initWithContentsOfURL:[NSURL fileURLWithPath:path] error:NULL]; 
     [audioPlayer play]; 

     [(UIButton*)sender setTitle:@"Stop" forState:UIControlStateNormal]; 
    } 
} 

- (IBAction)emailConverted:(id)sender { 
    NSArray *documentsFolders = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES); 
    NSString *path = [[documentsFolders objectAtIndex:0] stringByAppendingPathComponent:@"audio.m4a"]; 

    MFMailComposeViewController *mailController = [[MFMailComposeViewController alloc] init]; 
    mailController.mailComposeDelegate = self; 
    [mailController setSubject:NSLocalizedString(@"Recording", @"")]; 
    [mailController addAttachmentData:[NSData dataWithContentsOfMappedFile:path] 
          mimeType:@"audio/mp4a-latm" 
          fileName:[path lastPathComponent]]; 

    [self presentModalViewController:mailController animated:YES]; 
} 

#pragma mark - Audio converter delegate 

-(void)AACAudioConverter:(TPAACAudioConverter *)converter didMakeProgress:(CGFloat)progress { 
    self.progressView.progress = progress; 
} 

-(void)AACAudioConverterDidFinishConversion:(TPAACAudioConverter *)converter { 
    self.progressView.hidden = YES; 
    [self.spinner stopAnimating]; 
    self.convertButton.enabled = YES; 
    self.playConvertedButton.enabled = YES; 
    self.emailConvertedButton.enabled = YES; 
    audioConverter = nil; 
} 

-(void)AACAudioConverter:(TPAACAudioConverter *)converter didFailWithError:(NSError *)error { 
    [[[[UIAlertView alloc] initWithTitle:NSLocalizedString(@"Converting audio", @"") 
           message:[NSString stringWithFormat:NSLocalizedString(@"Couldn't convert audio: %@", @""), [error localizedDescription]] 
           delegate:nil 
         cancelButtonTitle:nil 
         otherButtonTitles:NSLocalizedString(@"OK", @""), nil] autorelease] show]; 
    self.convertButton.enabled = YES; 
    audioConverter = nil; 
} 
+0

puede publicar algunos código – jimpic

+0

hola jimpic gracias por su respuesta .. aquí está el código – girish

+2

Puede formatear el código correctamente. – Almo

Respuesta

1

Existen varias formas de resolver este problema. En caso de que desee que el audio se reproduzca en segundo plano, puede usar

[[SimpleAudioEngine shared Engine] playBackgroundMusic: @ "BGM.mp3" loop: YES];

Al usar esto, puede usar un pequeño clip de audio que será pequeño en tamaño y lo reproducirá en un bucle. Lo mismo se puede aplicar al efecto de audio también.

Aparte de eso, disminuir la velocidad de bits del clip de audio también ayuda a disminuir el tamaño del archivo. Por todas estas operaciones de edición, lo que incluye la edición/recorte/recorte clip de sonido, la disminución de la tasa de bits, el ahorro en diferentes formatos, sugeriría que utilice

Audacity (de código abierto, gratis)

0

Si te importa el tamaño sobre la calidad, tal vez quieras convertir la canción al formato amr.

Cuestiones relacionadas