2013-01-29 55 views
23

मुझे स्क्रीन पर एक वीडियो घुमाने में सक्षम होना चाहिए, इसलिए मैंने एक कस्टम TextureView बनाया जो MediaVlayer पर एक सुविधाजनक परत प्रदान करता है जैसे कि वीडियो व्यू का वर्तमान कार्यान्वयन कैसे करता है। TextureView के बारे में निम्नलिखित This Android blog post का कहना है:एंड्रॉइड बनावट व्यू बनाम वीडियो व्यू प्रदर्शन

एक SurfaceView की सामग्री आवेदन की खिड़की में नहीं रहता वजह से, यह तब्दील नहीं किया जा सकता (ले जाया गया, बढ़ाया, घुमाया) कुशलतापूर्वक। इससे ListView या ScrollView के अंदर SurfaceView का उपयोग करना मुश्किल हो जाता है। SurfaceView भी यूआई टूलकिट की कुछ विशेषताओं जैसे फ्डिंग किनारों या View.setAlpha() के साथ ठीक से बातचीत नहीं कर सकता है।

इन समस्याओं को हल करने के लिए, एंड्रॉइड 4.0 TextureView नामक एक नया विजेट पेश करता है जो हार्डवेयर त्वरित 2 डी प्रतिपादन पाइपलाइन और सतह के मिश्रण पर निर्भर करता है। TextureView SurfaceView के समान क्षमताओं की पेशकश करता है, लेकिन SurfaceView के विपरीत, नियमित दृश्य के रूप में व्यवहार करता है। उदाहरण के लिए आप ओपनजीएल दृश्य या वीडियो स्ट्रीम प्रदर्शित करने के लिए एक TextureView का उपयोग कर सकते हैं। TextureView स्वयं एनिमेटेड, स्क्रॉल किया जा सकता है, आदि

हालांकि, ऐसा लगता है कि TextureView वीडियो चलाने के लिए संघर्ष कर रहा है। जिस लक्ष्य डिवाइस का मैं परीक्षण कर रहा हूं उसके पास 1.2 गीगाहर्ट्ज रॉकचिप आरके 3066 डुअल कोर सीपीयू, क्वाड कोर माली -400 जीपीयू (एआरएम) और 1 जीबी रैम है। इस डिवाइस पर वीडियो व्यू का उपयोग करने वाला एक ही कोड ठीक काम करता है, लेकिन विशिष्ट डिवाइस के आधार पर बनावट या खेलते समय (स्टैटर "या बिल्कुल दिखाई नहीं देता है (शीर्ष बाएं में सफेद वर्गों के साथ काला बॉक्स)। TextureViews इंटेल द्वारा प्रदत्त x86 "डिवाइस" का उपयोग कर एमुलेटर पर ठीक प्रदर्शन करते हैं।

क्या यह प्रदर्शन अपेक्षित है, या मुझे समस्या को खोजने के लिए कहीं और दिखना चाहिए? धन्यवाद

+0

मुझे आपके विशेष सेटअप के बारे में बहुत कुछ पता नहीं है। आपका एसएमएल और कुछ संबंधित जावा देखकर मदद मिल सकती है। क्या बनावट बनावट पर वजन लागू हैं? यूआई संपादक में क्या चेतावनियां फेंक रही हैं? वे आपकी मदद कर सकते हैं। –

+0

क्या आप इस मुद्दे को हल करने में सक्षम हैं या Mediaplayer के साथ textureview का उपयोग करने से बचने के लिए बेहतर है? –

+0

हमने 'TextureView' का उपयोग नहीं किया –

उत्तर

18

हां, यह TextureView के साथ उम्मीद है। TextureView वीडियो को सामान्य दृश्य-कंपोजिटिंग के माध्यम से प्रस्तुत करने का कारण बनता है, SurfaceView के विपरीत जो सीधे GPU में मिश्रित होता है (डिकोडिंग पाइपलाइन सीधे उस स्क्रीन के क्षेत्र में प्रतिपादित होती है जहां आप SurfaceView डालते हैं)। जबकि TextureView प्रतिपादन हार्डवेयर-त्वरित है, फिर भी यह अतिरिक्त लचीलापन के लिए और अधिक चरणों के माध्यम से जा रहा है, और एक निश्चित प्रदर्शन हिट है। इसके अतिरिक्त, यूआई-थ्रेड पर चल रहे किसी भी कोड TextureView को SurfaceView के विपरीत प्रभावित कर सकता है।

अतिरिक्त जानकारी:

1

आप इस article

SurfaceView देख सकते हैं और TextureView समान भूमिकाओं को भरने, लेकिन बहुत अलग कार्यान्वयन है। यह तय करने के लिए कि कौन सा सर्वोत्तम है, व्यापार-व्यापार की समझ की आवश्यकता है। क्योंकि TextureView दृश्य पदानुक्रम का उचित नागरिक है, यह किसी अन्य दृश्य की तरह व्यवहार करता है, और अन्य तत्वों द्वारा ओवरलैप या ओवरलैप किया जा सकता है। आप मनमाने ढंग से परिवर्तन कर सकते हैं और सामग्री को सरल एपीआई कॉल के साथ बिटमैप के रूप में पुनर्प्राप्त कर सकते हैं।

TextureView के खिलाफ मुख्य हड़ताल संरचना चरण का प्रदर्शन है। SurfaceView के साथ, सामग्री को एक अलग परत पर लिखा जाता है जो सतहफ्लिंगर कंपोजिट्स, आदर्श रूप से ओवरले के साथ। TextureView के साथ, व्यू संरचना हमेशा जीएलएस के साथ की जाती है, और इसके सामग्रियों के अपडेट अन्य दृश्य तत्वों को फिर से निकालने का कारण बन सकते हैं (उदाहरण के लिए यदि वे TextureView के शीर्ष पर स्थित हैं)।दृश्य प्रतिपादन पूर्ण होने के बाद, ऐप यूआई परत को सतहफ्लिंगर द्वारा अन्य परतों के साथ मिश्रित किया जाना चाहिए, ताकि आप प्रभावी रूप से प्रत्येक दृश्य पिक्सेल को दो बार कंपोजिट कर रहे हों। एक पूर्ण-स्क्रीन वीडियो प्लेयर या किसी भी अन्य एप्लिकेशन के लिए प्रभावी रूप से वीडियो के शीर्ष पर स्तरित यूआई तत्व, SurfaceView पर बेहतर प्रदर्शन प्रदान करता है।

 संबंधित मुद्दे

  • कोई संबंधित समस्या नहीं^_^