0

AVAudioRecorder と AVAudioPlayer を使用するアプリがあります。録音と再生は問題ありませんが、1 分前後で録音が途切れることがあります。これは常に発生するわけではなく、発生した場合でも、録音しているように動作します (audioRecorderEncodeErrorDidOccur は呼び出されず、ユーザーが録音を停止すると audioRecorderDidFinishRecording が呼び出されます)。ただし、サウンド ファイル自体は 1 分未満で切り捨てられます。

これが私が使用しているエンコーディングです(soundFileURLはappsdocdir/somethingrandom.m4aです。ファイルとファイル名は適切に作成されます):

NSDictionary *recordSetting = [[NSMutableDictionary alloc] init];
[recordSetting setValue:[NSNumber numberWithInt:kAudioFormatAppleLossless] forKey:AVFormatIDKey];
[recordSetting setValue:[NSNumber numberWithFloat:44100.0] forKey:AVSampleRateKey];
[recordSetting setValue:[NSNumber numberWithInt: 2] forKey:AVNumberOfChannelsKey];
[recordSetting setValue:[NSNumber numberWithInt:16] forKey:AVLinearPCMBitDepthKey];
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsBigEndianKey];
[recordSetting setValue:[NSNumber numberWithBool:NO] forKey:AVLinearPCMIsFloatKey];

NSError *error = nil;
self->audioRecorder = nil;
audioRecorder = [[AVAudioRecorder alloc]
                 initWithURL:soundFileURL
                 settings:recordSetting
                 error:&error];

if (error)
{
    NSLog(@"error: %@", [error localizedDescription]);

} else {
    audioRecorder.delegate = self;
    [audioRecorder prepareToRecord];
    audioRecorder.meteringEnabled = YES;
}

デバイスログを見ると、次のように表示されるため、エンコードの問題だと思います。

5 月 10 日 10:17:23 t-iPhone mediaserverd[39]: 10:17:23.451 <0x282f000> AudioConverterNew が -50 を返しました

5 月 10 日 10:17:23 t-iPhone mediaserverd[39]: 10:17:23.453 <0x282f000> IO_ChangeIOFormat: エラー -50

5 月 10 日 10:17:23 t-iPhone mediaserverd[39]: 10:17:23.463 <0x282f000> Queue_ChangeIOFormat: 失敗しました (-50)

編集:soundFileURLとは何かと尋ねられました。上記で簡単に説明しましたが、実際のコードは次のとおりです。記録後、ファイルとファイル名はすべて正しく表示されます。

NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
[formatter setDateFormat:@"MMMMdyyyyA"];
NSString *recordDate = [formatter stringFromDate:[NSDate date]];

filename = [[NSString alloc] initWithFormat:@"%d-%@.m4a", idNumber, recordDate];
NSArray *dirPaths;
NSString *docsDir;

dirPaths = NSSearchPathForDirectoriesInDomains(
                                               NSDocumentDirectory, NSUserDomainMask, YES);
docsDir = [dirPaths objectAtIndex:0];
NSString *soundFilePath = [docsDir
                           stringByAppendingPathComponent:filename];
soundFileURL = [NSURL fileURLWithPath:soundFilePath];
4

1 に答える 1

0

I figured it out. The problem was the phone going to sleep. It would cut out any audio from when it was asleep to when it came out of the lock screen. I fixed by adding UIBackgroundModes -> audio to the info.plist file:

http://developer.apple.com/library/ios/#documentation/general/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html

于 2013-05-10T22:48:11.627 に答える