Cara melakukan streaming video live

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.