

こんにちは。

現在、マイク入力からaudioUnitを通ったデバイス内部の音声の録音機能を持つアプリを作りたいと考えています。  
そこでアップル社のサンプルAVCaptureToAudioUnit  
<https://developer.apple.com/library/ios/samplecode/AVCaptureToAudioUnit/Introduction/Intro.html>  
をダウンロードし、ビルドしたのですが以下のようなエラーが出て  
録音の設定や録音ファイルが再生ができません。

[code]

    AudioStreamBasicDescription:  0 ch, 0 Hz, 'lpcm' (0x0000000E) 16-bit
    signed integer
    2015-03-17 14:57:41.900 AVCaptureToAudioUnit[1618:181222] Failed to setup audio file! (29759)   
    
[/code]

このログの該当箇所はCaptureSessionController.mmの以下のメソッドです

[code]

    - (void)startRecording
    {
      if (!self.isRecording) {
        OSErr err = kAudioFileUnspecifiedError;
        @synchronized(self) {
            if (!extAudioFile) {
                /*
                 Start recording by creating an ExtAudioFile and configuring it with the same sample rate and
                 channel layout as those of the current sample buffer.*/
    
                // recording format is the format of the audio file itself
                CAStreamBasicDescription recordingFormat(currentInputASBD.mSampleRate,
                                                         currentInputASBD.mChannelsPerFrame,
                                                         CAStreamBasicDescription::kPCMFormatInt16,
                                                         true);
                recordingFormat.mFormatFlags |= kAudioFormatFlagIsBigEndian;
    
                NSLog(@"Recording Audio Format:");
                recordingFormat.Print();
    
                err = ExtAudioFileCreateWithURL(_outputFile,
                                                kAudioFileAIFFType,
                                                &recordingFormat,
                                                currentRecordingChannelLayout,
                                                kAudioFileFlags_EraseFile,
                                                &extAudioFile);
                if (noErr == err)
                    // client format is the output format from the delay unit
                    err = ExtAudioFileSetProperty(extAudioFile,
                                                  kExtAudioFileProperty_ClientDataFormat,
                                                  sizeof(graphOutputASBD),
                                                  &graphOutputASBD);
    
                if (noErr != err) {
                    if (extAudioFile) ExtAudioFileDispose(extAudioFile);
                    extAudioFile = NULL;
                }
            }
        } // @synchronized
    
        if (noErr == err) {
            self.recording = YES;
            NSLog(@"Recording Started");
        } else {
            NSLog(@"Failed to setup audio file! (%ld)", (long)err);
        }
    }
    }
    
[/code]

xcodeのバージョンは6.1でシミュレーターはiphone6で動作させています。

currentInputASBDの取り出しがうまくいってないようなので、  
同クラスのメソッド

[code]

    - (void)captureOutput:(AVCaptureOutput *)captureOutput
            didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer
            fromConnection:(AVCaptureConnection *)connection
      {
      OSStatus err = noErr;
    
      CMFormatDescriptionRef formatDescription = CMSampleBufferGetFormatDescription(sampleBuffer);
    
      CAStreamBasicDescription sampleBufferASBD(*CMAudioFormatDescriptionGetStreamBasicDescription(formatDescription));
      if (kAudioFormatLinearPCM != sampleBufferASBD.mFormatID) { NSLog(@"Bad format or bogus ASBD!");
      return; }
    
      if ((sampleBufferASBD.mChannelsPerFrame != currentInputASBD.mChannelsPerFrame) || (sampleBufferASBD.mSampleRate != currentInputASBD.mSampleRate)) {
        NSLog(@"AVCaptureAudioDataOutput Audio Format:");
    
          sampleBufferASBD.Print();
    
          currentInputASBD = sampleBufferASBD;
     ....続く
    
[/code]

のsampleBufferなる変数が取り出せていないのではないかと疑っているのですが  
その解決方法の見当がつきません。  
原因がわかる方がいましたら、教えていただけるととても助かります。  
また他にaudioUnitを通った入力を任意のurlに録音できるサンプルや方法をご存知の方からの指南も、とても助かります。  
質問に不足がたくさんあると思いますが、よろしくお願いします。


CC BY-SA 3.0
2015-03-17T07:42:56.283
8012
2015-03-17T07:42:56.283
8874
question
ios xcode
AVCaptureToAudioUnitでの"Failed to setup audio file"