2016-06-29 7 views
5

मैं वर्तमान में एक वीडियो कैमरा एक AVCaptureVideoDataOutput जिसका नमूना बफर प्रतिनिधि जैसे कार्यान्वित किया जाता है के साथ सेट अप है:एनिमेटेड UIView ओवरले के साथ कैमरे से वीडियो रिकॉर्डिंग

- (void)captureOutput:(AVCaptureOutput *)captureOutput 
didOutputSampleBuffer:(CMSampleBufferRef)sampleBuffer 
     fromConnection:(AVCaptureConnection *)connection 
{ 
    NSArray *detectedFaces = [self detectFacesFromSampleBuffer:sampleBuffer]; 
    [self animateViewsForFaces:detectedFaces]; 
} 

नमूना बफर है संसाधित और किसी भी चेहरों का पता लगाया जाता है, उनकी सीमा AVCaptureVideoPreviewLayer पर विचार के रूप में दिखाई देती है जो लाइव वीडियो आउटपुट (चेहरे पर आयताकार) प्रदर्शित कर रही है। विचार एनिमेटेड हैं ताकि वे फेस डिटेक्ट्स के बीच आसानी से आगे बढ़ सकें। क्या किसी भी तरह से पूर्वावलोकन परत में जो दिखाया गया है उसे रिकॉर्ड करना संभव है और इसे एनिमेटेड UIView एस के साथ विलय कर रहा है जो इसे ओवरले कर रहा है, अंत परिणाम एक वीडियो फ़ाइल है?

+0

इस के साथ कोई भाग्य? – Roshit

उत्तर

1

आम तौर पर, आप वीडियो स्ट्रीम बनाने के लिए निम्न-स्तरीय दृष्टिकोण का उपयोग कर सकते हैं, फिर उसे फ़ाइल में लिख सकते हैं। मैं वीडियो प्रारूपों, कोडेक्स आदि के साथ एक विशेषज्ञ नहीं हूं, लेकिन दृष्टिकोण है:

- प्रत्येक फ्रेम स्क्रीन को दोबारा निकालने के लिए CADisplayLink सेट करें। हो सकता है कि लक्ष्य वीडियो फ्रेम दर को ~ 30 एफपीएस तक कम करने के लिए फ्रेम अंतराल को 2 पर सेट करना अच्छा निर्णय हो।

- प्रत्येक बार स्क्रीन रीडाव पूर्वावलोकन परत और ओवरले के snapshot लेते हैं।

- प्रक्रिया एकत्रित छवियां: एक फ्रेम की प्रत्येक दो छवियों को ज़िप करें, फिर विलयित फ्रेम के अनुक्रम से वीडियो स्ट्रीम करें। मुझे लगता है कि, आईओएस ने ऐसा करने के लिए कम या कम सरल तरीके के लिए अंतर्निहित टूल्स हैं।

बेशक, संकल्प और गुणवत्ता परतों के मानकों को बाध्य करती है। यदि आपको कैमरे से कच्ची वीडियो स्ट्रीम की आवश्यकता है, तो आपको इस स्ट्रीम को कैप्चर करना चाहिए और फिर अपने ओवरले डेटा को सीधे उस वीडियो फ्रेम में खींचें जिसे आपने कैप्चर किया था।

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