मीडिया ट्रैक इस्तेमाल करना

MediaTrack मीडिया ट्रैक को दिखाता है. इसमें ऑडियो स्ट्रीम, वीडियो स्ट्रीम या टेक्स्ट शामिल हो सकता है (जैसे सबटाइटल). आपके ऐप्लिकेशन को ग्रुप, स्टाइल, और चालू किया जा सकता है मीडिया ट्रैक.

ट्रैक को कॉन्फ़िगर करना

ट्रैक को कॉन्फ़िगर करके, उसे एक यूनीक आईडी असाइन किया जा सकता है. यह कोड अंग्रेज़ी टेक्स्ट ट्रैक, फ़्रेंच टेक्स्ट ट्रैक, और फ़्रेंच ऑडियो ट्रैक बनाता है, हर आईडी का इस्तेमाल करके:

Kotlin
val englishSubtitle = MediaTrack.Builder(1 /* ID */, MediaTrack.TYPE_TEXT)
    .setName("English Subtitle")
    .setSubtype(MediaTrack.SUBTYPE_SUBTITLES)
    .setContentId("https://some-url/caption_en.vtt")
    /* language is required for subtitle type but optional otherwise */
    .setLanguage("en-US")
    .build()

val frenchSubtitle = MediaTrack.Builder(2, MediaTrack.TYPE_TEXT)
    .setName("French Subtitle")
    .setSubtype(MediaTrack.SUBTYPE_SUBTITLES)
    .setContentId("https://some-url/caption_fr.vtt")
    .setLanguage("fr")
    .build()

val frenchAudio = MediaTrack.Builder(3, MediaTrack.TYPE_AUDIO)
    .setName("French Audio")
    .setContentId("trk0001")
    .setLanguage("fr")
    .build()
जावा
MediaTrack englishSubtitle = new MediaTrack.Builder(1 /* ID */,
MediaTrack.TYPE_TEXT)
  .setName("English Subtitle")
  .setSubtype(MediaTrack.SUBTYPE_SUBTITLES)
  .setContentId("https://some-url/caption_en.vtt")
  /* language is required for subtitle type but optional otherwise */
  .setLanguage("en-US")
  .build();

MediaTrack frenchSubtitle = new MediaTrack.Builder(2, MediaTrack.TYPE_TEXT)
  .setName("French Subtitle")
  .setSubtype(MediaTrack.SUBTYPE_SUBTITLES)
  .setContentId("https://some-url/caption_fr.vtt")
  .setLanguage("fr")
  .build();

MediaTrack frenchAudio = new MediaTrack.Builder(3, MediaTrack.TYPE_AUDIO)
  .setName("French Audio")
  .setContentId("trk0001")
  .setLanguage("fr")
  .build();

ग्रुप ट्रैक

एक मीडिया आइटम में एक से ज़्यादा ट्रैक का ग्रुप बनाया जा सकता है. आइटम को इस तरह दिखाया जाता है MediaInfo. MediaInfo का एक इंस्टेंस ट्रैक की कलेक्शन लेता है और मीडिया आइटम के बारे में अन्य जानकारी इकट्ठा करता है. उदाहरण के आधार पर, आपका ऐप्लिकेशन उन तीन मीडिया ट्रैक को किसी मीडिया में जोड़ सकता है आइटम की खोज करने के लिए उन तीन ट्रैक की सूची MediaInfo.Builder.setMediaTracks(List). लोड होने से पहले, आपके ऐप्लिकेशन को MediaInfo में इस तरीके से ट्रैक जोड़ने होंगे मीडिया को पाने वाले को भेजा जा सकता है.

Kotlin
val tracks: MutableList<MediaTrack> = ArrayList<MediaTrack>()
tracks.add(englishSubtitle)
tracks.add(frenchSubtitle)
tracks.add(frenchAudio)
val mediaInfo = MediaInfo.Builder(url)
    .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
    .setContentType(getContentType())
    .setMetadata(getMetadata())
    .setMediaTracks(tracks)
    .build()
जावा
List tracks = new ArrayList();
tracks.add(englishSubtitle);
tracks.add(frenchSubtitle);
tracks.add(frenchAudio);
MediaInfo mediaInfo = MediaInfo.Builder(url)
  .setStreamType(MediaInfo.STREAM_TYPE_BUFFERED)
  .setContentType(getContentType())
  .setMetadata(getMetadata())
  .setMediaTracks(tracks)
  .build();

ट्रैक हटाएं

वर्तमान मीडिया से सभी ट्रैक निकालने के लिए (जैसे कि तीनों को बंद करना) उदाहरण में सबटाइटल), MediaInfo.Builder.setMediaTracks(List) और आईडी की एक खाली सूची पास करें.

ट्रैक अपडेट करें

आपका ऐप्लिकेशन, मीडिया से जुड़े एक या एक से ज़्यादा ट्रैक को चालू कर सकता है आइटम (मीडिया लोड होने के बाद), कॉल करके RemoteMediaClient.setActiveMediaTracks(long[]) और सक्रिय किए जाने के लिए ट्रैक की आईडी पास करना. यह उदाहरण फ़्रेंच सबटाइटल और फ़्रेंच ऑडियो:

Kotlin
// the ID for the French subtitle is '2' and for the French audio '3'
remoteMediaClient.setActiveMediaTracks(longArrayOf(2, 3))
    .setResultCallback(ResultCallback {
            mediaChannelResult: RemoteMediaClient.MediaChannelResult ->
                if (!mediaChannelResult.status.isSuccess) {
                    Log.e(TAG, "Failed with status code:" +
                            mediaChannelResult.status.statusCode
                    )
                }
    })
जावा
// the ID for the French subtitle is '2' and for the French audio '3'
remoteMediaClient.setActiveMediaTracks(new long[]{2, 3})
    .setResultCallback(mediaChannelResult -> {
        if (!mediaChannelResult.getStatus().isSuccess()) {
            Log.e(TAG, "Failed with status code:" +
                    mediaChannelResult.getStatus().getStatusCode());
        }
    });

टेक्स्ट ट्रैक की स्टाइल

TextTrackStyle टेक्स्ट ट्रैक की स्टाइलिंग की जानकारी को एन्क्रिप्ट (सुरक्षित) करता है. बनाने या अपडेट करने के बाद कोई मौजूदा TextTrackStyle है, तो आप उस स्टाइल को वर्तमान में चल रहे कॉल करके मीडिया आइटम RemoteMediaClient.setTextTrackStyle इस तरह:

Kotlin
// the ID for the French subtitle is '2' and for the French audio '3'
remoteMediaClient.setTextTrackStyle(style)
    .setResultCallback(ResultCallback {
            mediaChannelResult: RemoteMediaClient.MediaChannelResult ->
                if (!mediaChannelResult.status.isSuccess) {
                    Log.e(TAG, "Failed to set the style, status code: " +
                            mediaChannelResult.status.statusCode
                    )
                }
    })
जावा
remoteMediaClient.setTextTrackStyle(style)
    .setResultCallback(mediaChannelResult -> {
        if (!mediaChannelResult.getStatus().isSuccess()) {
            Log.e(TAG, "Failed to set the style, status code: " +
                    mediaChannelResult.getStatus().getStatusCode());
        }
    });

आपके ऐप्लिकेशन को लोगों को टेक्स्ट ट्रैक का स्टाइल अपडेट करने की सुविधा देनी चाहिए. इसके लिए, वे टेक्स्ट ट्रैक का इस्तेमाल कर सकते हैं सिस्टम या ऐप्लिकेशन की ओर से उपलब्ध कराई गई सेटिंग चुनने के लिए कहें. Android KitKat में बाद में, पूरे सिस्टम में सबटाइटल की सेटिंग का इस्तेमाल किया जा सकता है. फ़्रेमवर्क:

Kotlin
val textTrackStyle = TextTrackStyle.fromSystemSettings(context)
जावा
TextTrackStyle textTrackStyle = TextTrackStyle.fromSystemSettings(context);

KitKat से पहले के वर्शन के लिए, ऊपर दिया गया कॉल एक ऑब्जेक्ट दिखाएगा फ़ील्ड के बारे में जानकारी नहीं दी गई है, इसलिए आपको अपने ऐप्लिकेशन में उन फ़ील्ड को भरने की ज़रूरत है और कुछ डिफ़ॉल्ट वैल्यू भी इस्तेमाल की जा सकती हैं. नीचे दिए गए टेक्स्ट की स्टाइल बदली जा सकती है ट्रैक शैली के तत्व:

  • फ़ोरग्राउंड (टेक्स्ट) का रंग और अपारदर्शिता
  • बैकग्राउंड का रंग और अपारदर्शिता
  • किनारे का प्रकार
  • किनारे का रंग
  • फ़ॉन्ट स्केल
  • फ़ॉन्ट परिवार
  • फ़ॉन्ट स्टाइल

उदाहरण के लिए, टेक्स्ट के रंग को 50% ओपैसिटी (80) के साथ लाल (FF) पर इस तरह सेट करें:

Kotlin
textTrackStyle.foregroundColor = Color.parseColor("#80FF0000")
जावा
textTrackStyle.setForegroundColor(Color.parseColor("#80FF0000"));

KitKat और उसके बाद के वर्शन में, सूचना पाने के लिए आपको अपना ऐप्लिकेशन रजिस्टर करना चाहिए जब पूरे सिस्टम में सबटाइटल की सेटिंग अपडेट हों. इसके लिए, आपको लागू करें CaptioningManager.CaptioningChangeListener इस लिसनर को इस नंबर पर कॉल करके रजिस्टर करें:

Kotlin
CaptioningManager.addCaptioningChangeListener(yourChangeListener)
जावा
CaptioningManager.addCaptioningChangeListener(yourChangeListener);

जब आपके ऐप्लिकेशन को यह कॉल बैक मिलता है कि कैप्शन की सेटिंग बदल गई हैं, तो को नई सेटिंग एक्सट्रैक्ट करके टेक्स्ट की स्टाइल अपडेट करनी होगी. कॉल करने पर चल रहे मीडिया के लिए कैप्शन RemoteMediaClient.setTextTrackStyle और एक नए स्टाइल में.

स्टेटस के बारे में अपडेट पाएं

जब एक से ज़्यादा ईमेल भेजने वाले एक ही पाने वाले से जुड़े हों, तो यह ज़रूरी है प्रत्येक भेजने वाले को प्राप्तकर्ता में बदलावों के बारे में पता होना चाहिए भले ही वे बदलाव अन्य ईमेल भेजने वालों से मिले हैं.

इसके लिए, आपके ऐप्लिकेशन को RemoteMediaClient.Listener और एक RemoteMediaClient.ProgressListener.

अगर TextTrackStyle अभी मीडिया में बदलाव कर रहे हैं, तो इससे जुड़े हुए सभी ईमेल भेजने वालों को सूचना दी जाएगी ऊपर दिए गए दोनों लिसनर के ज़रिए ऐसा किया जा सकता है. इस मामले में, रिसीवर का SDK टूल यह पुष्टि नहीं करता कि नई स्टाइल पिछली स्टाइल से अलग है या नहीं. कनेक्ट किए गए सभी ईमेल पतों को सूचना देता है. हालांकि, अगर चालू ट्रैक में बदलाव किए गए हैं, सिर्फ़ RemoteMediaClient.ProgressListener में ईमेल भेजने वाले लोगों को इसकी सूचना दी जाएगी.

सीओआरएस से जुड़ी ज़रूरी शर्तें पूरी करें

अडैप्टिव मीडिया स्ट्रीमिंग के लिए, Google Cast के लिए ज़रूरी है कि CORS हेडर, लेकिन आसान mp4 भी अगर मीडिया स्ट्रीम में ट्रैक शामिल हैं, तो सीओआरएस की ज़रूरत होती है. यदि आप ट्रैक को सक्षम करना चाहते हैं का इस्तेमाल करने के लिए, आपको अपनी ट्रैक स्ट्रीम और मीडिया, दोनों के लिए सीओआरएस को चालू करना होगा स्ट्रीम. इसलिए, अगर आपके पास अपने आसान mp4 मीडिया के लिए सीओआरएस हेडर उपलब्ध नहीं हैं डाउनलोड करने का विकल्प होता है, और फिर आप एक सामान्य सबटाइटल ट्रैक जोड़ लेते हैं, तो आपको स्ट्रीम करने के लिए, अपने मीडिया को स्ट्रीम करें. ऐसा तब तक करें, जब तक आप अपने सर्वर को सीओआरएस हेडर. इसके अलावा, आपको कम से कम इन हेडर को अनुमति देनी होगी: कॉन्टेंट का टाइप, स्वीकार करने के लिए कोड में बदलने का तरीका, और रेंज. ध्यान दें कि आखिरी दो हेडर जिसकी ज़रूरत आपको पहले न लगी हो.