我正在使用AVAudioRecorder录制音频,目前录制音频10秒,音频被成功录制,保存在本地目录中,现在音频持续10秒占用1.8 MB内存,如何减少音频文件内存?。我正在使用以下代码录制音频。
-(void)viewWillAppear:(BOOL)animated{
NSArray *dirPaths;
NSString *docsDir;
dirPaths = NSSearchPathForDirectoriesInDomains(NSCachesDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
NSString *soundFilePath = [docsDir stringByAppendingPathComponent:@"sound.caf"];
path_audio = soundFilePath;
NSURL *soundFileURL = [NSURL fileURLWithPath:soundFilePath];
NSDictionary *recordSettings = [NSDictionary dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:AVAudioQualityMin],AVEncoderAudioQualityKey,
[NSNumber numberWithInt:16],AVEncoderBitRateKey,
[NSNumber numberWithInt: 2],AVNumberOfChannelsKey,
[NSNumber numberWithFloat:44100.0],AVSampleRateKey,nil];
NSError *error = nil;
audioRecorder = [[AVAudioRecorder alloc]initWithURL:soundFileURL settings:recordSettings error:&error];
if( !audioRecorder ){
NSLog(@"recorder: %@ %d %@", [error domain], [error code], [[error userInfo] description]);
UIAlertView *alert =
[[UIAlertView alloc] initWithTitle: @"Warning" message: [error localizedDescription] delegate: nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alert show];
return;
}
if ( error )
{
NSLog( @"error: %@", [error localizedDescription] );
}
else {
[self recordAudio];
}
}
-(void) recordAudio
{
if (!audioRecorder.recording)
{
audioRecorder.delegate=self;
[audioRecorder recordForDuration:10];
}
}
任何答案都应该受到赞赏。
答案 0 :(得分:0)
是的,我把记录设置的参数减少到了33kb,
NSDictionary *recordSettings =
[[NSDictionary alloc] initWithObjectsAndKeys:
[NSNumber numberWithFloat: 44100.0], AVSampleRateKey,
[NSNumber numberWithInt: kAudioFormatMPEG4AAC], AVFormatIDKey,
[NSNumber numberWithInt: 1], AVNumberOfChannelsKey,
[NSNumber numberWithInt: AVAudioQualityMedium],AVEncoderAudioQualityKey,
nil];
//为了我的目的..
/ *
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
NSInteger imageCount = [self.array_HotelImage count] / 4;
return([self.array_HotelImage count]%4 == 0)?imageCount:imageCount + 1; }
//自定义表格视图单元格的外观。
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"ImageGalleryCustomCell";
ImageGalleryCustomCell *objImageGalleryCustomCell = (ImageGalleryCustomCell*)[tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if(objImageGalleryCustomCell == nil)
{
NSArray *topLevelObjects = [[NSBundle mainBundle] loadNibNamed:@"ImageGalleryCustomCell" owner:self options:nil];
for (id currentObject in topLevelObjects)
{
if ([currentObject isKindOfClass:[UITableViewCell class]])
{
objImageGalleryCustomCell = (ImageGalleryCustomCell *) currentObject;
break;
}
}
objImageGalleryCustomCell = [self hideAndShowControlWithData:objImageGalleryCustomCell andIndexpath:indexPath];
}
return objImageGalleryCustomCell;
}
- (ImageGalleryCustomCell*)hideAndShowControlWithData:(ImageGalleryCustomCell*)objImageGalleryCustomCell andIndexpath:(NSIndexPath*)indexPathValue
{
int imageCount = [self.array_HotelImage count];
if(indexPathValue.row==imageCount/4)
{
switch(imageCount%4)
{
case 1:
{
objImageGalleryCustomCell.buttonImgGalleryView1.hidden = objImageGalleryCustomCell.imgGalleryView1.hidden = NO;
objImageGalleryCustomCell.buttonImgGalleryView2.hidden = objImageGalleryCustomCell.buttonImgGalleryView4.hidden = objImageGalleryCustomCell.buttonImgGalleryView3.hidden = objImageGalleryCustomCell.imgGalleryView2.hidden= objImageGalleryCustomCell.imgGalleryView3.hidden = objImageGalleryCustomCell.imgGalleryView4.hidden = YES;
objImageGalleryCustomCell.buttonImgGalleryView1.tag = (indexPathValue.row*4+0);
[objImageGalleryCustomCell.imgGalleryView1 setImageWithURL:[NSURL URLWithString:[self.array_HotelImage objectAtIndex:(indexPathValue.row*4+0)]] placeholderImage:placholderImage];
objImageGalleryCustomCell.buttonImgGalleryView1.tag = (indexPathValue.row*4+0);
}
break;
case 2:
{
objImageGalleryCustomCell.buttonImgGalleryView1.hidden = objImageGalleryCustomCell.buttonImgGalleryView2.hidden=objImageGalleryCustomCell.imgGalleryView1.hidden=objImageGalleryCustomCell.imgGalleryView2.hidden=NO;
objImageGalleryCustomCell.buttonImgGalleryView3.hidden = objImageGalleryCustomCell.buttonImgGalleryView4.hidden = objImageGalleryCustomCell.imgGalleryView3.hidden = objImageGalleryCustomCell.imgGalleryView4.hidden=YES;
objImageGalleryCustomCell.buttonImgGalleryView1.tag = (indexPathValue.row*4+0);
[objImageGalleryCustomCell.imgGalleryView1 setImageWithURL:[NSURL URLWithString:[self.array_HotelImage objectAtIndex:(indexPathValue.row*4+0)]] placeholderImage:placholderImage ];
objImageGalleryCustomCell.buttonImgGalleryView2.tag = (indexPathValue.row*4+1);
[objImageGalleryCustomCell.imgGalleryView2 setImageWithURL:[NSURL URLWithString:[self.array_HotelImage objectAtIndex:(indexPathValue.row*4+1)]] placeholderImage:placholderImage];
}
break;
case 3:
{
objImageGalleryCustomCell.buttonImgGalleryView1.hidden = objImageGalleryCustomCell.buttonImgGalleryView2.hidden= objImageGalleryCustomCell.imgGalleryView1.hidden=objImageGalleryCustomCell.imgGalleryView2.hidden=objImageGalleryCustomCell.buttonImgGalleryView3.hidden = objImageGalleryCustomCell.imgGalleryView3.hidden = NO;
objImageGalleryCustomCell.buttonImgGalleryView4.hidden =objImageGalleryCustomCell.imgGalleryView4.hidden = YES;
objImageGalleryCustomCell.buttonImgGalleryView1.tag = (indexPathValue.row*4+0);
[objImageGalleryCustomCell.imgGalleryView1 setImageWithURL:[NSURL URLWithString:[self.array_HotelImage objectAtIndex:(indexPathValue.row*4+0)]] placeholderImage:placholderImage];
objImageGalleryCustomCell.buttonImgGalleryView2.tag = (indexPathValue.row*4+1);
[objImageGalleryCustomCell.imgGalleryView2 setImageWithURL:[NSURL URLWithString:[self.array_HotelImage objectAtIndex:(indexPathValue.row*4+1)]] placeholderImage:placholderImage];
objImageGalleryCustomCell.buttonImgGalleryView3.tag = (indexPathValue.row*4+2);
[objImageGalleryCustomCell.imgGalleryView3 setImageWithURL:[NSURL URLWithString:[self.array_HotelImage objectAtIndex:(indexPathValue.row*4+2)]] placeholderImage:placholderImage];
}
break;
}
}
else
{
objImageGalleryCustomCell.buttonImgGalleryView1.tag = (indexPathValue.row*4+0);
[objImageGalleryCustomCell.imgGalleryView1 setImageWithURL:[NSURL URLWithString:[self.array_HotelImage objectAtIndex:(indexPathValue.row*4+0)]] placeholderImage:placholderImage];
objImageGalleryCustomCell.buttonImgGalleryView2.tag = (indexPathValue.row*4+1);
[objImageGalleryCustomCell.imgGalleryView2 setImageWithURL:[NSURL URLWithString:[self.array_HotelImage objectAtIndex:(indexPathValue.row*4+1)]] placeholderImage:placholderImage];
objImageGalleryCustomCell.buttonImgGalleryView3.tag = (indexPathValue.row*4+2);
[objImageGalleryCustomCell.imgGalleryView3 setImageWithURL:[NSURL URLWithString:[self.array_HotelImage objectAtIndex:(indexPathValue.row*4+2)]] placeholderImage:placholderImage];
objImageGalleryCustomCell.buttonImgGalleryView4.tag = (indexPathValue.row*4+3);
[objImageGalleryCustomCell.imgGalleryView4 setImageWithURL:[NSURL URLWithString:[self.array_HotelImage objectAtIndex:(indexPathValue.row*4+3)]] placeholderImage:placholderImage];
}
[objImageGalleryCustomCell.buttonImgGalleryView1 addTarget:self action:@selector(buttonImageClicked:) forControlEvents:UIControlEventTouchUpInside];
[objImageGalleryCustomCell.buttonImgGalleryView2 addTarget:self action:@selector(buttonImageClicked:) forControlEvents:UIControlEventTouchUpInside];
[objImageGalleryCustomCell.buttonImgGalleryView3 addTarget:self action:@selector(buttonImageClicked:) forControlEvents:UIControlEventTouchUpInside];
[objImageGalleryCustomCell.buttonImgGalleryView4 addTarget:self action:@selector(buttonImageClicked:) forControlEvents:UIControlEventTouchUpInside];
return objImageGalleryCustomCell;
} * /