私は現在、アプリ内オーディオレコーディングをサポートするアプリケーションを開発中です。ユーザーは、すでに録画したオーディオファイルをローカルで保存したり、ボタンを押して新しい録画ビューに移動したりすることができます。そこから新しいオーディオセッションを録画することができます。アプリのサンドボックスに保存されます。 この機能は、ほとんどの場合よく機能します。私は、新しいファイルを記録し、アプリからそれらを再生するが、ランダムな時間にオーディオレコーダーは、この方法で録画を開始するために失敗することができます。AVAudioRecorderレコードメソッドは無作為にNOを返します
ある-(void) startRecording
{
if (!isRecording)
{
isRecording = YES;
BOOL recordingSucess = [audioRecorder record];
if (recordingSucess)
NSLog(@"WE STARTED THE RECORDING!");
else
NSLog(@"WE DID NOT START THE RECORDING!");
// Start the timer
recordTiming = [NSDate date];
timeCheck = [NSTimer scheduledTimerWithTimeInterval:1.0f target:self selector:@selector(timeCheck) userInfo:nil repeats:YES]
}
、のNSLogは、私たちは開始されませんでした」プリントアウトされます録音を開始できなかったことを示す。これにより、空のオーディオファイルが、正確に4096バイトの一定のファイルサイズでアプリに保存されます。 これは、オーディオレコーダオブジェクトが初期化されている方法です。
-(id) initWithContentURL:(NSURL *)contentURL
{
self = [super init];
if (self)
{
NSLog(@"Initializing audio recorder!");
// Specific settings for the audio recording
NSDictionary *recordSettings = [NSDictionary
dictionaryWithObjectsAndKeys:
[NSNumber numberWithInt:AVAudioQualityMin],
AVEncoderAudioQualityKey,
[NSNumber numberWithInt:8],
AVEncoderBitRateKey,
[NSNumber numberWithInt: 2],
AVNumberOfChannelsKey,
[NSNumber numberWithFloat:22000.0],
AVSampleRateKey,
nil];
NSError *error = nil;
audioRecorder = [[AVAudioRecorder alloc] initWithURL:contentURL settings:recordSettings error:&error];
audioRecorder.delegate = self;
}
もこの時点で私は初期化はしていないようことを確信しているので誤差が、ゼロであるかどうかをチェックのNSLogチェックあり失敗します。 録音方法は、ランダムな時間帯に失敗する可能性がありますが、他のほとんどの時間帯では正常に機能しますか?
私はこれを試して戻ってきます。バグがなくなることを確認するだけで十分にテストする必要があります – Luffen
これはうまくいきました、ありがとう! :) – Luffen
@Luffen嬉しいです。 4096は、準備としてディスクに書き込まれたメディアファイルのヘッダー部分だと思いますが、録音に失敗し、ファイルのデータ部分が埋められていません。 –