2013-01-07 8 views
6

हम और AVAssetWriter का उपयोग शैली में कुछ हद तक कर रहे हैं जैसा कि Video Encoding using AVAssetWriter - CRASHES में देखा गया है, मूल रूप से फोटो गैलरी/एसेट लाइब्रेरी से हमें जो वीडियो मिला है उसे पढ़ने के लिए और उसके आकार को कम करने के लिए इसे अलग-अलग बिट दर पर लिखना (अंतिम नेटवर्क अपलोड के लिए)।AVAssetReader के उपयोग के लिए पिक्सेल प्रारूप प्रकार (केसीवी पिक्सेलबफर पिक्सेलफॉर्मैट टाइपपेकी) का चयन कैसे करें?

NSDictionary *outputSettings = [NSDictionary 
    dictionaryWithObject:[NSNumber numberWithInt:kCVPixelFormatType_32BGRA] 
        forKey:(id)kCVPixelBufferPixelFormatTypeKey];  
readerTrackOutput = 
    [[AVAssetReaderTrackOutput alloc] initWithTrack:src_track 
            outputSettings:outputSettings]; 

तो बुनियादी तौर पर हम kCVPixelBufferPixelFormatTypeKey कुंजी के लिए kCVPixelFormatType_32BGRA मान का उपयोग किया:

हमारे लिए काम करने के लिए इस प्राप्त करने के लिए चाल कुछ इस तरह AVAssetReaderTrackOutput पर एक kCVPixelBufferPixelFormatTypeKey कुंजी और outputSettings में मूल्य निर्दिष्ट करने के लिए, था।

लेकिन जाहिर है कि कई संभावित पिक्सेल प्रारूप प्रकार हैं जिन्हें हम चुन सकते हैं। कोड Technical Q&A QA1501: Core Video - Available Pixel Formats एक iOS 6.0.1 iPhone डिवाइस पर में नोट चल रहा है, यहाँ समर्थन पिक्सेल प्रारूप प्रकार की सूची है कि यह पता चलता है:

Core Video Supported Pixel Format Types: 
Core Video Pixel Format Type: 32 
Core Video Pixel Format Type: 24 
Core Video Pixel Format Type: 16 
Core Video Pixel Format Type (FourCC): L565 
Core Video Pixel Format Type (FourCC): 2vuy 
Core Video Pixel Format Type (FourCC): yuvs 
Core Video Pixel Format Type (FourCC): yuvf 
Core Video Pixel Format Type: 40 
Core Video Pixel Format Type (FourCC): L008 
Core Video Pixel Format Type (FourCC): 2C08 
Core Video Pixel Format Type (FourCC): r408 
Core Video Pixel Format Type (FourCC): v408 
Core Video Pixel Format Type (FourCC): y408 
Core Video Pixel Format Type (FourCC): y416 
Core Video Pixel Format Type (FourCC): BGRA 
Core Video Pixel Format Type (FourCC): b64a 
Core Video Pixel Format Type (FourCC): b48r 
Core Video Pixel Format Type (FourCC): b32a 
Core Video Pixel Format Type (FourCC): b16g 
Core Video Pixel Format Type (FourCC): R10k 
Core Video Pixel Format Type (FourCC): v308 
Core Video Pixel Format Type (FourCC): v216 
Core Video Pixel Format Type (FourCC): v210 
Core Video Pixel Format Type (FourCC): v410 
Core Video Pixel Format Type (FourCC): r4fl 
Core Video Pixel Format Type (FourCC): grb4 
Core Video Pixel Format Type (FourCC): rgg4 
Core Video Pixel Format Type (FourCC): bgg4 
Core Video Pixel Format Type (FourCC): gbr4 
Core Video Pixel Format Type (FourCC): 420v 
Core Video Pixel Format Type (FourCC): 420f 
Core Video Pixel Format Type (FourCC): 411v 
Core Video Pixel Format Type (FourCC): 411f 
Core Video Pixel Format Type (FourCC): 422v 
Core Video Pixel Format Type (FourCC): 422f 
Core Video Pixel Format Type (FourCC): 444v 
Core Video Pixel Format Type (FourCC): 444f 
Core Video Pixel Format Type (FourCC): y420 
Core Video Pixel Format Type (FourCC): f420 
Core Video Pixel Format Type (FourCC): a2vy 
Core Video Pixel Format Type (FourCC): L00h 
Core Video Pixel Format Type (FourCC): L00f 
Core Video Pixel Format Type (FourCC): 2C0h 
Core Video Pixel Format Type (FourCC): 2C0f 
Core Video Pixel Format Type (FourCC): RGhA 
Core Video Pixel Format Type (FourCC): RGfA 

भी kCVPixelFormatType_32BGRA हालांकि (कम से कम प्रतीत होता है) हमारे लिए काम किया है, हम के रूप में उत्सुक हैं क्या उपर्युक्त सूची से बेहतर विकल्प है या नहीं। हमें सही पिक्सेल प्रारूप प्रकार को चुनने के बारे में हमें कैसे जाना चाहिए?

+0

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

उत्तर

1

आप विभिन्न सेटिंग्स के साथ प्रयोग कर सकते हैं और perfomance की तुलना कर सकते हैं। विभिन्न पिक्सेल प्रारूपों में एन्कोडर को बफर प्रदान करने से परिणामस्वरूप एन्कोडिंग परफॉर्मेंस में अंतर हो सकता है। हार्डवेयर त्वरित एन्कोडर्स अक्सर "420v" का उपयोग कर रहे हैं।

, यह भी देखें Query for optimal pixel format when capturing video on iOS?

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