अलग-अलग तरह के प्लैटफ़ॉर्म

इस पेज पर, Media3 की मदद से वीडियो चलाने के लिए इस्तेमाल की जा सकने वाली अलग-अलग तरह की सुविधाओं के बारे में बताया गया है. साथ ही, यह भी बताया गया है कि अपने इस्तेमाल के उदाहरण के लिए सही सुविधा कैसे चुनी जाए. Android में Surface ऑब्जेक्ट के बारे में ज़्यादा जानने के लिए, यह ग्राफ़िक्स दस्तावेज़ पढ़ें.

PlayerView के लिए कोई प्लैटफ़ॉर्म टाइप चुनें

PlayerView एट्रिब्यूट की surface_type वैल्यू की मदद से, वीडियो चलाने के लिए इस्तेमाल किए जाने वाले डिवाइस का टाइप सेट किया जा सकता है. इन वैल्यू का इस्तेमाल किया जा सकता है:

  • surface_view (SurfaceView)
  • texture_view (TextureView)
  • spherical_gl_surface_view (SphericalGLSurfaceView) - स्फ़ेरिकल वीडियो चलाने के लिए
  • video_decoder_gl_surface_view (VideoDecoderGLSurfaceView) - एक्सटेंशन रेंडरर का इस्तेमाल करके वीडियो रेंडर करना
  • none - इसका इस्तेमाल सिर्फ़ ऑडियो चलाने के लिए किया जाता है. इसका इस्तेमाल इसलिए किया जाना चाहिए, ताकि आपको कोई सरफेस न बनाना पड़े. ऐसा करने पर, आपको ज़्यादा शुल्क देना पड़ सकता है.

अगर व्यू का इस्तेमाल वीडियो को सामान्य तरीके से चलाने के लिए किया जा रहा है, तो surface_view या texture_view का इस्तेमाल किया जाना चाहिए. वीडियो चलाने के लिए, SurfaceView के कई फ़ायदे हैं. ये फ़ायदे, TextureView के मुकाबले ज़्यादा हैं:

  • कई डिवाइसों पर बैटरी की खपत काफ़ी कम होती है.
  • फ़्रेम टाइमिंग ज़्यादा सटीक होती है. इससे वीडियो ज़्यादा आसानी से चलता है.
  • जिन डिवाइसों पर एचडीआर वीडियो आउटपुट की सुविधा काम करती है उन पर बेहतर क्वालिटी में वीडियो आउटपुट की सुविधा.
  • DRM से सुरक्षित कॉन्टेंट चलाने के दौरान, सुरक्षित आउटपुट की सुविधा काम करती है.
  • Android TV डिवाइसों पर, डिसप्ले के पूरे रिज़ॉल्यूशन में वीडियो कॉन्टेंट रेंडर करने की सुविधा. ये डिवाइस, यूज़र इंटरफ़ेस (यूआई) लेयर को अपस्केल करते हैं.

इसलिए, जहां तक हो सके वहां TextureView की जगह SurfaceView का इस्तेमाल करना चाहिए. TextureView का इस्तेमाल सिर्फ़ तब किया जाना चाहिए, जब SurfaceView आपकी ज़रूरतों को पूरा न करता हो. इसका एक उदाहरण यह है कि Android 7.0 (एपीआई लेवल 24) से पहले, वीडियो की सतह पर स्मूथ ऐनिमेशन या स्क्रोलिंग की ज़रूरत होती है. इसके बारे में यहां बताया गया है. इस मामले में, TextureView का इस्तेमाल सिर्फ़ तब करें, जब SDK_INT 24 (Android 7.0) से कम हो. इसके अलावा, SurfaceView का इस्तेमाल करें.

Compose में कोई सर्फ़ेस टाइप चुनना

Compose में, इंटरऑप सलूशन AndroidView कंपोज़ेबल का इस्तेमाल करके SurfaceView और TextureView को रैप करता है. इसके लिए, दो कंपोज़ेबल AndroidExternalSurface और AndroidEmbeddedExternalSurface का इस्तेमाल किया जाता है.

Media3 ui-compose मॉड्यूल, PlayerSurface कंपोज़ेबल उपलब्ध कराता है. यह Player को लाइफ़साइकल के हिसाब से Surface से लिंक करता है. इस मामले में, ये प्लैटफ़ॉर्म टाइप हैं:

कोई टाइप none नहीं है, क्योंकि यह आपकी Compose UI ट्री में PlayerSurface को शामिल न करने से मेल खाएगा.