簡介
本文將逐步說明如何使用 YouTube Live Streaming API 和 YouTube Content ID API,在 YouTube 上建立及管理直播。
資源和資源類型
如入門指南所述,資源是指具有專屬 ID 的個別資料實體。如要在 YouTube 建立及管理現場直播,您需要使用多種資源,這些資源定義於 YouTube Data API 或 YouTube Content ID API。YouTube Live Streaming API 標題下方列出的資源,在技術上是由其他 API 定義,但由於這些資源僅用於現場直播,因此會分開列出。
YouTube Live Streaming API 資源
YouTube Data API 資源
YouTube Content ID API 資源
建立及管理現場直播
下列步驟說明如何在 YouTube 建立及管理現場直播。 這些步驟分為下列階段:
階段 1:設定廣播
步驟 1.1:建立直播
呼叫 liveBroadcasts.insert 方法,將廣播內容新增至 YouTube 的直播活動時間表。您插入的 liveBroadcast 資源必須定義下列屬性的值。
設定廣播時,請考量下列規範:
如要為直播設定測試階段,讓您在其他觀眾無法觀看直播的情況下觀看影片直播,則必須將
contentDetails.monitorStream.enableMonitorStream屬性設為true,並將contentDetails.enableAutoStart屬性設為false。這兩項屬性的預設值。如要從錄製的廣播建立參照,請將廣播的
contentDetails.recordFromStart屬性設為true。如要在直播結束後立即提供錄製的影片供使用者播放,您也必須將contentDetails.enableDvr屬性設為true。(這兩項屬性的預設值都是true)。如要限制可觀看直播的區域,可以設定
contentDetails.availabilityConfig屬性。這項屬性可讓你封鎖特定區域,或限制僅在指定區域供應。你也可以指定區域供應情形的時間範圍。您可以視需要使用
snippet.categoryId屬性,指定廣播的影片類別。如未指定,類別預設為Entertainment。只要廣播狀態仍為
created或ready,您就可以更新任何contentDetails屬性。只要廣播狀態為
created、ready或testing,你就能更新廣播的預定開始時間和預定結束時間。直播的標題、說明、類別和隱私狀態,以及直播
video資源中的其他中繼資料欄位,隨時可以更新。
注意:如果只想讓特定 YouTube 使用者觀看影片,請視需求將status.privacyStatus屬性值設為unlisted或private。
處理 API 回應
呼叫 liveBroadcasts.insert 方法時,API 回應會包含您建立的 liveBroadcast 資源。程式碼應從該資源擷取並儲存 id。日後發出 API 要求時,您需要使用這個值來識別直播。(您也可以使用相同 ID 找出與 liveBroadcast 資源對應的 video 資源)。
步驟 1.2:建立串流
liveStream 資源可讓你將影片傳輸至 YouTube,並說明傳輸的內容。每場直播都必須與一個串流建立關聯。
呼叫 liveStreams.insert 方法,為活動建立影片串流。建立串流時,您必須為下列屬性設定值:
除了直播標題外,這些值在直播建立後就無法更新。如要變更,則必須重複這個步驟,建立其他串流。本文稍後的步驟 3.5 會詳細說明這個程序。
您也可以選擇為下列屬性設定值:
snippet.description:與直播標題一樣,直播說明可在直播建立後更新。YouTube 使用者不會看到標題和說明。[
contentDetails.isReusable](/youtube/data/live/reference/rest/v3/liveStreams#contentDetails.isReusable)
指出串流是否可重複使用,也就是說,串流可繫結至多個廣播。這項屬性的值會決定管道在
liveBroadcast和liveStream資源之間,是否具有多對一或一對一關係:- 如果使用屬性的預設值
true,則可將同一個liveStream資源用於頻道的所有直播。也就是說,您不必為每場直播重複執行步驟 1.2。請改為在後續的廣播中重複使用串流 ID。 - 如果將屬性值設為
false,則必須為每場廣播建立新的串流。
- 如果使用屬性的預設值
發出 API 要求後,API 回應會包含您建立的 liveStream 資源。程式碼應從該資源擷取並儲存 id。您需要這個值,才能在日後的 API 要求中識別串流。
步驟 1.3:將廣播內容繫結至串流
建立 liveBroadcast 和 liveStream 資源後,您現在需要使用 liveBroadcasts.bind 方法建立兩者之間的關聯。這項操作會將你要傳輸至 YouTube 的影片片段,與該影片的活動直播連結。
呼叫 liveBroadcasts.bind 方法時,請將 id 參數設為步驟 1.1 中取得的廣播 ID,並將 streamId 參數設為步驟 1.2 中取得的串流 ID。
階段 2:聲明內容著作權
如要在直播期間顯示廣告,請務必在活動開始前認領直播影片。請按照下列步驟設定直播、影片和廣告。 請注意,直播擁有者的頻道必須符合廣告放送資格。
請注意,本階段討論的所有 API 呼叫,都是在 YouTube Content ID API 中定義。
步驟 2.1:建立資產
asset 資源代表一項智慧財產。在本例中,資產就是你的廣播。呼叫 assets.insert 方法來建立素材資源。
API 回應會包含您建立的 asset 資源。您的程式碼應從該資源中擷取並儲存 id,因為您需要該值來識別日後的 API 要求的資產。
步驟 2.2:定義資產擁有權
資產擁有權資料會識別資產擁有者,以及擁有資產的地域。YouTube 會根據這項資料,判斷擁有者可以在哪些地區為收到版權聲明的影片設定政策。
舉例來說,假設你有權在美國播送某個活動,而另一位播送者擁有在加拿大播送該活動的權利,那麼你們可以分別為播送影片和與播送影片相符的使用者上傳影片定義不同的政策。在美國,系統會對相符的使用者上傳影片套用你的比對政策,在加拿大則會套用其他擁有者的政策。
如要定義資產的擁有權地域,請呼叫 ownership.update 方法。在該要求中,將 assetId 參數設為您在步驟 2.1 中儲存的 id。
步驟 2.3:設定資產的比對政策
資產的比對政策說明,當使用者上傳的影片與資產相關聯的參考檔案相符時,YouTube 應採取什麼行動。在這種情況下,比對政策會指出 YouTube 應如何處理與現場直播相符的上傳影片。
注意:如果你打算根據直播影片建立參考檔案,並使用該參考檔案找出與直播內容相符的使用者上傳影片,請務必設定比對政策。您也可以略過這個步驟。
如要設定比對政策,請先找出要套用的政策。您可以呼叫 policies.list 方法來擷取現有政策清單,也可以呼叫 policies.insert 方法來定義新政策。無論是哪種情況,您都需要擷取要套用的政策 id。
找出政策後,請呼叫 assetMatchPolicy.update 方法。在該要求中,將 assetId 參數設為您在步驟 2.1 中儲存的 id。
步驟 2.4:聲明影片擁有權
在這個步驟中,您會建立著作權聲明,將要播送的影片連結至步驟 2.1 建立的資產。版權聲明會設定僅適用於直播影片的政策。(與你播送影片相符的使用者上傳影片,會套用上一個步驟設定的比對政策)。
如要建立聲明,請呼叫 claims.insert 方法。在您插入的 claim 資源中,您需要為下列屬性設定值:
assetId:您在步驟 2.1 取得的值。videoId:這是您在步驟 1.1 取得的廣播 ID。policy:這是policy資源。如要套用現有政策,請將該資源的id屬性設為現有政策的 ID。上一個步驟說明如何擷取現有政策的 ID。contentType:將這個值設為audiovisual。
處理 API 回應
插入版權聲明時,API 回應會包含您建立的 claim 資源。程式碼應從該資源中擷取並儲存 id。稍後您會使用這個值,從處理後的影片建立參考檔案。
步驟 2.5:更新直播的廣告設定
如要在觀眾開始觀看直播時放送前置廣告,或在直播休息時間放送廣告,請為影片設定廣告選項。
- 如果為直播啟用片頭廣告,所有觀眾在開始觀看直播時都會看到廣告,即使他們在直播中途才開始觀看也一樣。
- 如果為直播啟用片中廣告,就能在直播期間插入廣告提示點。
如要啟用廣告,請呼叫 videoAdvertisingOptions.update 方法。在要求中,將 videoId 參數設為在步驟 1.1 取得的直播 id。使用 videoAdvertisingOption 資源的 adFormats[] 屬性,找出要啟用的廣告格式 (preroll、midroll 或 postroll)。
第 3 階段:測試
在這個階段,您會嵌入播放器,顯示廣播的監控串流,以便測試觀看體驗。監控直播是私人直播,可讓你預覽 YouTube 觀眾看到的直播影片。
請注意,只有在啟用監控串流時,才能測試影片直播。根據預設,系統會啟用廣播的監控串流。如要停用直播的監控串流,請在建立或更新直播時,將 contentDetails.monitorStream.enableMonitorStream 屬性設為 false。
步驟 3.1:嵌入監控串流播放器
使用 liveBroadcasts.list 方法擷取廣播,並擷取 contentDetails.streamDetails.monitorStreamEmbedHtml 屬性的值。該值包含 HTML,您需要嵌入 YouTube 播放器,顯示監控畫面串流。
步驟 3.2:開始錄製影片
開始在影片串流中傳輸影片。
步驟 3.3:確認影片串流已啟用
呼叫 liveStreams.list 方法,擷取與廣播相關聯的 liveStream 資源。確認 status.streamStatus 屬性的值為 active,這表示 YouTube 伺服器已正確接收編碼器傳送的資料。
步驟 3.4:將廣播狀態轉換為測試
呼叫 liveBroadcasts.transition 方法,更新直播狀態。將 id 參數值設為步驟 1.1 中取得的廣播 ID,並將 broadcastStatus 參數值設為 testing。
呼叫 liveBroadcasts.transition 方法後,轉換作業可能需要幾秒,甚至一分鐘才能完成。在這段期間,您應輪詢 API 來檢查廣播狀態。在轉換完成前,廣播的狀態會顯示為 testStarting。轉換完成後,狀態會顯示為 testing。
步驟 3.5:完成測試
如果測試順利完成,請前往第 4 階段。 不過,在某些情況下,您可能需要進一步測試。舉例來說,如果測試結果顯示影片串流設定不正確,請先修正問題,再繼續直播。
如果影片串流設定不正確,請解除繫結 (並刪除) 現有串流,然後建立新的串流。舉例來說,如果串流指定了錯誤的影片格式,可能就表示設定不正確。
-
如要解除繫結影片串流,請呼叫步驟 1.3 的
liveBroadcasts.bind方法。在 API 要求中,將id參數設為步驟 1.1 中取得的id。請勿在要求中加入streamId參數。 -
如要刪除影片串流,請呼叫
liveStreams.delete方法。在要求中,將id參數設為在步驟 1.2 取得的id。 -
重複步驟 1.2,建立設定正確的新
liveStream資源。接著,重複步驟 1.3,將新直播繫結至直播活動,並重複步驟 3.1 至 3.3,測試新直播。
步驟 3.6:啟用 autoStart 和 autoStop 屬性
成功完成測試階段後,您可以選擇在實際直播開始前,將直播的 contentDetails.enableAutoStart 和 contentDetails.enableAutoStop 屬性設為 true。在測試階段之前,這些屬性無法設為 true,因為測試實際上會導致廣播開始。
階段 4:直播
在這個階段,觀眾可以觀看直播影片。
步驟 4.1:開始錄製影片
開始傳輸影片串流。
步驟 4.2:確認影片串流處於有效狀態
呼叫 liveStreams.list 方法,擷取與廣播相關聯的 liveStream 資源。確認 status.streamStatus 屬性的值為 active,這表示 YouTube 伺服器正確接收編碼器的資料。
步驟 4.3:將廣播狀態轉換為直播
重要事項:完成這個步驟後,觀眾就能看到你的影片。
呼叫 liveBroadcasts.transition 方法來更新廣播狀態。將 id 參數值設為步驟 1.1 取得的直播 ID,並將 broadcastStatus 參數值設為 live。
如果將 liveBroadcast 資源的 contentDetails.enableAutoStart 屬性設為 true,就不需要呼叫 liveBroadcasts.transition 方法。
發出這項 API 呼叫後,或者如果您已將 contentDetails.enableAutoStart 屬性設為 true,則在開始串流後,通常需要等待 5 到 10 秒,轉換作業才會完成。轉換程序最多可能需要一分鐘。在這段期間,您應輪詢 API 來檢查直播狀態。過渡期結束前,廣播狀態會顯示為 liveStarting。轉換完成後,狀態會變成 live,觀眾就能從監控串流的該時間點開始觀看直播。
請注意,這個指令會產生下列影響:
- 如果已為廣播啟用監控串流 (請參閱步驟 3.1),您就能在內嵌播放器中觀看監控串流。
- 如果您已為直播的
contentDetails.streamDetails.broadcastStreamDelayMs屬性設定值,其他觀眾看到的直播串流會延遲該時間長度。
步驟 4.4:在直播中插入廣告
呼叫 liveBroadcasts.cuepoint 方法插入提示點。提示點可能會觸發廣告插播。在要求主體提供的 cuepoint 資源中,將 durationSecs 屬性設為要顯示的廣告插播長度 (以秒為單位)。(預設值為 30)。
此時,YouTube 會嘗試在影片播放器中,向插入廣告提示點時正在觀看直播的所有觀眾播放廣告。廣告是否播放取決於多項因素,例如廣告供應情形和觀眾的廣告觀看記錄。廣告插播結束後,觀眾會返回直播畫面。未看到廣告的觀眾則會在插播期間繼續觀看直播。
入門指南提供更多資訊,說明直播廣告插播期間的觀看體驗。
第 5 階段:結束直播
步驟 5.1:停止串流
YouTube 直播系統測試到此結束。
步驟 5.2:將直播狀態轉換為完成
準備停止廣播時,請呼叫 API 的 liveBroadcasts.transition 方法來更新廣播狀態。將 id 參數值設為步驟 1.1 中取得的廣播 ID,並將 broadcastStatus 參數值設為 complete。
如果您將直播的 contentDetails.recordFromStart 和 contentDetails.enableDvr 屬性設為 true,則在直播活動結束後,觀眾可以立即觀看直播活動重播。
第 6 階段:建立參照
直播錄影完成後,你可以使用錄製的影片建立參考檔案。這項動作會指示 YouTube 尋找與直播相符的使用者上傳影片,並根據你在步驟 2.3 設定的比對政策處理這些影片。
重要事項:如要建立參照,必須將廣播的 contentDetails.recordFromStart 屬性設為 true。
步驟 6.1:輪詢 Data API,取得影片狀態
YouTube 必須先完成直播或上傳影片的處理作業,才能從該影片建立參考檔案。如要判斷影片是否已完成處理,請輪詢 YouTube Data API 的 videos.list 方法,將 part 參數設為 status,並將 id 參數設為您在步驟 1.1 中儲存的廣播 ID。
對輪詢要求發出的 API 回應會包含 video 資源。當該資源的 status.uploadStatus 屬性值為 processed 時,請繼續執行步驟 6.2。
步驟 6.2:根據處理後的影片建立參考檔案
如要建立參考檔案,請呼叫 Content ID API 的 references.insert 方法,並將 claimId 參數設為您在步驟 2.4 中儲存的著作權聲明 ID。
Live Content ID 提交
部分 YouTube 合作夥伴可以在廣播轉換為 testing 狀態前建立參照,但這項功能並非適用於所有合作夥伴。在該流程中,YouTube 會在直播進行期間,從現場直播的廣播串流生成並持續更新參考檔案。此外,YouTube 也會在直播期間,尋找相符的使用者上傳影片。請注意,在直播開始前建立參考檔案,系統會自動開啟直播錄製功能,且參考檔案建立後,錄製功能就無法關閉。
如要啟用直播,以便透過 Content ID 傳送內容,請在步驟 2.4 聲明影片著作權後,嘗試執行步驟 6.2 所述的動作。如果合作夥伴帳戶未在直播前獲得核准,無法為直播建立參考檔案,API 會傳回 fingerprintingNotAllowed 錯誤。在這種情況下,您必須等到直播結束 (如上述步驟 6.1 和 6.2 所述),才能建立參考檔案。