मैं H.264 स्ट्रीम में छवियों को एन्कोड करने के लिए FFMpeg की एपीआई का उपयोग करता हूं, कोड इस encode code जैसा है। जब मैंने avcodec_encode_video2
फ़ंक्शन को कॉल किया तो मुझे एक एवीपैकेट का डेटा मिला, फिर मैंने इसे फ़ाइल में सहेजा। परीक्षण के लिए कई फाइलें प्राप्त करने के लिए मैं कई छवियों का उपयोग करता हूं। स्टार्टकोड 00 00 00 01
या 00 00 01
के आधार पर, मैंने पाया कि पहली और दूसरी फाइलों के डेटा में कई H.264 NAL संकेत हैं। लेकिन तीसरी फाइल से शुरू करें, मुझे स्टार्टकोड नहीं मिला है। अनुवर्ती छवि की तरह। एफएफएमपीईजी और एच .264 एनएएल यूंट में AVPacket के बीच क्या संबंध है?
मुझे उलझन में लग रहा है। एफएफएमपीजी के कोड पर आधार मुझे लगता है कि एक एवीपैकेट के डेटा में कम से कम एक एनएएल यूंट होना चाहिए, लेकिन परिणाम अप्रत्याशित है। क्या इसका मतलब है कि एक एनएएल यूंट को दो एवीपैकेट्स डेटा में विभाजित किया जा सकता है? AVPacket और H.264 NAL Uint के बीच क्या संबंध है?
क्या आप अपना कोड दिखा सकते हैं? मुझे संदेह है कि आपका एन्कोड कॉल वास्तव में एक पैकेट (got_packet_ptr == 0) या ऐसा कुछ नहीं लौटाता था। –
से [एफएफएमपीईजी डॉक्सिजन] (http://ffmpeg.org/doxygen/trunk/group__lavc__encoding.html#gaa2dc9e9ea2567ebb2801a08153c7306b) 'avcodec_encode_video2' पर) * फ्रेम से इनपुट कच्चे वीडियो डेटा लेता है और अगली आउटपुट पैकेट लिखता है, अगर उपलब्ध हो, तो avpkt । आउटपुट पैकेट ** में सबसे हालिया फ्रेम ** के लिए डेटा शामिल नहीं है, क्योंकि एन्कोडर्स आंतरिक रूप से इनपुट फ्रेम को देरी और पुन: व्यवस्थित कर सकते हैं। * तो शायद यह विभाजित है। क्या आप डेटा को जोड़ सकते हैं और इसे डीकोडर को फ़ीड कर सकते हैं यह देखने के लिए कि क्या शिकायत है या नहीं? – incBrain
@ रोनाल्डस। बुल्जे मैं अपने कार्यक्रम को डीबग करता हूं, 'got_output' वास्तव में हर बार सच होता है। – Ello