gpt4 book ai didi

ios - 如何在 IOS 中减小音频文件的大小

转载 作者:可可西里 更新时间:2023-11-01 03:59:34 25 4
gpt4 key购买 nike

我正在做一个从 mediapicker 获取歌曲并将其保存到我的应用程序的应用程序。我想减小文件的大小,但我得到了一个名为“AACConverter”的示例,我测试了该应用程序但它没有减少文件size.谁能帮我解决这个问题。

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

最佳答案

有多种方法可以解决这个问题。如果你想让音频在后台播放,你可以使用

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

通过使用它,您可以使用尺寸较小的小音频剪辑,并循环播放。同样的事情也可以应用于效果音频。

除此之外,降低音频剪辑的比特率也有助于减小文件的大小。对于所有这些编辑操作,包括编辑/剪辑/修剪声音片段、降低比特率、以不同格式保存,我建议您使用

Audacity (开源、免费)

关于ios - 如何在 IOS 中减小音频文件的大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11226595/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com