ios - तरह - मैं डॉन-टी आप समझ



CMTime को समझने की कोशिश करना (1)

मैंने CMTime (तीन अलग-अलग लिंक) के कुछ examples देखे examples , लेकिन मुझे अभी भी यह नहीं मिला है। मैं AVCaptureVideoDataOutput के साथ एक AVCaptureSession का उपयोग कर रहा हूं और मैं आउटपुट का अधिकतम और न्यूनतम फ्रेम दर सेट करना चाहता हूं। मेरी समस्या यह है कि मैं सिर्फ CMTime संरचना को नहीं समझता।

जाहिरा तौर पर CMTimeMake (मूल्य, timeScale) मुझे हर 1 / timeScale सेकंड के मूल्य मानों को कुल मूल्य / timeScale सेकंड के लिए देना चाहिए, या क्या मैं गलत हो रहा हूं?

ऐसा क्यों है, यह समझाने के लिए इसे कहीं भी प्रलेखित नहीं किया गया है?

अगर यह वास्तव में इस तरह से काम करता है, तो मुझे इसे अनिश्चित संख्या में फ़्रेम कैसे मिलेगा?

यदि यह वास्तव में सरल है, तो मुझे क्षमा करें, लेकिन अभी तक कुछ भी क्लिक नहीं किया गया है।


Answer #1

एक CMTime संरचना उस समय की लंबाई का प्रतिनिधित्व करती है जिसे तर्कसंगत संख्या ( CMTime संदर्भ देखें) के रूप में संग्रहीत किया जाता है। CMTime का एक value और एक timescale क्षेत्र फ़ील्ड है, और समय value/timescale seconds प्रतिनिधित्व करता है।

CMTimeMake एक फ़ंक्शन है जो उदाहरण के लिए CMTime संरचना लौटाता है:

CMTime t1 = CMTimeMake(1, 10); // 1/10 second = 0.1 second
CMTime t2 = CMTimeMake(2, 1);  // 2 seconds
CMTime t3 = CMTimeMake(3, 4);  // 3/4 second = 0.75 second
CMTime t4 = CMTimeMake(6, 8);  // 6/8 second = 0.75 second

अंतिम दो समय मान t3 और t4 एक ही समय मान का प्रतिनिधित्व करते हैं, इसलिए

CMTimeCompare(t3, t4) == 0

यदि आप एक AVCaptureSession के videoMinFrameDuration को सेट करते हैं, तो यदि आप सेट करते हैं तो इससे कोई फर्क नहीं पड़ता

connection.videoMinFrameDuration = CMTimeMake(1, 20); // or
connection.videoMinFrameDuration = CMTimeMake(2, 40);

दोनों ही मामलों में फ्रेम के बीच न्यूनतम समय अंतराल 1/20 = 0.05 सेकंड के लिए निर्धारित है।





cmtime