ちょっと整理
gpuを使い映像をopencvで処理し、webで結果を動的に見たい。
それだけなのに、何だか大変。
gpuを映像処理に使い、デコード、エンコードはintel qsvもあり得る?
必要なコンポーネント
- 映像処理 opencv
- 加速用のcuda
- rtmp化 gstreamer
- rtmp配信用のnginx
- rtmp閲覧用のvideo.js or 何か
- web閲覧用のデモページhtml
- できればcudaをdocker上
- 更に出来ればサービスをkubernetesで管理
- 映像処理用のpython
- クライアントから直接サーバーにアクセスできないので、リバースプロキシ。
困っている事
ほぼ全てかな?
- 特にcudaとgstreamerを有効にしたopencvのビルドとpython binding
- python, opencv, gstreamer, cuda のバージョンが色々あり過ぎて、どのバージョンにするか悩む。とりあえずは、python 3.7, opencv4.1, gstreamer1.14.4 or 1.14.2/ubuntu-pkg, cuda10.1辺りで考えている。
- pip or anaconda?
- ubuntu or centos?
- gstreamer用のlibavとopencv用のlibavが競合しないか? 両側でgpuを使うとストリームやメモリ管理をlibav/cudaがする? nvidia mpsを使う?
- pythonでgpu /cudaを使うと、libavのgpuと競合しないか?
- 映像作成
- centosホストだが、標準パッケージのgstreamerが1.10と、とても古い。 ソースからビルド?
- その他色々。
この際、cudaやdockerは後回し? リバースプロキシやgstreamerも後回しで、x11で飛ばす?
とすると、opencvでimshowで終わりかも?
暫くはそれで行くかな?
ステップ
- まずはopencv python でimshow
- gpu をイネーブル
- gstreamerを追加
- gstreamer + gpu
- rtmp で飛ばす
- video.js で見る
- htmlで画面設計
- js使って操作
windowsでのopencv build
- 必要なコンポーネントを導入, cmake含む
- cmakeでvsのソリューションファイル作成
- build
opencv-contribを忘れずに。
その後のネタ
- 映像モールス送受信
- 分割スクリーン
- 動き検出
- 物体検出
- 顔検出
- 特徴検出、目、鼻、口など
- エフェクト、ノイズ除去、色調整
参考
nvidia mps service
gstreamer src build
intel qsv