2013-02-21 89 views
28

का उपयोग कर H.264 फ्रेम डीकोड करते हैं तो मुझे H.264 आधारित SIP वीडियो कॉल के दूरस्थ अंत से प्राप्त H.264 फ्रेम को डीकोड करते समय निम्न त्रुटियां मिल रही हैं। त्रुटियों को समझने में किसी भी मदद की सराहना करें।त्रुटियां जब ffmpeg

non-existing PPS 0 referenced 
decode_slice_header error 
non-existing PPS 0 referenced 
decode_slice_header error 
no frame! 

non-existing PPS 0 referenced 
decode_slice_header error 
non-existing PPS 0 referenced 
decode_slice_header error 
no frame! 

उत्तर

24

इसका मतलब यह है कि ffmpeg ने अभी तक एक कीफ्रेम नहीं देखा है, जिसमें एसपीएस और पीपीएस जानकारी है। आने वाले फ्रेम/टुकड़े को डीकोड करने में एसपीएस और पीपीएस महत्वपूर्ण हैं। कीफ्रेम समय-समय पर भेजे जाते हैं (यानी हर 5-10 सेकंड या उससे अधिक); इसलिए अगर यह पता चला कि कुंजीफ्रेम आने से पहले आप एक स्ट्रीम में शामिल हो गए हैं; एक कुंजीफ्रेम दिखाई देने तक आप प्रत्येक फ्रेम के लिए यह चेतावनी देखेंगे।

जैसे ही कीफ्रेम तार से दिखाई देता है, ffmpeg के पास उस फ्रेम को डीकोड करने के लिए पर्याप्त जानकारी होगी (और अगली कीफ्रेम तक कोई भी फ्रेम), इसलिए उन चेतावनियां दूर हो जाएंगी।

+0

ऐसा लगता है कि समस्या है। रिमोट एंड एक कुंजीफ्रेम नहीं भेज रहा है, भले ही मेरा ग्राहक एसआईपी सूचना का उपयोग कर इसके लिए अनुरोध करता हो। कोई विचार यह कैसे हल किया जा सकता है? मैं रिमोट एंड पर ब्रिया के पुराने संस्करण का उपयोग कर रहा हूं। –

+0

रिमोट साइड कोई कीफ्रेम नहीं भेज रहा है? यह बहुत अजीब है। सुनिश्चित नहीं है कि Bria के पास keyframe अंतराल को कॉन्फ़िगर करने का विकल्प है, लेकिन यह देखने लायक होगा। तो आम तौर पर, आप रिमोट साइड से किसी भी वीडियो को नहीं देख रहे हैं, या इसे देखने में कुछ समय लगता है? – Aki

+0

सभी –

2

एक फ्रेम या एक टुकड़ा, sliceHeader डीकोड है, जो एक पी पी एस या "चित्र पैरामीटर सेट" का उल्लेख करते डिकोड करने के लिए। इसमें चौड़ाई, ऊंचाई इत्यादि जैसे फ्रेम के विनिर्देशों के बारे में जानकारी है

मुझे लगता है कि आपका डेटा स्ट्रीमिंग इनपुट चैनल के माध्यम से आ रहा है, इस मामले में एसपीएस और पीपीएस स्ट्रीम में पहले भेजे गए थे।

आपको इसे अपनी स्ट्रीम में जोड़ना पड़ सकता है।

2

आपको फ्रेम sps और पीपीएस जानकारी जोड़ने की आवश्यकता है। ffmpeg को डीकोडिंग करने के लिए इन जानकारी की आवश्यकता है। आप इन मानों को एसडीपी फ़ाइल में पा सकते हैं।

SDP फाइल में, आप एनएएल इकाइयों दिखना चाहिए, तो आप उस z0IAHukCwS1xIADbugAzf5GdyGQl, aM4xUg

इन मूल्यों based64 इनकोडिंग आप हेक्स प्रारूप करने के लिए परिवर्तित करना चाहिए की तरह कुछ देख सकते हैं। मैं wireshark का उपयोग कर रहा हूँ और wireshark खुद के लिए इन मूल्यों को बदल देता है। उसके बाद आपके पास sps और pps मान हैं।

अब आपको डेटा फ्रेम से पहले इन नाल जानकारी को जोड़ना होगा।

00 00 00 01 एसपीएस 00 00 00 01 पी पी एस 00 00 00 01 डेटा

h264 इन प्रारूप मैं डिकोड करने के लिए उपयोग किया गया है के लिए।