मैं H264 पैकेट को डीकोड करने के लिए संघर्ष कर रहे FFmpeg के लिए नया हूं जिसे uint8_t की सरणी के रूप में प्राप्त किया जा सकता है।FFmpeg का उपयोग करके, H264 पैकेट को डीकोड करने के लिए कैसे करें
जांच के कई के बाद, मुझे लगता है कि यह सिर्फ avcodec_decode_video2 से नीचे
AVPacket *avpkt = (AVPacket *)malloc(sizeof(AVPacket) * 1);
av_init_packet(avpkt);
avpkt->data = ct; // ct is the array
avpkt->length =....
और डिकोड की तरह एक AVPacket में सरणी डाल करने के लिए सक्षम होना चाहिए()। कोड का एक हिस्सा
...
codec = avcodec_find_decoder(CODEC_ID_H264);
gVideoCodecCtx = avcodec_alloc_context();
gFrame = avcodec_alloc_frame();
avcodec_decode_video2(gVideoCodecCtx, gFrame, &frameFinished, packet);
...
की तरह है मुझे लगता है मैं सभी आवश्यक गुण ठीक से सेट, लेकिन इस समारोह केवल -1 :(
मैं सिर्फ पाया -1 लौटने से
सेवानिवृत्त आ रहा है = avctx-> codec-> डिकोड (avctx, चित्र, got_picture_ptr, avpkt);
avcodec_decode_video2 में();
वास्तव में, अगर मैं एच डिकोड कर सकते हैं कि मैं क्या सोच रहा हूँ है Avcodec_decode_video2() द्वारा 264 पैकेट (आरटीपी हेडर के बिना)।
अग्रिम सहायता के लिए धन्यवाद।
/////////// जोड़ा
ठीक है, मैं अभी भी एक समाधान खोजने के लिए कोशिश कर रहा हूँ। क्या मैं अब कर रहा हूँ है नीचे
** इस आरटीपी धारा में H264 धारा के द्वारा इनकोडिंग FU-ए
एक RTP पैकेट
देखो अगर की दूसरी बाइट प्राप्त आरटीपी हेडर> 0 है जिसका मतलब है कि यह पहला पैकेट है (और संभवतः इसका पालन किया जाएगा)
देखें कि अगला आरटीपी पैकेट इसके दूसरे बाइट पर> 0 है, तो इसका मतलब है कि पिछला फ्रेम एक पूर्ण एनएएल था या अगर यह < 0 है, तो पैकेट को पिछले पैकेट में जोड़ा जाना चाहिए।
पैकेट के सभी आरटीपी हेडर को हटा दें ताकि यह केवल एफयू सूचक की तरह हो। एफयू हेडर | एनएएल
कोशिश avcodec_decode_video2()
साथ इसे खेलने लेकिन यह केवल -1 लौटा रहा है ..... मैं FU सूचक को हटाने और भी शीर्षक करना चाहिए ??
किसी भी सुझाव की बहुत सराहना की जाएगी
अग्रिम धन्यवाद।
धन्यवाद Vibgyor है वास्तव में इस spydroid खुला स्रोत है और उसके आरटीपी हैडर बहुत सी बातें शामिल नहीं लगती है .. यह पेलोड प्रकार, क्रम संख्या, टाइमस्टैम्प का बना है, सिंक स्रोत पहचानकर्ता .. उनमें से किसी का मतलब वीडियो स्ट्रीम जानकारी है ?? मुझे ऐसा नहीं लगता .. मैं अभी भी इस पर काम कर रहा हूं और मेरी प्रगति को अपडेट करूंगा। – Jun