2012-12-03 38 views
11

मैं AVCaptureSession और AVCaptureMovieFileOutput के साथ एक मूवी रिकॉर्ड कर रहा हूं। मैं त्वरण डेटा रिकॉर्ड कर रहा हूं और वीडियो के साथ त्वरण डेटा को संरेखित करने की कोशिश कर रहा हूं।AVCaptureSession और AVCaptureMovieFileOutput फ्रेम टाइमस्टैम्प

मैं वीडियो फ़ाइल रिकॉर्डिंग शुरू करने का समय निकालने का प्रयास करने की कोशिश कर रहा हूं। मैं निम्नलिखित कर रहा हूँ:

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

लेकिन, मेरा परीक्षण के अनुसार, वीडियो रिकॉर्डिंग 0.12 सेकंड शुरू होता है से पहले startRecordingToOutputFileURL करने के लिए कॉल किया जाता है। मुझे लगता है कि ऐसा इसलिए है क्योंकि विभिन्न वीडियो बफर पहले से ही डेटा से भरे हुए हैं जो फ़ाइल में जोड़े जाते हैं।

क्या वीडियो के पहले फ्रेम के वास्तविक एनएसडीएट को पाने के लिए वैसे भी है?

+0

क्या आपने एनएसटीमर के साथ प्रयास किया है? – kumar

+0

यदि आप कच्चे फ्रेम नमूना डेटा को कैप्चर करने के लिए आउटपुट चैनल सेट करते हैं, तो आप प्रत्येक फ्रेम के टाइमस्टैम्प तक पहुंच सकते हैं। लेकिन मैं मूवी आउटपुट और कच्चे फ्रेम नमूना डेटा दोनों के साथ AVCaptureSession को कॉन्फ़िगर करने में सक्षम नहीं हूं, इसलिए मुझे नहीं पता कि मूवी फ़ाइल में पहले दर्ज फ्रेम के सटीक टाइमस्टैम्प को कैसे प्राप्त किया जाए। – algal

+0

मैं आपको कुछ संकेत दे रहा हूं लेकिन मेरे पास असली जवाब नहीं है। AVFoundation बहुत सारे केवीओ का उपयोग करता है क्या आप वाकई "वास्तविक समय" में कोई गुण नहीं बदलते हैं? क्या आपने फिल्म फ़ाइल के 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