2012-11-10 20 views
6

मैं एवी कैप्चर सत्र के अंदर हूं और मुझे कब्जा कर लिया गया फ्रेम की संख्या जानने की आवश्यकता है।AVCaptureSession सटीक समय टिकट जब फ्रेम को पकड़ लिया जाता है

जब कैप्चर शुरू होता है, तो मैं फ्रेम संख्या काउंटर को शून्य पर रीसेट कर दूंगा। तो, पहले फ्रेम का टाइमस्टैम्प शून्य होगा। इसके बाद फ्रेम उदाहरण के लिए इस तरह कब्जा टाइम स्टांप होगा,:

0 
0.033 
0.066 
0.099 
etc 

लेकिन इन सटीक संख्या, नहीं कर रहे हैं क्योंकि फ्रेम छोड़ा जा सकता है और मामूली अंतर हो सकता है। जब फ्रेम पर कब्जा कर लिया गया तो मुझे सही समय पता होना चाहिए।

मैं इस पद्धति है कि हर बार एक फ्रेम पकड़ लिया है कहा जाता है ...

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

इस विधि के अंदर मैं एक फ्रेम के CMTime प्राप्त करें और का उपयोग कर कंसोल के लिए इसे प्रिंट कर सकते हैं:

CMTime timestamp = CMSampleBufferGetPresentationTimeStamp(sampleBuffer); 
NSLog(@"%lld", timestamp.value); 

लेकिन यह मुझे दे देंगे की तरह

156317265588132 
156317307247388 
156317348909678 
156317390573453 
156317432230603 

एक संख्या के बीच का अंतर जंगली संख्या बियर और अगला 41,65 9, 256 है जो फ्रेम को पकड़ने पर दशमलव स्थानों के साथ सेकंड में एक समय का प्रतिनिधित्व नहीं करता है।

अगर मैं timescale द्वारा इस संख्या को विभाजित,

NSLog(@"%lld", timestamp.value/timestamp.timescale); 

नंबर का उपयोग कर 25 फ्रेम के लिए ही होगा और जब एक पूर्ण दूसरे तक पहुँच जाता है केवल बदल जाएगा।

फ्रेम को पकड़ने पर दशमलव स्थानों के साथ सेकंड में सटीक समय टिकट कैसे प्राप्त किया जा सकता है? धन्यवाद।

+0

मैं इस, मूल्य पाने की कोशिश की है, लेकिन यह मुझे एक गलत मान नहीं दिया वर्तमान टाइमस्टैम्प –

+1

CMTimeGetSeconds (टाइमस्टैम्प) – Sten

उत्तर

8

यदि मैं टाइम्सस्केल द्वारा इस संख्या को विभाजित करता हूं, तो संख्या 25 फ्रेम के लिए समान होगी और पूर्ण सेकेंड तक पहुंचने पर ही बदल जाएगा।

क्योंकि पूर्णांक विभाजन छंटनी करता है। कैसे

के बारे में
NSLog(@"%f", (float)timestamp.value/timestamp.timescale); 
+1

मैं इस, मूल्य पाने की कोशिश की है, लेकिन यह मुझे एक गलत मान नहीं दिया वर्तमान टाइमस्टैम्प –

संबंधित मुद्दे