L'API Video Intelligence Streaming supporta i protocolli standard per il live streaming come RTSP, RTMP e HLS. La AIStreamer la pipeline di importazione si comporta come un proxy per i flussi di dati, convertendo i dati protocolli di streaming alla connessione gRPC in streaming bidirezionale.
Per supportare i protocolli per il live streaming, l'API Video Intelligence utilizza il protocollo Framework multimediale aperto GStreamer.
Passaggio 1: crea una pipe con nome
Viene creata una pipeline denominata per comunicare tra GStreamer e AIStreamer proxy di importazione. I due processi vengono eseguiti nello stesso contenitore Docker.
- path_to_pipe: percorso del file nel tuo ambiente locale. Per ad esempio /user/local/Desktop/
- name_of_pipe: nome della barra che fornisci. Ad esempio,
my-football-game
$ export PIPE_NAME=/path_to_pipe/name_of_pipe $ mkfifo $PIPE_NAME
Esempio: /user/local/Desktop/my-football-game
Passaggio 2: esegui il proxy di importazione di AIStreamer
Questi esempi di C++, disponibili per l'uso, includi una binario singolo che supporta tutte le funzionalità. Per compilare gli esempi, segui queste istruzioni di compilazione.
L'esempio seguente mostra come utilizzare il file binario dalla riga di comando.
$ 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
specifica il percorso del file
File JSON contenente la chiave dell'account di servizio.
Puoi trovare un file di configurazione di esempio, $CONFIG
, su github.
Assicurati di impostare il flag di timeout corretto nella riga di comando. Se devi trasmettere in streaming un video di 1 ora, il valore di timeout deve essere di almeno 3600 secondi.
Passaggio 3: esegui la pipeline GStreamer
GStreamer supporta diversi protocolli per il live streaming inclusi, a titolo esemplificativo a:
HTTP Live Streaming (HLS)
Real-time Streaming Protocol (RTSP)
Real-time Protocol (RTP)
Real-time Messaging Protocol (RTMP)
WebRTC
Streaming dalla webcam
L'API Video Intelligence utilizza la pipeline GStreamer per convertire questi protocolli di live streaming in uno stream video decodificabile e scrive lo stream nella pipe con nome creata nel passaggio 1.
I seguenti esempi mostrano come utilizzare la libreria di live streaming utilizzando i protocolli HLS, RTSP e RTMP.
HTTP Live Streaming (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
Real-time Streaming Protocol (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
Real-time Message Protocol (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
Istruzioni per la compilazione
L'esempio di file binario viene creato utilizzando Bazel. Viene inoltre fornito un
esempio Docker
con tutte le dipendenze di compilazione configurate. Puoi trovare
ha compilato il programma binario streaming_client_main
nella directory $BIN_DIR
del
Docker.
Per ulteriori informazioni sull'uso di Docker, vedi Utilizzare Docker e per Kubernetes.
Controllo del flusso
Il server dell'API Video Intelligence Streaming ha un controllo del flusso intrinseco.
Nei due casi seguenti, le richiesteStreamingAnnotateVideoRequest
vengono rifiutate e le connessioni di streaming gRPC vengono interrotte immediatamente:
Il client di importazione di AIStreamer invia richieste ai server Google troppo spesso.
Il client di importazione di AIStreamer sta inviando troppi dati a Google (oltre 20 Mbyte al secondo).
Visualizzatore
Il codice visualizzatore fornito in AIStreamer deve essere considerato un esempio di codice. Il visualizzatore potrebbe non essere compatibile con le impostazioni locali dell'utente completamente gestito di Google Cloud. Gli utenti di AIStreamer non devono fare affidamento sul codice client per per visualizzare i risultati delle annotazioni.