टाइम शिफ़्टिंग के साथ काम करता है

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

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

पहला डायग्राम. समय बदलने के लिए, Android TV के प्लेबैक कंट्रोल इस्तेमाल किए जाते हैं.

टाइम शिफ़्टिंग, प्रोग्राम डेटा के छोटे, अस्थायी, और रिकॉर्ड किए गए सेगमेंट का इस्तेमाल इन कामों के लिए करता है लाइव प्रोग्राम चलाने की सुविधा लागू कर सके. उपयोगकर्ता, टाइम शिफ़्टिंग की इन सुविधाओं को नहीं चला सकते मौजूदा प्लेबैक सेशन के बाहर की रिकॉर्डिंग. इसका मतलब है कि वे अगले दिन किसी प्रोग्राम को देखने के लिए उसे रोकना या किसी प्रोग्राम को बाद में देखें, जबकि वे दूसरे चैनल पर स्विच करते हैं.

अगर आप चाहें, तो टीवी रिकॉर्डिंग एपीआई इस्तेमाल कर सकते हैं इससे लोग, टीवी पर चल रहे वीडियो के अलावा, किसी दूसरे प्रोग्राम का कॉन्टेंट देख सकते हैं सत्र.

टाइम शिफ़्टिंग की सुविधा जोड़ें

अपनी टीवी इनपुट सेवा में समय-शिफ़्टिंग का समर्थन जोड़ने के लिए, आपको आपकी TvInputService.Session क्लास में टाइम-शिफ़्टिंग एपीआई, आपके ऐप्लिकेशन में, टाइम शिफ़्टिंग रिकॉर्डिंग की रिकॉर्डिंग और उन्हें चलाने की सुविधा मिलती है. साथ ही, आपको सूचना मिलती है वह सिस्टम जो आपकी इनपुट सेवा टाइम-शिफ़्टिंग सहायता उपलब्ध कराता है.

लागू किए जाने वाले TvInputService.Session तरीके निम्न:

सिस्टम को यह जानकारी दें कि इनपुट सेवा किस तरह काम करती है टाइम-शिफ़्टिंग, टाइम शिफ़्टिंग स्टेटस के बारे में सिस्टम को सूचना दें सेक्शन में जाएं.

अगर TIF कंपैनियन लाइब्रेरी का इस्तेमाल करके, अपने TvInputService.Session क्लास, आपको अपने-आप ExoPlayer का इस्तेमाल करके टाइम-शिफ़्टिंग को लागू करना. आप इसका इस्तेमाल कर सकते हैं लागू करें या टाइम-शिफ़्टिंग एपीआई तरीकों को ओवरराइड करें BaseTvInputService.Session और अपनी जानकारी दें लागू करना. TIF कंपैनियन लाइब्रेरी का इस्तेमाल करने के बारे में ज़्यादा जानकारी पाने के लिए, टीवी इनपुट सेवा का इस्तेमाल करके बनाना TIF कंपैनियन लाइब्रेरी देखें.

सेशन शुरू होने पर कॉन्टेंट रिकॉर्ड करना

उपयोगकर्ता इन दस्तावेज़ों को ऐक्सेस करके, प्रोग्राम कॉन्टेंट को रोक सकता है, पीछे ले जा सकता है, और फ़ास्ट-फ़ॉरवर्ड कर सकता है चैनल के लिए प्लेबैक कंट्रोल का इस्तेमाल कर सकते हैं. इसके लिए, चुनें बटन को दबाकर रखें कॉन्टेंट देखने के बाद, प्लेबैक कंट्रोल पर जाकर या रिमोट डिवाइस पर खास तरह से प्लेबैक कंट्रोल करने की सुविधा.

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

रिकॉर्ड किए गए कॉन्टेंट के स्टोरेज को मैनेज करना

समय बदलने वाली रिकॉर्डिंग को सेव करने की ज़िम्मेदारी, आपकी टीवी इनपुट सेवा की है सिस्टम कॉल करने पर, आपके ऐप्लिकेशन के निजी ऐप्लिकेशन का स्टोरेज और कॉन्टेंट को चलाने की सुविधा टाइम-शिफ़्ट करने के तरीके, जैसे onTimeShiftResume(). अगर आपका कॉन्टेंट पहले से ही क्लाउड में सेव है और आपका ऐप्लिकेशन, क्लाउड में टाइम-शिफ़्टिंग रिकॉर्डिंग की सुविधा मिलती है. रिकॉर्डिंग के बजाय क्लाउड स्टोरेज का इस्तेमाल किया जा सकता है का एक बड़ा संग्रह है.

अगर आपकी सामग्री सुरक्षित सामग्री का इस्तेमाल करती है, तो आपकी टीवी इनपुट सेवा इन चीज़ों के लिए ज़िम्मेदार है के दौरान रिकॉर्ड की गई सामग्री का उचित एन्क्रिप्शन और सामग्री के डिक्रिप्शन प्लेबैक.

रिकॉर्ड किए गए वीडियो कॉन्टेंट के लिए बहुत ज़्यादा स्टोरेज की ज़रूरत हो सकती है. इसलिए, आपको सेशन प्लेबैक के दौरान रिकॉर्ड किए गए कॉन्टेंट को ध्यान से मैनेज करें. अगर प्लेबैक सेशन का समय, उस अवधि से ज़्यादा है जिसे रिकॉर्ड और सेव किया जा सकता है टाइम-शिफ़्टिंग, अपनी टाइम-शिफ़्टिंग रिकॉर्डिंग को समायोजित करें मौजूदा बफ़र को चालू करें, लेकिन पक्का करें कि मौजूदा समय को कैप्चर किया गया हो. उदाहरण के लिए, अगर उपयोगकर्ता कॉन्टेंट को 31 मिनट से चलाया जा रहा है और इसमें ज़्यादा से ज़्यादा टाइम शिफ़्टिंग मोड का इस्तेमाल किया जा रहा है साइज़ 30 मिनट है. अपनी रिकॉर्डिंग और शुरू होने का समय अडजस्ट करें 1 मिनट से 31 मिनट तक का कॉन्टेंट.

अगर आपकी टीवी इनपुट सेवा में तो आपको सिस्टम को सूचित करना होगा. इस बारे में ज़्यादा जानकारी पाने के लिए, टाइम-शिफ़्टिंग सहायता प्रतिबंधों के बारे में जानने के लिए, यहां देखें: टाइम शिफ़्टिंग स्टेटस के बारे में सिस्टम को सूचना दें सेक्शन में जाएं.

जब उपयोगकर्ता किसी दूसरे चैनल पर स्विच करता है या किसी और चैनल पर वीडियो चलाना बंद कर देता है फिर, टाइम शिफ़्टिंग का रिकॉर्ड किया गया डेटा मिटाएं.

टाइम शिफ़्टिंग स्थिति के बारे में सिस्टम को सूचित करें

अगर आपकी टीवी इनपुट सेवा, टाइम शिफ़्टिंग की सुविधा देती है, तो कॉल करें आपके इसमें notifyTimeShiftStatusChanged(TvInputManager.TIME_SHIFT_STATUS_AVAILABLE) लागू करना उपयोगकर्ता के ट्यून करने पर onTune() चैनल को लिंक करें.

आपकी इनपुट सेवा की समय बदलने वाली क्षमताओं पर, सिस्टम को सूचित करने के लिए बदलें, इस्तेमाल करें notifyTimeShiftStatusChanged(int). उदाहरण के लिए, अगर आपकी टीवी इनपुट सेवा, टाइम शिफ़्टिंग के साथ काम नहीं करती स्टोरेज के लिए बची जगह की पाबंदियों या दूसरी वजहों से, आपको notifyTimeShiftStatusChanged(TvInputManager.TIME_SHIFT_STATUS_UNAVAILABLE).

अगर आपकी टीवी इनपुट सेवा में टाइम शिफ़्टिंग की सुविधा बिलकुल भी काम नहीं करती, तो इस पर कॉल करें notifyTimeShiftStatusChanged(TvInputManager.TIME_SHIFT_STATUS_UNSUPPORTED) अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है जब कोई प्लेबैक सेशन बनाया जाता है. सिस्टम ऐसी किसी भी इनपुट सेवा का इस्तेमाल करता है जो कभी कॉल नहीं करता notifyTimeShiftStatusChanged() ऐसी इनपुट सेवा के तौर पर काम करती है जो यह नहीं कर सकती टाइम शिफ़्टिंग का इस्तेमाल किया जा सकता है. इसमें एपीआई लेवल 22 का इस्तेमाल करके, इनपुट सेवाओं के लिए जानकारी दी गई है. .

वीडियो चलाने का समय ट्रैक करना

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

टाइम शिफ़्टिंग रिकॉर्डिंग की मौजूदा स्थिति, मौजूदा प्लेबैक है Epoch के बाद से मिलीसेकंड में स्थिति. यह जगह लगातार बदलती रहती है मिलता है. आम तौर पर, इसे पता करने के लिए प्लेबैक इंजन का इस्तेमाल किया जा सकता है नीचे दी गई टेबल में देखें, जैसा कि इस उदाहरण में दिखाया गया है:

Kotlin

override fun onTimeShiftGetCurrentPosition(): Long =
        tvPlayer?.run {
            currentProgram?.let { program ->
                currentPosition + program.startTimeUtcMillis
            }
        } ?: TvInputManager.TIME_SHIFT_INVALID_TIME

Java

@Override
public long onTimeShiftGetCurrentPosition() {
  if (getTvPlayer() != null && currentProgram != null) {
    return getTvPlayer().getCurrentPosition() +
      currentProgram.getStartTimeUtcMillis();
  }
  return TvInputManager.TIME_SHIFT_INVALID_TIME;
}

पक्का करें कि सिस्टम, onTimeShiftGetStartPosition() अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है कभी भी, आपके द्वारा प्रदान की गई वर्तमान समय स्थिति से ज़्यादा नहीं होती onTimeShiftGetCurrentPosition(). सिस्टम इन कॉल का इस्तेमाल इन कामों के लिए करता है: प्लेबैक कंट्रोल के यूज़र इंटरफ़ेस (यूआई) में जाकर, टाइम शिफ़्टिंग की अवधि को अपडेट किया जा सकता है.

प्लेबैक पैरामीटर के साथ काम करने की अनुमति दें

टाइम शिफ़्टिंग के दौरान, वीडियो चलाने की स्पीड बदलने के लिए, सिस्टम प्लेबैक पैरामीटर का इस्तेमाल करता है. इसके लिए उदाहरण के लिए, अगर उपयोगकर्ता मौजूदा प्लेबैक को रिवाइंड करने का फ़ैसला करता है, तो नया प्लेबैक पैरामीटर, वीडियो चलाने की नेगेटिव स्पीड के साथ आपके ऐप्लिकेशन को पास किए जाते हैं. टाइम शिफ़्टिंग की सुविधा, प्लेबैक स्पीड के 2x या 3x के कई अलग-अलग लेवल पर भी काम करती है रीवाइंडिंग या फ़ास्ट-फ़ॉरवर्डिंग के लिए किया जा सकता है.

सिस्टम आपके onTimeShiftSetPlaybackParams(PlaybackParams) अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है PlaybackParams ऑब्जेक्ट वाला तरीका जिसमें यह शामिल हो मौजूदा सेशन के लिए पैरामीटर. इस जानकारी का इस्तेमाल अपने मीडिया प्लेबैक इंजन को सही तरीके से कॉन्फ़िगर करें.

अगर आपका प्लेबैक इंजन किसी पैरामीटर के साथ काम नहीं करता, हम उम्मीद के मुताबिक व्यवहार को बेहतर बना रहे हैं. उदाहरण के लिए, अगर प्लेबैक इंजन दो गुना स्पीड पर काम नहीं करता. वीडियो चलाने के दौरान, बार-बार सीक करने की सुविधा इस्तेमाल करें वीडियो चलाने की स्पीड करीब-करीब दोगुनी हो गई है.

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