Video Intelligence Streaming API 支援標準即時串流通訊協定,例如 RTSP、RTMP 與 HLS。AIStreamer 擷取管道的行為就像串流 Proxy 一樣,可從即時串流通訊協定轉換為雙向串流 gRPC 連線。
為了支援即時串流通訊協定,Video Intelligence API 使用 GStreamer 開放媒體架構。
步驟 1:建立已命名的管線
已命名的管線會建立來在 GStreamer 與 AIStreamer 擷取 Proxy 之間通訊。這兩個程序在同一個 Docker 容器內執行。
- path_to_pipe:本機環境中的檔案路徑。例如 /user/local/Desktop/
- name_of_pipe:您提供的管道名稱。例如:
my-football-game
$ export PIPE_NAME=/path_to_pipe/name_of_pipe $ mkfifo $PIPE_NAME
示例:/user/local/Desktop/my-football-game
步驟 2:執行 AIStreamer 擷取 Proxy
您可以使用這些 C++ 範例,其中包含支援所有功能的單一二進位。如要建構範例,請按照建構指示操作。
下列範例顯示如何從指令列使用二進位。
$ export GOOGLE_APPLICATION_CREDENTIALS=/path_to_credential/credential_json $ export CONFIG=/path_to_config/config_json $ export PIPE_NAME=/path_to_pipe/name_of_pipe $ export TIMEOUT=3600 $ ./streaming_client_main --alsologtostderr --endpoint "dns:///alpha-videointelligence.googleapis.com" \ --video_path=$PIPE_NAME --use_pipe=true --config=$CONFIG --timeout=$TIMEOUT
$GOOGLE_APPLICATION_CREDENTIALS
指定包含服務帳戶金鑰的 JSON 檔案路徑。
您可以在 github 上找到範例設定檔 $CONFIG
。
確認在指令列中設定正確的逾時標記。如果您需要串流 1 小時的影片,逾時值應至少為 3600 秒。
步驟 3:執行 GStreamer 管道
GStreamer 支援多個即時串流通訊協定,包括但不限於以下項目:
HTTP 即時串流 (HLS)
即時串流通訊協定 (RTSP)
即時通訊協定 (RTP)
即時訊息傳遞通訊協定 (RTMP)
WebRTC
從網路攝影機串流
Video Intelligence API 會使用 GStreamer 管道,從這些即時串流通訊協定轉換為可解碼的影片串流,並將串流寫入至在步驟 1 中建立的已命名管道。
下列範例示範如何使用即時串流程式庫 (這些程式庫使用 HLS、RTSP 與 RTMP 通訊協定)。
HTTP 即時串流 (HLS)
$ export PIPE_NAME=/path_to_pipe/name_of_pipe $ export HLS_SOURCE=http://abc.def/playlist.m3u8 $ gst-launch-1.0 -v souphttpsrc location=$HLS_SOURCE ! hlsdemux ! filesink location=$PIPE_NAME
即時串流通訊協定 (RTSP)
$ export PIPE_NAME=/path_to_pipe/name_of_pipe $ export RTSP_SOURCE=rtsp://ip_addr:port/stream $ gst-launch-1.0 -v rtspsrc location=$RTSP_SOURCE ! rtpjitterbuffer ! rtph264depay \ ! h264parse ! flvmux ! filesink location=$PIPE_NAME
即時訊息通訊協定 (RTMP)
$ export PIPE_NAME=/path_to_pipe/name_of_pipe $ export RTMP_SOURCE=rtmp://host/app/stream $ gst-launch-1.0 -v rtmpsrc location=$RTMP_SOURCE ! flvdemux ! flvmux ! filesink location=$PIPE_NAME
建構指示
二進位範例使用 Bazel 建構,另外也提供已設定所有建構依附元件的 Docker 範例。您可以在 Docker 映像檔的 $BIN_DIR
目錄中找到已編譯的 streaming_client_main
二進位檔。
如要進一步瞭解如何使用 Docker,請參閱使用 Docker & Kubernetes 一文。
流量控制
Video Intelligence Streaming API 伺服器具有固有的流量控制功能。在以下兩種情況下,StreamingAnnotateVideoRequest
要求會遭到拒絕,gRPC 串流連線會立即停止:
AIStreamer 擷取用戶端傳送要求給 Google 伺服器的頻率過高。
AIStreamer 擷取用戶端傳送太多資料給 Google 伺服器 (超出每秒 20MB)。
圖像影片
AI Streamer 提供的視覺化程式碼僅應視為程式碼範例。視覺化工具可能與使用者的本機環境不相容。AIStreamer 使用者應不依賴用戶端程式碼來視覺化註解結果。