मीडिया अपलोड करें

मीडिया आइटम अपलोड करने की प्रोसेस दो चरणों में होती है:

  1. अपलोड किए गए डेटा का इस्तेमाल करके, Google सर्वर पर अपनी मीडिया फ़ाइलों की बाइट अपलोड करें एंडपॉइंट के बीच में खुलेगा. यह एक अपलोड टोकन लौटाता है, जो अपलोड की गई बाइट की संख्या.
  2. उपयोगकर्ता के Google Photos खाते में मीडिया आइटम बनाने के लिए, अपलोड टोकन के साथ batchCreate कॉल का इस्तेमाल करें.

यहां दिए गए तरीके से, किसी मीडिया आइटम को अपलोड करने की प्रोसेस के बारे में पता चलता है. अगर आप कई मीडिया आइटम अपलोड करना (किसी भी प्रोडक्शन ऐप्लिकेशन के लिए इसकी संभावना बहुत ज़्यादा होती है), बेहतर अपलोड के लिए, अपलोड करने के सबसे सही तरीके देखें क्षमता.

शुरू करने से पहले

अनुमति के ज़रूरी दायरे

मीडिया आइटम को उपयोगकर्ता की लाइब्रेरी या एल्बम में अपलोड करने के लिए photoslibrary.appendonly दायरा. स्कोप के बारे में ज़्यादा जानकारी के लिए, यहां देखें अनुमति के दायरे.

स्वीकार किए जाने वाले फ़ाइल टाइप और साइज़

इस टेबल में दिए गए फ़ाइल टाइप को अपलोड किया जा सकता है.

मीडिया टाइप स्वीकार किए जाने वाले फ़ाइल टाइप फ़ाइल का ज़्यादा से ज़्यादा साइज़
फ़ोटो AVIF, BMP, GIF, HEIC, ICO, JPG, PNG, TIFF, WEBP, और कुछ RAW फ़ाइलें. 200 एमबी
वीडियो 3GP, 3G2, ASF, AVI, DIVX, M2T, M2TS, M4V, MKV, MMV, MOD, MOV, MP4, MPG, MTS, TOD, WMV. 20 जीबी

पहला चरण: बाइट अपलोड करना

अपलोड के अनुरोधों का इस्तेमाल करके, Google पर बाइट अपलोड करना. अपलोड करने का अनुरोध स्वीकार किया गया रॉ टेक्स्ट स्ट्रिंग के रूप में अपलोड टोकन देता है. इन अपलोड का उपयोग करें टोकन का इस्तेमाल करके, batchCreate कॉल के साथ मीडिया आइटम बनाया जा सकता है.

आराम

पोस्ट अनुरोध के हेडर में नीचे दिए गए फ़ील्ड शामिल करें:

हेडर फ़ील्ड
Content-type application/octet-stream पर सेट करें.
X-Goog-Upload-Content-Type सुझाई गई. अपलोड किए जा रहे बाइट के MIME टाइप पर सेट करें. सामान्य एमआईएमई टाइप में image/jpeg, image/png, और image/gif शामिल हैं.
X-Goog-Upload-Protocol raw पर सेट करें.

यहां पोस्ट अनुरोध का हेडर दिया गया है:

POST https://photoslibrary.googleapis.com/v1/uploads
Authorization: Bearer oauth2-token
Content-type: application/octet-stream
X-Goog-Upload-Content-Type: mime-type
X-Goog-Upload-Protocol: raw

अनुरोध के मुख्य हिस्से में, फ़ाइल की बाइनरी शामिल करें:

media-binary-data

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

upload-token

इमेज के लिए, सुझाई गई फ़ाइल का साइज़ 50 एमबी से कम है. ऐसी फ़ाइलें जो 50 एमबी से बड़ी हैं परफ़ॉर्मेंस की समस्याएं आ सकती हैं.

Google Photos Library API, फिर से शुरू किए जा सकने वाले ऐप्लिकेशन के साथ काम करता है अपलोड करें. फिर से अपलोड किए जा सकने वाले वीडियो अपलोड करने से, मीडिया फ़ाइल को कई सेक्शन में बांटें और एक बार में एक सेक्शन अपलोड करें.

चरण 2: मीडिया आइटम बनाना

मीडिया फ़ाइलों के बाइट अपलोड करने के बाद, उन्हें मीडिया के तौर पर बनाया जा सकता है अपलोड टोकन का इस्तेमाल करके Google Photos में मौजूद आइटम. अपलोड टोकन मान्य है बनाए जाने के बाद एक दिन तक. मीडिया आइटम हमेशा उपयोगकर्ता के लाइब्रेरी. मीडिया आइटम, सिर्फ़ आपके ऐप्लिकेशन से बनाए गए एल्बम में जोड़े जा सकते हैं. ज़्यादा जानकारी के लिए, अनुमति के दायरे देखें.

नए मीडिया आइटम बनाने के लिए, कॉल करें mediaItems.batchCreate की सूची देकर newMediaItems. हर newMediaItem में एक अपलोड होता है टोकन, जिसे simpleMediaItem में बताया गया हो. साथ ही, जानकारी देना ज़रूरी नहीं है जो उपयोगकर्ता को दिखती है.

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

सबसे अच्छी परफ़ॉर्मेंस के लिए, अपने लिए कॉल की संख्या mediaItems.batchCreate कम करें एक कॉल में कई मीडिया आइटम शामिल करने होंगे. हमेशा इंतज़ार करें इसके लिए बाद में कॉल करने से पहले ही आपका पिछला अनुरोध पूरा हो गया उपयोगकर्ता.

उपयोगकर्ता की लाइब्रेरी में एक मीडिया आइटम या एक से ज़्यादा मीडिया आइटम बनाए जा सकते हैं इसके लिए, ब्यौरे और उनसे जुड़े अपलोड टोकन की जानकारी दी जाती है:

आराम

यहां पोस्ट अनुरोध का हेडर दिया गया है:

POST https://photoslibrary.googleapis.com/v1/mediaItems:batchCreate
Content-type: application/json
Authorization: Bearer oauth2-token

अनुरोध के मुख्य हिस्से में newMediaItems की सूची होनी चाहिए.

{
  "newMediaItems": [
    {
      "description": "item-description",
      "simpleMediaItem": {
        "fileName": "filename",
        "uploadToken": "upload-token"
      }
    }
   , ...
  ]
}

albumId और albumPosition का इस्तेमाल करके भी, मीडिया आइटम को किसी खास जगह पर डाला जा सकता है.

आराम

{
  "albumId": "album-id",
  "newMediaItems": [
    {
      "description": "item-description",
      "simpleMediaItem": {
        "fileName": "filename",
        "uploadToken": "upload-token"
      }
    }
    , ...
  ],
  "albumPosition": {
    "position": "after-media-item",
    "relativeMediaItemId": "media-item-id"
  }
}

एल्बम में स्थिति के संबंध में अधिक विवरण के लिए, जोड़ें बेहतर बनाने के लिए.

आइटम बनाने का जवाब

mediaItems.batchCreate कॉल, उन सभी मीडिया आइटम के लिए नतीजा दिखाता है जिन्हें बनाने की कोशिश की गई थी. newMediaItemResults की सूची से स्टेटस का पता चलता है. साथ ही, इसमें अनुरोध के लिए uploadToken शामिल होता है. नॉन-ज़ीरो स्टेटस कोड का मतलब है गड़बड़ी.

आराम

अगर सभी मीडिया आइटम सही तरीके से बन जाते हैं, तो अनुरोध दिखता है एचटीटीपी की स्थिति 200 OK. अगर कुछ मीडिया आइटम नहीं बनाए जा सकते, अनुरोध दिखाने के लिए एचटीटीपी स्थिति 207 MULTI-STATUS दिखाता है कुछ हद तक सफलता मिलती है.

{
  "newMediaItemResults": [
    {
      "uploadToken": "upload-token",
      "status": {
        "message": "Success"
      },
      "mediaItem": {
        "id": "media-item-id",
        "description": "item-description",
        "productUrl": "https://photos.google.com/photo/photo-path",
        "mimeType": "mime-type",
        "mediaMetadata": {
          "width": "media-width-in-px",
          "height": "media-height-in-px",
          "creationTime": "creation-time",
          "photo": {}
        },
        "filename": "filename"
      }
    },
    {
      "uploadToken": "upload-token",
      "status": {
        "code": 13,
        "message": "Internal error"
      }
    }
  ]
}

अगर किसी आइटम को जोड़ दिया जाता है, तो एक mediaItem दिखता है, जिसमें mediaItemId, productUrl, और mediaMetadata. ज़्यादा जानकारी के लिए, मीडिया आइटम ऐक्सेस करना लेख पढ़ें.

अगर मीडिया आइटम एक वीडियो है, तो पहले उसे प्रोसेस किया जाना चाहिए. mediaItem इसके mediaMetadata में एक status मौजूद है, जो प्रोसेसिंग के बारे में बताता है वीडियो फ़ाइल की स्थिति. अपलोड की गई नई फ़ाइल, PROCESSING का स्टेटस दिखाती है सबसे पहले, इस्तेमाल करने के लिए READY देने से पहले. ज़्यादा जानकारी के लिए, मीडिया आइटम ऐक्सेस करना लेख पढ़ें.

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

नतीजे हमेशा उसी क्रम में दिखाए जाते हैं जिसमें अपलोड टोकन सबमिट किया गया.

वीडियो अपलोड करने के सबसे सही तरीके

आपकी परफ़ॉर्मेंस को बेहतर बनाने के लिए, यहां दिए गए सबसे सही तरीकों और संसाधनों की मदद ली जा सकती है अपलोड के साथ:

  • फिर से कोशिश करने और गड़बड़ियों को ठीक करने के सबसे सही तरीके अपनाएं करने के तरीकों के हिसाब से, इन बातों को ध्यान में रखें:
    • आपका कोटा खत्म होने के बाद 429 गड़बड़ियां हो सकती हैं या बहुत तेज़ी से बहुत ज़्यादा कॉल करने की वजह से, आपका रेवेन्यू सीमित हो गया है. पक्का करें कि आप उसी उपयोगकर्ता के लिए batchCreate को पिछले अनुरोध पूरा हो गया.
    • फिर से कोशिश करने से पहले, 429 गड़बड़ी होने पर, कम से कम 30s की देरी हो सकती है. किसी एक्स्पोनेंशियल बैकऑफ़ रणनीति तय करें.
    • 500 गड़बड़ियां तब होती हैं, जब सर्वर में कोई गड़बड़ी होती है. अपलोड करते समय, ऐसा अक्सर कई ईमेल लिखने के कारण होता है (जैसे batchCreate). इसकी जानकारी देखें आपका अनुरोध स्वीकार करेगा और batchCreate को साथ-साथ कॉल नहीं करेगा.
  • फिर से शुरू करने लायक अपलोड फ़्लो का इस्तेमाल करके अगर नेटवर्क में रुकावटें आती हैं, तो वीडियो को अपलोड करने की प्रोसेस को बेहतर बनाया जा सकता है. ऐसा करने से, आंशिक रूप से पूरे किए गए अपलोड को फिर से शुरू करने की सुविधा देकर बैंडविड्थ उपयोग को ट्रैक किया जा सकता है. यह क्लाइंट के मोबाइल डिवाइस से या वीडियो अपलोड करते समय, बड़ी फ़ाइलें.

साथ ही, अपलोड करने की प्रोसेस के हर चरण के लिए, इन सुझावों का पालन करें: बाइट अपलोड करना और फिर मीडिया आइटम बनाना.

बाइट अपलोड की जा रही हैं

  • बाइट अपलोड (अपलोड टोकन पाने के लिए) साथ-साथ की जा सकती है.
  • हर अपलोड कॉल के लिए, X-Goog-Upload-Content-Type हेडर में हमेशा सही MIME टाइप सेट करें.

मीडिया आइटम बनाना

  • किसी एक उपयोगकर्ता के लिए batchCreate के साथ-साथ कॉल न करें.

    • हर उपयोगकर्ता के लिए, batchCreate को एक के बाद एक कॉल करें (इसमें सीरियल नंबर.
    • अगर एक से ज़्यादा उपयोगकर्ताओं को कॉल करना है, तो हर उपयोगकर्ता के लिए हमेशा batchCreate कॉल करें एक के बाद एक. साथ-साथ सिर्फ़ अलग-अलग उपयोगकर्ताओं के लिए कॉल करें.
  • ज़्यादा से ज़्यादा NewMediaItems शामिल करें हर कॉल में batchCreate पर किए गए कॉल की कुल संख्या को कम करने के लिए बहुत ही ज़रूरी है. ज़्यादा से ज़्यादा 50 आइटम शामिल किए जा सकते हैं.

  • ऐसा ब्यौरा टेक्स्ट सेट करें जो काम का हो जिसे आपके उपयोगकर्ताओं ने बनाया है. जानकारी वाले फ़ील्ड में, मेटाडेटा शामिल न करें. जैसे, फ़ाइल का नाम, प्रोग्रामैटिक टैग या अपने-आप जनरेट होने वाला अन्य टेक्स्ट.

सिलसिलेवार तरीके से दिए गए निर्देशों का उदाहरण

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

पहला चरण: रॉ बाइट अपलोड करना

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

  • एक साथ अपलोड थ्रेड की संख्या, आपके डिवाइस के ऑपरेटिंग सिस्टम पर निर्भर करती है पर्यावरण को ध्यान में रखते हुए काम करना.
  • ज़रूरत के हिसाब से, अपलोड की सूची का क्रम बदलें. उदाहरण के लिए, हर उपयोगकर्ता के लिए बचे हुए अपलोड की संख्या, उपयोगकर्ता की कुल प्रोग्रेस या अन्य ज़रूरी शर्तों के आधार पर, अपलोड को प्राथमिकता दी जा सकती है.

स्यूडोकोड

CREATE uploadQueue FROM users, filesToUpload
// Upload media bytes in parallel.
START multiple THREADS
  WHILE uploadQueue is not empty
    POP uploadQueue
    UPLOAD file for user
    GET uploadToken
    CHECK and HANDLE errors
    STORE uploadToken for user in uploadTokensQueue
  END

दूसरा चरण: मीडिया आइटम बनाना

पहले चरण में, एक साथ कई उपयोगकर्ताओं से कई बाइट अपलोड किए जा सकते हैं. हालांकि, दूसरे चरण में, एक बार में हर उपयोगकर्ता के लिए सिर्फ़ एक कॉल किया जा सकता है.

स्यूडोकोड

// For each user, create media items once 50 upload tokens have been
// saved, or no more uploads are left per user.
WHEN uploadTokensQueue for user is >= 50 OR no more pending uploads for user
  // Calls can be made in parallel for different users,
  // but only make a single call per user at a time.
  START new thread for (this) user if there is no thread yet
    POP 50 uploadTokens from uploadTokensQueue for user
    CALL mediaItems.batchCreate with uploadTokens
    WAIT UNTIL batchCreate call has completed
    CHECK and HANDLE errors (retry as needed)
  DONE.

यह प्रोसेस तब तक जारी रखें, जब तक सभी अपलोड और मीडिया बनाने का अनुरोध पूरा नहीं हो जाता.