動画ファイルから切り出した画像をサーバに送信する環境を構築する手順を示します。
flowchart LR
subgraph S[image-sender]
SS(SINETStream)
end
subgraph SRV[Server]
B[Kafka Broker]
end
subgraph VV["VideoViewer.py"]
RD(SINETStream)
end
F["video file"]
F==>S
SS==>|publish|B-.->RD
image-sender
を実行するための前提条件を以下に示します。
- Python
- 3.8 以降
また画像ストリームの送信先となる Kafka ブローカが利用可能な状態になっている必要があります。以下に示すいずれかの構成でKafkaブローカを事前に構築してください。
image-sender
が利用する Python ライブラリをインストールします。
pip install -U --user sinetstream-kafka sinetstream-type-image
既にインストールしているライブラリとconflictしてしまいエラーとなる場合は venv や pipenv などの仮想環境の利用を検討してください。また環境によっては
pip
コマンドはpip3
となっていることがあります。必要に応じて読み替えて下さい。
image-sender
ではSINETStreamライブラリを利用して Kafka ブローカへと画像を送信します。SINETStreamではアクセスするブローカのアドレス、トピック名などのパラメータを設定ファイル.sinetstream_config.yml
に記述しておく必要があります。設定ファイルの記述例を以下に示します。
video:
topic: sinetstream.image.video
brokers: kafka.example.org:9092
type: kafka
consistency: AT_LEAST_ONCE
brokers
と topic
の値を実行環境に合せて修正してください。他のパラメータの指定方法など .sinetstream_config.yml
の記述方法の詳細については SINETStream - 設定ファイル を参照してください。
image-sender
のコマンドライン引数の指定方法を以下に示します。
usage: image-sender -i INPUT_VIDEO [-s SERVICE] [-r FRAME_RATE] [-R SAMPLE_RATE]
-i/--input-video 動画ファイル名
-s/--service サービス名
-r/--frame-rate フレームレート
-R/--sampling-rate サンプリングレート
-i
に指定する入力ビデオファイル名は必須項目となります。
-s
に指定するサービス名のデフォルト値は video
となります。これは SINETStream設定ファイルの記述例 example_sinetstream_config.yml にあるサービス名に合せてあります。
-r
で指定するフレームレートは Kafka ブローカに画像を送信するレートになります。デフォルトでは入力の動画ファイルのフレームレートと同じ値となります。
-R
で指定するサンプリングレートは、入力動画ファイルから画像を切り出す際にどの程度間引くかの指定となります。デフォルトでは動画に含まれるすべてのフレームを画像として切り出しKafkaブローカに送信します。