यह अक्सर पूछे जाने वाले प्रश्न पर एक भिन्नता है लेकिन मुझे यह सटीक स्थिति दिखाई नहीं दे रही है, इसलिए मैं इसे वहां फेंक दूंगा।कैमरा पूर्वावलोकन कॉलबैक बफर का अभिविन्यास कैसे बदलें?
मेरे पास एक ऑनप्रूफ्रेम कॉलबैक सेट अप है। यह एक बाइट [] में एनवी 21 डेटा के साथ मिलता है। हम h.264 इसे एन्कोड करते हैं और इसे एक वीडियो स्ट्रीम के रूप में भेजते हैं। दूसरी तरफ, हम फोन के आधार पर वीडियो को 90 या 270 डिग्री सेल्सियस देखते हैं।
तो सवाल यह है कि डेटा कैसे घुमाएं, केवल पूर्वावलोकन छवि नहीं? कैमरा। पैरामीटर.सेट रोटेशन केवल तस्वीर लेने पर प्रभाव डालता है, वीडियो नहीं।
इस बाइट सरणी onPreviewFrame (बाइट [], कैमरा), जेपीईजी चित्र, या रिकॉर्ड किए गए वीडियो में पारित के आदेश को प्रभावित नहीं करता: Camera.setDisplayOrientation विशेष रूप से यह केवल प्रदर्शित पूर्वावलोकन, नहीं फ्रेम बाइट्स को प्रभावित करता है कहते हैं।
तो क्या किसी भी एपीआई स्तर पर बाइट सरणी के अभिविन्यास को बदलने के लिए कोई तरीका है? यह असफल हो रहा है, क्या आप एनवी 21 (वाईवीयू) प्रारूप को भी घुमा सकते हैं, जिसमें यह आ रहा है, या मुझे पहले आरजीबी की आवश्यकता है?
शायद मैं याद कर रहा हूँ, लेकिन यह चल रहा है की एक अपेक्षाकृत सीधे आगे काम नहीं है - हम libyuv, एक बहुत ही सुविधाजनक समारोह है कि दोनों घूमता है और यह धर्मान्तरित जो का उपयोग कर समाप्त हो गया एक मैट्रिक्स के माध्यम से डेटा को घुमाने के लिए जिस तरह से आप चाहते हैं? संभवतः आप अपने पूर्वावलोकन की चौड़ाई और ऊंचाई को जानते हैं, इसलिए, आप केवल बाइट्स को एक नए बाइट सरणी में कॉपी करने में सक्षम होना चाहिए, जिसने उन्हें वांछित अभिविन्यास में क्रमबद्ध किया है, नहीं? मैंने यह नहीं किया है, इसलिए, शायद मैं बेस से दुखी हूँ। –
नहीं, यह ऐसा करेगा, लेकिन प्रत्येक फ्रेम के लिए ऐसा करने के लिए, 5ps कहने पर, बहुत सारी प्रसंस्करण की तरह लगता है। लेकिन मुझे लगता है कि यह एकमात्र तरीका हो सकता है। – Hieronymus