簡體   English   中英

將預先錄制的視頻提供給 Azure 媒體服務作為實時 stream

[英]Feed a pre-recorded video to Azure Media services as a live stream

我想做一些對我來說聽起來很簡單的事情,但我很難找到解決方案。

我有一個預先錄制的視頻,需要由 API 啟動。 我需要該視頻是 stream 通過 RTMP 直播。 現在我執行以下操作:

(所有通過代碼自動化)

  • 創建 azure 直播活動
  • 獲取現場活動的輸入 url
  • 使用 FFMPG 啟動 docker 映像
  • 提供參數(現場編碼器的原始預錄視頻和目標輸入)
  • 從端點獲取 output URL
  • 將其放入數據庫
  • 有一個 API 我的 web 播放器查詢以了解作業的狀態
  • 當我在數據庫中的行現在有來自實時編碼器的 output URL 時,啟動 stream

它縫合非常復雜。 我很擔心這樣一個流程中的許多問題:

  • ffmpg 的性能問題
  • 延遲啟動所有資源
  • 一個組件在該流程中崩潰

最后,我只想開始直播 stream 並告訴它使用 MP4 而不是等待 RTMP 提要....

選項 >

  • Restream.io 讓我可以安排任何視頻並開始將其流式傳輸到我的端點。 我必須弄亂他們的 API 才能完成這項工作,我寧願將所有東西都保留在 azure 中。

我很確定我在這里錯過了一件非常簡單的事情。 任何幫助將不勝感激!

首先要回答人們的問題,我讓這個流程運行了 300 多個測試 stream,每個流程從 48 小時到 30 分鍾的不同形式。

失敗率極高。

  • 媒體服務未能及時啟動
  • FFMPEG 丟幀率
  • 您可以想象的非常昂貴的設置
  • 斷開媒體服務和 FFMPEG 之間的連接。
  • 實時編碼器未能從 FFMPEG 捕獲 stream

另一方面,我正常的 stream 性能(來自 RTMP 源)非常穩定。

  • 10 天 24h/7 在 10 個端點編碼器上流式傳輸(警告,您必須聯系 Microsoft 以增加您的 5 個限制)
  • 超過 20 TB 的數據覆蓋全球 350 個城市,具有出色的性能和非常低的延遲。

因此,對於為所有觀眾提供“實時流”體驗的預先錄制的視頻,我采用了一種非常簡單的方式。

當我確實需要可變比特率時的選項 1:

  • 在 AWS G4 實例上自動執行 OBS 中的腳本。
  • 通過 api 完全控制(啟動、關閉和流式傳輸)
  • 我推送到 Azure 事件中心的非常詳細的錯誤 state
  • 大量 stream 的失敗率為 0
  • 缺點:不在我的 azure 計費帳戶中

當我不需要可變比特率時的選項 2:

  • 在 Azure 媒體服務中設置 MP4
  • Json 時間戳作為我的 MP4 的元數據
  • 通過 Javascript 我的 Azure 視頻播放器同步,以遵循 MP4 中的當前時間戳,並讓我所有的 stream 事件在適當的時候觸發播放器和我的應用程序,供所有人觀看。

現在我正在攻擊所有 VOD 和 RTMP 上 5 種語言的實時翻譯......祝我好運。

干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM