2014-10-28 5 views
10

के साथ आईओएस 8 में एच 264 डीकोड करते समय मेरे पास एनेक्स बी प्रारूप में एच 264 स्ट्रीम है और आईओएस 8 वीडियो टूलबॉक्स के साथ एच 264 डिकोडिंग लागू करने के लिए इस लिंक का पालन करें hereत्रुटि कोड -8969, -12 9 0 9 वीडियो टूल बॉक्स

मैं हर कदम में OSStatus की जाँच करें।

एसपीएस और पी पी एस डेटा के साथ
  1. उपयोग CMVideoFormatDescriptionCreateFromH264ParameterSets एक CMFormatDescription बनाने के लिए। (स्थिति == noErr)

  2. एक VTDecompressionSession VTDecompressionSessionCreate का उपयोग कर बना सकते हैं। (स्थिति == noErr)

  3. कब्जा एक CMBlockBuffer में NALUnit पेलोड
    एक बाइट लंबाई कोड के साथ शुरू कोड को बदलने के लिए सुनिश्चित करें। (स्थिति == noErr)

  4. एक CMSampleBuffer पैदा करते हैं। (स्थिति == noErr)

  5. उपयोग VTDecompressionSessionDecodeFrame और (सिम्युलेटर) त्रुटि कोड -8969 मिलता है, -12,909 (डिवाइस) कॉलबैक फ़ंक्शन में।

मुझे शक है मैं चरण 3 में कुछ गलत किया है, मैं यकीन है कि क्या लंबाई कोड का मतलब है नहीं कर रहा हूँ। मैं सिर्फ डब्ल्यूडब्ल्यूडीसी सत्र वीडियो का पालन करता हूं हर NALUnit स्टार्ट कोड 00 00 00 01 से 00 00 80 00 को प्रतिस्थापित करता है। क्या यह सही है या नहीं? या मुझे कुछ और जांचना चाहिए ?? धन्यवाद

उत्तर

13

अंत में, यह अब काम मिल गया। तो, मैं विस्तार से साझा करता हूं कि स्क्रीन पर दिखाने से h.264 स्ट्रीम डेटा को डीकोड करने के लिए वीडियो टूलबॉक्स का उपयोग कैसे करें।

  1. एसपीएस, पीपीएस फॉर्म एच .264 स्ट्रीम डेटा प्राप्त करें।
  2. CMVideoFormatDescriptionCreateFromH264ParameterSets का उपयोग करके CMFormatDescription पैदा करते हैं।
  3. VTDecompressionSessionCreate का उपयोग करके VTDecompression सत्र बनायें।
  4. एक CMBlockBuffer में NALUnit पेलोड प्राप्त करें।
  5. 4 बाइट लंबाई कोड के साथ प्रारंभ कोड को प्रतिस्थापित करें। (पुनश्च: लंबाई = NALUnit लंबाई - कोड लंबाई शुरू)
  6. CMSampleBufferCreate का उपयोग करके एक CMSampleBuffer पैदा करते हैं।
  7. उपयोग VTDecompressionSessionDecodeFrame और कॉलबैक से परिणाम मिलता है।

तब, आपको फ्रेम डिकोडिंग और प्रदर्शन को नियंत्रित करने के लिए dispatch_semaphore_t का उपयोग करना होगा। मैं sample project on my git अपलोड करता हूं। किसी और की मदद करने की उम्मीद है।

+2

धन्यवाद! आपके कोड को देखते हुए मुझे एहसास हुआ कि मैं एनयूएल लंबाई कोड को बाइट-स्वैप नहीं कर रहा था। यह बड़े एंडियन प्रारूप में होना चाहिए। – 12on

+2

लिंक टूटा हुआ है। क्या आपके पास कहीं और VideoToolboxDemo अपलोड किया गया है। यह वही है जो मैं करने की कोशिश कर रहा हूं और मैं संघर्ष कर रहा हूं। – ddelnano

+0

क्या कोई ऊपर चरण 4 और 5 के लिए कुछ कोड प्रदान कर सकता है? मैं इस पर फंस गया हूं और समाधान नहीं ढूंढ सकता ... – FormigaNinja

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