API การแทรกโฆษณาแบบไดนามิกสำหรับสตรีม VOD

Google DAI API ช่วยให้คุณใช้งานสตรีมที่เปิดใช้ Google DAI ได้ในสภาพแวดล้อมที่ไม่รองรับการติดตั้งใช้งาน IMA SDK เราขอแนะนำให้คุณใช้ IMA ในแพลตฟอร์มที่รองรับ IMA SDK ต่อไป

เราขอแนะนำให้ใช้ DAI API ในแพลตฟอร์มต่อไปนี้

  • สมาร์ททีวี Samsung (Tizen)
  • ทีวี LG
  • HbbTV
  • Xbox (แอป JavaScript)
  • KaiOS

API รองรับฟีเจอร์พื้นฐานจาก IMA DAI SDK หากมีคำถามที่เจาะจงเกี่ยวกับความเข้ากันได้หรือฟีเจอร์ที่รองรับ โปรดติดต่อผู้จัดการฝ่ายดูแลลูกค้าของ Google

ใช้ DAI API สำหรับสตรีม VOD

DAI API รองรับสตรีม VOD ที่ใช้ทั้งโปรโตคอล HLS และ DASH ขั้นตอนที่อธิบายไว้ในคู่มือนี้จะใช้กับโปรโตคอลทั้งสอง

หากต้องการผสานรวม API ในแอปพลิเคชันสำหรับสตรีม VOD ให้ทำตามขั้นตอนต่อไปนี้

  1. ขอสตรีมโดยเรียก POST ไปยังปลายทางของสตรีมโดยทำดังนี้

    ตัวอย่างเนื้อหาของคำขอ

    https://dai.google.com/ondemand/v1/dash/content/2559737/vid/tos-dash/stream
    
      {
        key1 : "value1",
        stream_parameter1 : "value2"
      }
    

    ตัวอย่างเนื้อหาการตอบกลับ:

    {
       "stream_id":"d32f8920-612a-4d46-8bc7-d73fd6c17c85",
       "total_duration":636.458,
       "content_duration":596.458,
       "valid_for":"8h0m0s",
       "valid_until":"2020-06-04T20:39:41.274707306-07:00",
       "stream_manifest":"https://dai.google.com/ondemand/dash/content/2559737/vid/tos-dash/ATL/streams/d32f8920-612a-4d46-8bc7-d73fd6c17c85/manifest.mpd",
       "media_verification_url":"https://dai.google.com/view/p/service/vod/stream/d32f8920-612a-4d46-8bc7-d73fd6c17c85/loc/ATL/network/124319096/content/2559737/vid/tos-dash/media/",
       "ad_breaks":[
          {
             "type":"pre",
             "start":0,
             "duration":10,
             "ads":[
                {
                   "seq":1,
                   "duration":10,
                   "title":"External NCA1C1L1 Preroll",
                   "description":"External NCA1C1L1 Preroll ad",
                   "clickthrough_url":"https://dai.google.com/ondemand/v1/dash/content/2474148/vid/bbb-clear/location/ATL/stream/d32f8920-612a-4d46-8bc7-d73fd6c17c85/videoclick/5489259204425938365",
                   "events":[
                      {
                         "time":0.1,
                         "type":"start"
                      },
                      {
                         "time":2.5,
                         "type":"firstquartile"
                      },
                      {
                         "time":4.75,
                         "type":"midpoint"
                      },
                      {
                         "time":7.5,
                         "type":"thirdquartile"
                      },
                      {
                         "time":9,
                         "type":"complete"
                      }
                   ]
                }
             ]
          },
          {
             "type":"mid",
             "start":45,
             "duration":10,
             "ads":[
                {.... }
                   ]
                }
             ]
          },
          {
             "type":"post",
             "start":626.458,
             "duration":10,
             "ads":[...]
          }
       ]
    }
    

    การตอบกลับข้อผิดพลาด

    ในกรณีที่เกิดข้อผิดพลาด ระบบจะแสดงรหัสข้อผิดพลาด HTTP มาตรฐานโดยไม่มีเนื้อหาการตอบสนอง JSON

  2. แยกวิเคราะห์การตอบกลับ JSON และเก็บค่าต่อไปนี้

    • stream_id
    • stream_manifest
    • media_verification_url
    • ad_breaks
  3. หากต้องการยืนยันสื่อ ให้คอยฟังเหตุการณ์ ID3 ดังนี้

    1. จัดเก็บเหตุการณ์สื่อในคิว โดยบันทึกรหัสสื่อแต่ละรหัสพร้อมกับการประทับเวลา (หากแสดงโดยโปรแกรมเล่น)
    2. ทุกครั้งที่มีการอัปเดตจากโปรแกรมเล่นหรือตามความถี่ที่ตั้งไว้ (แนะนำที่ 500 มิลลิวินาที) ให้ตรวจสอบคิวเหตุการณ์สื่อสำหรับกิจกรรมที่เล่นล่าสุดโดยเปรียบเทียบการประทับเวลาของเหตุการณ์กับส่วนหัวของตัวควบคุมการเล่น
    3. สำหรับเหตุการณ์สื่อที่คุณยืนยันว่าได้เล่นแล้ว ให้ติดตามการเล่นโดยเพิ่มรหัสสื่อต่อท้ายปลายทางการยืนยันสื่อและส่งคำขอ GET

    ตัวอย่างเนื้อหาของคำขอ

    https://dai.google.com/view/p/service/linear/stream/c6bbee18-0d20-4c55-b071-efdf3a81da33:ATL/loc/ATL/network/51636543/event/0ndl1dJcRmKDUPxTRjvdog/media/
    

    คำตอบตัวอย่าง

    Accepted for asynchronous verification - HTTP/1.1 202 Accepted
    Successful empty response - HTTP/1.1 204 No Content
    Media verification not found - HTTP/1.1 404 Not Found
    Media verification sent by someone else - HTTP/1.1 409 Conflict
    

    คุณสามารถตรวจสอบเหตุการณ์การติดตามได้ในเครื่องมือตรวจสอบกิจกรรมการสตรีม

  4. ไม่บังคับ: ใช้ข้อมูล ad_breaks จากการตอบกลับการสร้างสตรีมเพื่อค้นหาประเภทของเหตุการณ์ที่เริ่มทำงาน

  5. นำเหตุการณ์สื่อออกจากคิว

ข้อจำกัด

หากใช้ API ภายใน WebView การกำหนดเป้าหมายจะมีข้อจำกัดต่อไปนี้

  • UserAgent: ระบบจะส่งพารามิเตอร์ User Agent เป็นค่าเฉพาะเบราว์เซอร์แทนแพลตฟอร์มที่สำคัญ
  • rdid, idtype, is_lat: ไม่มีการส่งรหัสอุปกรณ์อย่างถูกต้อง ซึ่งจะจำกัดฟีเจอร์ต่อไปนี้
    • การกำหนดความถี่สูงสุด
    • การหมุนเวียนโฆษณาตามลำดับ
    • การแบ่งกลุ่มผู้ชมและการกำหนดเป้าหมาย

แนวทางปฏิบัติแนะนำ

การแมปแท็ก ID3 กับประเภทเหตุการณ์ที่เหมาะสมเป็นสิ่งที่น่าเหนื่อยหน่ายใน VOD ใช้ข้อมูล ad_breaks ที่แสดงผลใน JSON เพื่อค้นหากิจกรรมโดยตรง เช่นเดียวกับที่คุณทำกับเนื้อหาสด

แหล่งข้อมูลเพิ่มเติม