0

AVAudioRecorder を使用してオーディオを録音し、現在 10 秒間録音しています。オーディオは正常に録音され、ローカル ディレクトリに保存されました。10 秒間のオーディオは 1.8 MB のメモリを必要とするため、このオーディオ ファイル メモリを削減するにはどうすればよいですか?.i以下のコードを使用してオーディオを録音しています。

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

どんな答えも高く評価されるべきです。

4

1 に答える 1

0

はい、recordSettings perametersを次のように使用して、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;

} * /

于 2013-03-18T05:41:15.543 に答える