का अनुपालन करने वाली H264 पैकेट खंड कैसे मैं FFMPEG आधारभूत h264 वीडियो है, जो मैं आरटीपी में संपुटित और उनके डिकोडिंग के लिए फोन के घूंट भेज दिया स्ट्रीमिंग की है। मैं डिकोडिंग प्रगति के लिए विंडोज और मिरियल के लिए h264 प्लगइन के साथ लिनफ़ोन का उपयोग कर रहा हूं। हालांकि, कभी-कभी मुझे एफएफएमपीईजी से एक विशाल फ्रेम आकार (3 केबी ~ 9 केबी) मिलता है, जो स्पष्ट रूप से एमटीयू में फिट नहीं होता है।आरटीपी RFC3984
अगर मैं इन फ्रेम भेज "जैसा है" और आईपी विखंडन सुविधा पर भरोसा, कुछ फोन यह काफी अच्छी तरह से खेलने में सक्षम हैं, लेकिन दूसरों को गला घोंटना और धारा डिकोड नहीं कर सकते हैं। मुझे लगता है कि ऐसा इसलिए है क्योंकि स्ट्रीम आरएफसी 3 9 84 के अनुरूप नहीं है जो निर्दिष्ट करता है कि एमटीयू में फिट नहीं होने वाले पैकेट को अलग-अलग एनयूएल में अलग किया जाना चाहिए और आरटीपी की मार्क फीचर के साथ फ्रेम के अंत को चिह्नित करना होगा।
मुझे कैसे पता चलेगा कि मैं I या P फ्रेम को "काट" सकता हूं? मैंने देखा कि खंडित एच 264 पैकेट (मार्क लेबल के बिना वाले) कभी-कभी 0xF8 में समाप्त होते हैं लेकिन आरएफसी 3984 में काफी पैटर्न नहीं मिल सका जो वर्णन करता है कि आरटीपी पर इन पैकेट को कैसे भेजना है, यह निर्दिष्ट नहीं करता है कि इसे कैसे किया जाए।
अपडेट: क्या किसी को पता है कि X264 लाइब्रेरी को अधिकतम आकार के NALUs कैसे उत्पन्न करें? इस तरह से मैं इस समस्या से बचने में सक्षम होना चाहिए। सभी को धन्यवाद
@jesusp आप अपनी प्रतिक्रिया के लिए धन्यवाद! हालांकि, मैं एन्कोडर परत के रूप में X264 का उपयोग कर रहा हूं और मुझे एन्कोडर को 1500 बाइट्स टॉप के एनयूएल उत्पन्न करने के तरीके के बारे में पता नहीं है। चारों ओर गुगलिंग मुझे यहां मिला: [लिंक] (http://comments.gmane.org/gmane.comp.video.x264.devel/5460)। हालांकि, ऐसा लगता है कि इसे पुस्तकालय में विलय नहीं किया गया है। क्या किसी को X264 का उपयोग करके ऐसा करने का तरीका पता है? अन्यथा मुझे पैकेटेशन-मोड = 1 को लागू करना होगा। धन्यवाद सभी –
@jesup क्या आप समझा सकते हैं कि यूडीपी विखंडन क्यों खराब है? जैसा कि मैं इसे समझता हूं, यूडीपी विखंडन (या बेहतर, आईपी विखंडन) को कम नेटवर्क यातायात का कारण बनना चाहिए क्योंकि आपको प्रत्येक पैकेट के लिए आरटीपी (क्रमशः यूडीपी) शीर्षलेख एन्कोड करने की आवश्यकता नहीं है (इसलिए आप 12 से 20 बाइट प्रति पैकेट प्राप्त करते हैं) । – xryl669
इस पर बहुत अधिक शब्द है ... कुछ राउटर विखंडन का समर्थन नहीं करते हैं। विभिन्न ओएस और अन्य मध्यवर्ती बक्से को खंडित पैकेट को फिर से इकट्ठा करने की आवश्यकता हो सकती है, और इस तरह की सभी समानता के आकार पर सीमाएं हैं - आमतौर पर 65535 बाइट्स (अक्सर 4 के आसपास) के अधिकतम यूडीपी आकार से काफी कम होती हैं। कोई मानक अधिकतम आकार नहीं है। विखंडन आपको पैकेट नुकसान के लिए अधिक असुरक्षित छोड़ देता है (हालांकि यदि डेटा एकल पैकेट में अनुपयोगी है जो अधिक मदद नहीं कर सकता है)। शायद इसका पुनरीक्षण किया जाना चाहिए, लेकिन उपयोगी मानक आकार की कमी एक बड़ी समस्या है। – jesup