2012-06-27 24 views
6

Mediapicker'dan şarkı alıp onu uygulamaya kaydetmek için bir uygulama yapıyorum. Dosya boyutunu azaltmak istiyorum, ancak "AACConverter" adlı bir örnek aldım. uygulama ancak dosya boyutunu azaltmıyor. Herhangi biri bana bu sorunu çözmede yardımcı olabilir.IOS'taki ses dosyası boyutu nasıl azaltılabilirim

- (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

bazı sonrası olabilir Eğer

Audacity (serbest Açık kaynak) kullanan öneririm code – jimpic

+0

merhaba jimpic cevabınız için teşekkürler .. kod – girish

+2

kodudur Kodunuzu düzgün bir şekilde biçimlendirebilirsiniz. – Almo

cevap

1

Bu sorunu çözebileceğiniz çeşitli yollar vardır. Sesin arka planda oynatılmasını istiyorsanız,

[[SimpleAudioEngine sharedEngine] playBackgroundMusic: @ "BGM.mp3" döngüsünü kullanabilirsiniz: YES];

Bunu kullanarak, boyut olarak küçük olacak küçük bir ses klibi kullanabilir ve bir döngü içinde oynatabilirsiniz. Aynı şey Efekt Sesine de uygulanabilir. Ayrıca, ses klibinin Bit Hızı azaltılması da dosya boyutunun azaltılmasına yardımcı olur. Ses klibi kırparak bit hızı azalan, farklı biçimlerde kaydetme/düzenleme/kırpma içerir Tüm bu düzenleme işlemleri için , ben

0

Kaliteyle ilgili boyutu önemsiyorsanız, şarkıyı amr biçimine dönüştürmek isteyebilirsiniz.

İlgili konular