2012-06-27 9 views
6

Ich mache eine Anwendung, die Lieder von mediapicker bekommen und es in meiner Anwendung speichern. Ich will die Größe der Datei reduzieren, aber ich habe ein Beispiel namens "AACConverter", ich teste das Anwendung, aber es ist nicht die Dateigröße zu reduzieren.kann mir jemand bei der Lösung dieses Problems helfen.Wie reduziere ich Audiodateigröße in 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

einige posten könnte Code – jimpic

+0

Hallo Jimpic danke für Ihre Antwort .. Hier ist der Code – girish

+2

Sie könnten den Code richtig formatieren. – Almo

Antwort

1

Es gibt verschiedene Möglichkeiten, wie Sie dieses Problem lösen können. Wenn Sie möchten, dass der Ton im Hintergrund abgespielt wird, können Sie

[[SimpleAudioEngine sharedEngine] playBackgroundMusic: @ "BGM.mp3" Schleife: YES];

Verwenden Sie dies, können Sie einen kleinen Audio-Clip, der klein sein wird, und spielen Sie es in einer Schleife. Das gleiche gilt für Effekt-Audio.

Abgesehen davon hilft die Verringerung der Bitrate von Audio-Clips auch bei der Verringerung der Dateigröße. Für alle diese Bearbeitungsvorgänge, die Bearbeitung/Clipping/Trimmen Soundclip enthält, Bitrate abnimmt, in verschiedenen Formaten zu speichern, würde ich Sie

Audacity (Open-Source, kostenlos) nutzen vorschlagen

0

Wenn Sie über die Größe über die Qualität kümmern, vielleicht wollen Sie das Lied amr-Format conver.