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: Buat pipe bernama

Pipe bernama dibuat untuk berkomunikasi antara GStreamer dan proxy transfer AIStreamer. Kedua proses tersebut 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 satu biner yang mendukung semua fitur. Untuk mem-build contoh, ikuti petunjuk build berikut.

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 file JSON yang berisi kunci akun layanan Anda.

Anda dapat menemukan contoh file konfigurasi—$CONFIG di github.

Pastikan untuk menetapkan flag waktu tunggu yang benar di command line. Jika Anda perlu melakukan streaming video berdurasi 1 jam, nilai waktu tunggu harus minimal 3.600 detik.

Langkah 3: Jalankan pipeline GStreamer

GStreamer mendukung beberapa protokol live streaming, termasuk tetapi tidak terbatas pada:

  • HTTP Live Streaming (HLS)

  • Real-time Streaming Protocol (RTSP)

  • Real-time Protocol (RTP)

  • Real-time Messaging Protocol (RTMP)

  • WebRTC

  • Streaming dari Webcam

Video Intelligence API menggunakan pipeline GStreamer untuk mengonversi dari protokol streaming live ini ke streaming video yang dapat didekode, dan menulis streaming ke pipe 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

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

Petunjuk build

Contoh biner di-build menggunakan Bazel. Contoh Docker yang telah mengonfigurasi semua dependensi build juga disediakan. Anda dapat menemukan biner streaming_client_main yang dikompilasi di direktori $BIN_DIR image Docker.

Untuk mengetahui informasi selengkapnya tentang penggunaan Docker, lihat Menggunakan Docker & Kubernetes.

Kontrol alur

Server Video Intelligence Streaming API memiliki kontrol alur bawaan. Dalam dua kasus berikut,permintaan StreamingAnnotateVideoRequest ditolak, dan koneksi streaming gRPC segera dihentikan:

  • Klien penyerapan AIStreamer terlalu sering mengirimkan permintaan ke server Google.

  • Klien penyerapan AIStreamer mengirim terlalu banyak data ke server Google (di luar 20 Mbyte per detik).

Visualizer

Kode visualiser yang disediakan di 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.