2012-12-03 7 views
11

AVCaptureSessionとAVCaptureMovieFileOutputでムービーを録画しています。私はまた、加速度データを記録しており、加速度データをビデオに合わせようとしています。AVCaptureSessionとAVCaptureMovieFileOutputフレームのタイムスタンプ

ビデオファイルの録画が開始された時間を取得する方法を見つけようとしています。私は、次のことをやっている:startRecordingToOutputFileURLへの呼び出しが行われる前に

currentDate = [NSDate date]; 
[output startRecordingToOutputFileURL:fileUrl recordingDelegate:self]; 

はしかし、私のテストによると、ビデオ録画は0.12秒を開始します。私はこれは、さまざまなビデオバッファが既にファイルに追加されるデータでいっぱいですと仮定しています。

動画の最初のフレームの実際のNSDateを取得するにはどうしますか?

+0

NSTimerで試してみましたか? – kumar

+0

生のフレームサンプルデータをキャプチャするように出力チャンネルを設定すると、各フレームのタイムスタンプにアクセスできます。しかし、AVCaptureSessionをムービー出力と生フレームサンプルデータの両方で設定することはできませんでした。そのため、ムービーファイルで最初に記録されたフレームの正確なタイムスタンプを取得する方法はわかりません。 – algal

+0

私はあなたにいくつかのヒントを与えていますが、本当の答えはありません。 AVFoundationはたくさんのKVOを使用するあなたは "リアルタイム"でプロパティが変更されていないことは確かですか?ムービーファイルのAVItemMetadatasを印刷しようとしましたか? – Andrea

答えて

0

質問が正しく表示されたら、最初のフレームが記録されたときのタイムスタンプを知りたいと思っています。あなたは試すことができる

CMTime captureStartTime = nil; 

- (void)captureOutput:(AVCaptureOutput *)captureOutput didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer fromConnection:(AVCaptureConnection *)connection { 

     if !captureStartTime{ 
     captureStartTime = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); 
     } 
    // do the other things you want 
} 
+0

これを試してみると、ムービーファイルの出力をキャプチャできませんでした。サンプルバッファのタイムスタンプとムービーファイルの両方をキャプチャする実例がありますか? – algal

関連する問題