Video Intelligence Streaming API mendukung protokol live streaming standar seperti RTSP, RTMP, dan HLS. Pipeline penyerapan AIStreamer berperilaku sebagai proxy streaming, yang mengonversi dari protokol live streaming menjadi koneksi gRPC streaming dua arah.
Untuk mendukung protokol live streaming, Video Intelligence API menggunakan framework media terbuka GStreamer.
Langkah 1: Membuat pipeline bernama
Pipe bernama dibuat untuk melakukan komunikasi antara GStreamer dan proxy penyerapan AIStreamer. Kedua proses berjalan di dalam container Docker yang sama.
- path_to_pipe: jalur file di lingkungan lokal Anda. Misalnya, /user/local/Desktop/
- name_of_pipe: nama pipa yang Anda berikan. Misalnya,
my-football-game
$ export PIPE_NAME=/path_to_pipe/name_of_pipe $ mkfifo $PIPE_NAME
Contoh: /user/local/Desktop/my-football-game
Langkah 2: Jalankan proxy penyerapan AIStreamer
Contoh C++ ini, yang tersedia untuk Anda gunakan, menyertakan biner tunggal yang mendukung semua fitur. Untuk membuat contoh, ikuti petunjuk build ini.
Contoh berikut menunjukkan cara menggunakan biner dari command line.
$ 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
menentukan jalur file JSON yang berisi kunci akun layanan Anda.
Anda dapat menemukan contoh file konfigurasi—$CONFIG
di github.
Pastikan untuk menetapkan tanda waktu tunggu yang benar di command line. Jika Anda perlu melakukan streaming video berdurasi 1 jam, nilai waktu tunggu minimal harus 3.600 detik.
Langkah 3: Jalankan pipeline GStreamer
GStreamer mendukung beberapa protokol live streaming, termasuk, tetapi tidak terbatas pada:
HTTP Live Streaming (HLS)
Protokol Streaming Real-Time (RTSP)
Protokol Real-Time (RTP)
Protokol Pesan Real-Time (RTMP)
WebRTC
Streaming dari Webcam
Video Intelligence API menggunakan pipeline GStreamer untuk mengonversi protokol live streaming ini ke streaming video yang dapat didedead, dan menulis aliran data ke pipa bernama yang dibuat pada Langkah 1.
Contoh berikut menunjukkan cara menggunakan library live streaming menggunakan protokol HLS, RTSP, dan 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
Protokol Streaming Real-Time (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
Protokol Pesan Real-Time (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
Petunjuk build
Contoh biner
dibuat menggunakan Bazel. Contoh Docker yang memiliki semua dependensi build yang dikonfigurasi juga disediakan. Anda dapat menemukan biner streaming_client_main
yang dikompilasi dalam direktori $BIN_DIR
image Docker.
Untuk mengetahui informasi selengkapnya tentang cara menggunakan Docker, baca Menggunakan Docker & Kubernetes.
Kontrol alur
Server Video Intelligence Streaming API memiliki kontrol alur yang melekat.
Dalam dua kasus berikut,permintaan StreamingAnnotateVideoRequest
ditolak, dan koneksi streaming gRPC akan langsung dihentikan:
Klien penyerapan AIStreamer terlalu sering mengirimkan permintaan ke server Google.
Klien penyerapan AIStreamer mengirimkan terlalu banyak data ke server Google (lebih dari 20 Mbyte per detik).
Visualisasi
Kode visualizer yang disediakan dalam AIStreamer hanya boleh dianggap sebagai contoh kode. Visualizer mungkin tidak kompatibel dengan lingkungan lokal pengguna. Pengguna AIStreamer tidak boleh mengandalkan kode klien untuk memvisualisasikan hasil anotasi.