AVAssetWriter と AVAssetWriterInput を使用してオーディオとビデオをファイルに記録する iOS プロジェクトに取り組んでいます。ビデオの解像度が 720x1280 に制限されている場合、すべてが正常に機能しているように見えました。私は現在、AVCaptureDeviceFormats を利用して、新しい iOS デバイスでより高い解像度を利用しようとしています。
ビデオは、デバイスで利用可能な AVCaptureDeviceFormats のいずれかを使用して引き続き正常に動作します。 ただし、オーディオは機能しません。
これをオーディオ AVCaptureConnectionのactive
プロパティまで追跡しました。これはNO
最高解像度のフォーマット用で、ログに記録すると次のようになります。
<AVCaptureConnection: 0x16f62130 [type:soun][enabled:1][active:0]>
また、オーディオ接続がアクティブでない場合、didOutputSampleBuffer
デリゲート コールバックがオーディオ データで呼び出されません。
私の質問:
- オーディオの AVCaptureConnection が低解像度のフォーマットではアクティブになるのに、最高の解像度のフォーマットではアクティブにならないのはなぜですか?
- ビデオの解像度を最高に設定すると、オーディオを録音できますか? もしそうなら、どのように?
例:
iPhone6 の背面カメラで最高解像度の AVCaptureFormats:
- 720x1280、30 FPS (オーディオ接続が有効)
- 720x1280、240 FPS (オーディオ接続が有効)
- 1080x1920、30 FPS (オーディオ接続がアクティブ)
- 1080x1920、60 FPS (オーディオ接続がアクティブ)
- 1936x2592、30 FPS (オーディオ接続がアクティブでない)
- 2448x3264、30 FPS (オーディオ接続はアクティブではありません)
iPhone6 の前面カメラで最高解像度の AVCaptureFormats:
- 720x1280、60 FPS (オーディオ接続がアクティブ)
- 960x1280、60 FPS (オーディオ接続がアクティブでない)
アクティブなフォーマットを設定するために使用しているコードは次のとおりです。
if ([self.camera lockForConfiguration:nil])
{
self.camera.activeFormat = format;
[self.camera unlockForConfiguration];
}