qshinoの日記

Powershell関係と徒然なこと

ちょっと整理

gpuを使い映像をopencvで処理し、webで結果を動的に見たい。

それだけなのに、何だか大変。

gpuを映像処理に使い、デコード、エンコードintel qsvもあり得る?

必要なコンポーネント

  1. 映像処理 opencv
  2. 加速用のcuda
  3. rtmp化 gstreamer
  4. rtmp配信用のnginx
  5. rtmp閲覧用のvideo.js or 何か
  6. web閲覧用のデモページhtml
  7. できればcudaをdocker上
  8. 更に出来ればサービスをkubernetesで管理
  9. 映像処理用のpython
  10. クライアントから直接サーバーにアクセスできないので、リバースプロキシ。

困っている事

ほぼ全てかな?

  1. 特にcudaとgstreamerを有効にしたopencvのビルドとpython binding
  2. python, opencv, gstreamer, cuda のバージョンが色々あり過ぎて、どのバージョンにするか悩む。とりあえずは、python 3.7, opencv4.1, gstreamer1.14.4 or 1.14.2/ubuntu-pkg, cuda10.1辺りで考えている。
  3. pip or anaconda?
  4. ubuntu or centos?
  5. gstreamer用のlibavとopencv用のlibavが競合しないか? 両側でgpuを使うとストリームやメモリ管理をlibav/cudaがする? nvidia mpsを使う?
  6. pythongpu /cudaを使うと、libavのgpuと競合しないか?
  7. 映像作成
  8. centosホストだが、標準パッケージのgstreamerが1.10と、とても古い。 ソースからビルド?
  9. その他色々。

この際、cudaやdockerは後回し? リバースプロキシやgstreamerも後回しで、x11で飛ばす?

とすると、opencvでimshowで終わりかも?

暫くはそれで行くかな?

ステップ

  1. まずはopencv python でimshow
  2. gpu をイネーブル
  3. gstreamerを追加
  4. gstreamer + gpu
  5. rtmp で飛ばす
  6. video.js で見る
  7. htmlで画面設計
  8. js使って操作

windowsでのopencv build

  1. 必要なコンポーネントを導入, cmake含む
  2. cmakeでvsのソリューションファイル作成
  3. build

opencv-contribを忘れずに。

その後のネタ

  • 映像モールス送受信
  • 分割スクリーン
  • 動き検出
  • 物体検出
  • 顔検出
  • 特徴検出、目、鼻、口など
  • エフェクト、ノイズ除去、色調整

参考

nvidia mps service

gstreamer src build

intel qsv