2016年1月18日月曜日

ビデオカメラの動画をネット配信する

防犯カメラとかUSBカメラの映像をネット配信するサーバをたまに見かけるんですが、どうやって作るのか調べてみました。

まず、動画をPCに取り込むキャプチャーデバイスが必要です。
高画質なHD画質で取り込みたい場合はAverMediaのAVT-C875などがよく使われてします。
SD画質で良い場合は、IO-DataのGV-USB2が値段も安くて手頃です。
これらのデバイスはWindowsのDirectShowに対応しているので、デバイスを買ってきてパソコンにデバイスドライバーを入れさえすれば、専用ソフトウェアだけでなく、さまざなまソフトウェアでキャプチャーを行うことができます。


続いて、ソフトウェアです。ffmepgというソフトウェアを使います。


このソフトウェアをパソコンに入れて、コマンドラインから次のように打つと、キャプチャーした動画のファイルが作られます。


ffmpeg -f dshow -i video="デバイス名" out.mp4


実際には録画時間や画面サイズ等を指定したいと思いますので、以下のようにします。




ffmpeg -f dshow -i video="デバイス名" -t 300 -s 1280x720 -r 30 out.mp4


また、デバイス名がわからない場合は以下のように打つと名前を取得することができます。



ffmpeg -list_devices true -f dshow -i dummy


たったこれだけ。
これでPC上にビデオカメラの映像を取り込むことができるんです。

昔はね、DirectX-SDK入れて、DirectShowのFilterGraphを作ってとっても難しいCOMの勉強をしないと動画キャプチャーのプログラムなんてできなかったんです。しかし、今ではコマンドを打つだけで色々なエンコード形式で動画をキャプチャーして保存できるんです。おじさん、最新のソフトウェア技術に全くついていけてませんでした。


コマンドを打つのを自動化し、キャプチャー動画をhttpdのディレクトリに保存すれば、動画配信サーバも簡単に作れちゃいます。

ネット対応の防犯カメラって意外と簡単に作れちゃうんです。


ffmpegは録画だけでなく、動画ファイルから静止画の切り出しとかも簡単にできるので、切り出した画像をOpenCVやTensorFlowで解析すれば、動画を使った顔認識とか今流行りの深層学習DeepLerningとかも簡単に行えます。問題は動画の画像の解析はとても時間がかかることです。静止画はそんなに時間がかからないのですが、動画はGPUがないとダメな気がします。



0 件のコメント:

コメントを投稿