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 ke koneksi gRPC streaming dua arah.

Untuk mendukung protokol live streaming, Video Intelligence API menggunakan framework media terbuka GStreamer.

Langkah 1: Buat pipa bernama

Named pipe dibuat untuk berkomunikasi 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 satu biner yang mendukung semua fitur. Untuk membuat contoh, ikuti petunjuk pembuatan 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 file JSON yang berisi kunci akun layanan Anda.

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

Pastikan untuk menyetel tanda 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 live streaming ini ke aliran video yang dapat didekode, dan menulis aliran ke named pipe 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 pembuatan

Contoh biner dibuat 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 cara menggunakan Docker, lihat Menggunakan Docker & Kubernetes.

Kontrol alur

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

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

  • Klien penyerapan AIStreamer mengirimkan terlalu banyak data ke server Google (lebih dari 20 Mbyte per detik).

Visualizer

Kode visualizer 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.