2010年8月30日月曜日

マップの出力ピンステータスの変更

概要




Omnicastマップを通してガレージ()ですべてのゲートを上げ下げしたいというDougからEmailをもらいました。どのガレージかによって、基本的に6から20の異なった論理IDで出力ピンにあてます。



マックエディタにはこの機能はありませんが、Mapsで使用できるSDKでは簡単に処理できます。



この記事のコードは こちらから ダウンロードできます。



Map SDK 101

Omnicast Live Viewerは Internet Explorer をバックグラウンドでインスタンス生成し、GxUIProxyVB SDKへのアクセスを可能にします。これにより、Javascriptでマップが

システムを相互作用できるようになります。



Javascriptで SDK にアクセスする方法:





window.external.SDK.anysdkfunction(....)Live ViewerからDirectoryにすでに認証されているため、SDK コールはユーザセキュリティコンテクストに拠って実行されます。このた

めユーザが特定のカメラにアクセス拒否されると、SDKも同様にアクセスできません。







機能の仕方



出力ピン値を変更するSDK機能は:



a.. FlipIODefault( int OutputPinID )

b.. FlipIOInverseDefault( int OutputPinID )



出力ピンのデフォルトステータスはConfig Toolで設定され、装着されたデバイスによってLowかHighに設定できます。

Ex:

window.external.SDK.FlipIOInverseDefault( 1 )一度に複数のピンのステータスを変更するには、JavaScriptアレイを宣言して、それを繰り返してください。







var outputLogicalIDGarage = new Array();

// 一度にトリガしたい全ての出力ピンの論理IDをリストしてください

outputLogicalIDGarage[0] = 1;

outputLogicalIDGarage[1] = 3;

outputLogicalIDGarage[2] = 5;



// 論理ID: 1, 3, 5の出力ピンのステータスを変更Change the state of Output pin

with the logical ID: 1, 3, and 5

for (outputID in outputLogicalIDGarage)

{

window.external.SDK.FlipIOInverseDefault(outputLogicalIDGarage[outputID]);

}







References

JavaScript reference





Jo

H.264 対 MPEG-4

Axis社と打ち合わせ中、彼らH.264はMPEG-4に比べ50%も使用帯域を抑え、いくつかのケースではそれ以上に効率がよくなっていると述べました。




なぜH.264はMPEG-4より効率がいいのでしょうか?

なぜH.264を人は心待ちにしているのでしょうか?



H.264の歴史

MPEG グループと ITU グループは、過去に独自の規格を作ろうとしていました。MPEG-1, MPEG-2 MPEG-4 のMPEG はコンシューマオーディエンスをターゲットに、ITUは H.261, H.263 でテレコム産業をターゲットにしていました。



MPEG 仕様はITUに比べ大きな自由度を持ちます: 例: どのように音声を圧縮するか、どのようにファイルへMPEG画像を保存するか、ピクチャ・オン・ピクチャエンコーディングなど



You might think H.264 はITUの生み出した単なるビデオ圧縮技術だと思っているかもしれませんが、H.264 は MPEG-4 AVC Part 10とも呼ばれています。一般的なMPEG-4 の正式名称はMPEG-4 Part 2です。



The reason why H.264 が2の名を持っている理由は、ITUとMPEGのビデオ専門家が協力し、Join Video Team を結成してH.26Lの開発をITUが続けているためです。これがH.264を以前のものと比べて非常に強力にしていると私は確信しています。



1996: ITU H.263 version 1発表

1998: ITU H.263 version 2発表

1998: ITUによりH.26L プロジェクト始動

1999: ISO MPEG-4 part 1発表

2001: ISO MPEG-4 part 2発表

2001: ITU VCEG + ISO MPEGによるJoin Video Team 結成

2003: ITU H.264 / ISO MPEG-4 Part 10 AVCのファーストバージョン発表





H.264の目的

MPEG-4 part 2はDVDの MPEG-2を置き換えるように作られているわけではなく、H.263 のように「転送」すること、もしくは比較的ローコスト(ファイルサイズ/帯域)でストアすることを目的に作られています。高ビットレート(6-8 Mbit/s)では、MPEG-4 part 2 はいまだ放送や映画産業に受け入れがたいアーティファクトを含み、そのため MPEG-2 が放送業界の標準として残っています。



H.264グループの代表権能はテレコムと放送産業界に適している柔軟な標準を作成することで、主な目的は以下のとおりです:



•ビデオ品質改善

•MPEG-4 part 2と比較して帯域を50%削減

•ハイデフビデオだけでなくインターネットストリーミング向けデザイン

•ロバストトランスミッションのビルトインサポートを含む



H.264 を強力にするのは?

H.263 と MPEG-4 part 2 仕様はいくつかの思想を共有します; 圧縮技術は殆ど同一です。実際最もシンプルなMPEG-4 ProfileであるShort Header はベーシックな H.263 ストリームです。



H.264 はいくつかの技術を完全に再開発しました。H.264の最も大きな改良はIntra Predictionです。MPEG-4 はI-Frameの圧縮が効率的ではなく、JPEG画像がI-Frameより帯域効率が上でした。Intra Predictionにより、反復的なパターンがブロック環境に基づいた予測ベクターにより効率的にエンコードされます。



モーションベクターは4x4xピクセルの精度で当てることが出来ます。8x4, 4x8, 8x8もサポートします。この柔軟性により、MPEG-4 part で最小の8x8に比べエンコーディングエラーを減らします。



CABAC (Context-based adaptive binary arithmetic coding)エントロピーコーダーは 9% から 14% ほどMPEG-4 part 2で使用されるCAVLC より効率的です。CAVLC は特定のH.264 プロファイルでまだサポートされていますし、CAVLCに比べCABAC はエンコードとデコードの際CPU負荷が高くなります。



To reduce the blocking effects seen with MPEG-4 part 2 の高圧縮レートでブロック効果を減らすには、全体的な画質を改善するデブロッキングフィルタをエンコーダで使用できます。





人気の高いH.264 プロファイル

ベースラインプロファイル:

• I-Frame と P-Frame のみ

• プログレッシブイメージ のみ。インターレースビデオサポートなし

• Redundant Slice

• CAVLC のみ

• リアルタイムアプリケーション向けローレイテンシー

• ビデオ監視産業で一般的に使用されています



メインプロファイル:

• I-Frame, P-Frame, B-Frame

• インターレースとプログレッシブイメージ

• CAVLC と CABACサポート

• 予測加重

• ハイレイテンシー

• CABAC ベースラインより高圧縮

• ベースラインよりCPU集約的

• 放送用ビデオ向けに開発されましたが後にハイプロファイルに置き換えられました



ハイプロファイル:

• ハイデフ用に設計されています

• I-Frame, P-Frame, B-Frame

• インターレースとプログレッシブイメージ

• CAVLC と CABACサポート

• ハイレイテンシー

• カラーディストーションを最小化するためにCr と Cb コントロールを分離

• CPU 集約的

• HDVD と Blue-ray、いくつかのIPTV.





セキュリティ産業でのH.264

この段階で私が見てきたH.264 IP カメラ(Axis, Sony, Arecont, IQEye)の多くはH.264 ベースラインで、セキュリティ産業には十分な機能を持ちます。



もしIPカメラの購入を考えている場合、エンコーディングプロセスより、コーデック仕様(H.264, MPEG-4)がエンコーディングプロセスを定義するのではなく、ビデオでコーダのフォーマットを定義するものだと覚えていたほうがよいでしょう。そのため、エンコーダの品質はメーカーごとに大きく異なります; H.264の実装具合が低いと、MPEG-4 part-2 エンコーダ/IP カメラのほうが効率がよい場合があります。



この記事がH.264を知るための指針になれば幸いです。その他H.264については、こちらの記事もご覧ください。



もしH.264をより詳しく知りたい場合は、以下の本をお勧めします:

The H.264 Advanced Video Compression Standard by Iain E Richardson

Jo

マクロのインストール/実行

Omnicastで一般的なマクロ実行と修正する方法のご紹介です。




マクロサンプルをインポート

Omnicastの中でマクロを実行するためには、バーチャルマトリックスのインストールとマクロ使用が許可されたライセンスオプションを持っていなくてはなりません。



Omnicast Config Tool使用方法





新しいマクロを作成: ロジカルビューを右クリックしてください: 作成->アドイン管理->マクロ

新しく作成されたマクロ; 右のペインで "コード" タブを選択してください

インポートをクリックして、zip ファイルに含まれるwscファイルを選択します。

変更を保存するために上部にある適用をクリックしてください

警告を受け入れてください。どうすべきかはご存知と思います :)





実行する



マクロは今設定されましたが、システム上で動作しません。マクロはVirtual Matrix上で実行されるのであって、イベント、ユーザーのリクエスト、スケジュールのどれかから実行させれます。



スケジュール



ロジカルビューを右クリックしてください: 作成->マクロスケジュール

マクロを実行するバーチャルマトリックスを選択してください

プロパティをクリックして、実行するマクロを選択してください

常時出ない場合、有効範囲を設定してください

上部の適用をクリックしてください

スケジュールで実行されるマクロは常に特定の時間に実行されます。もしマクロが停止するとマトリックスは自動的に1分以内に再実行します。



イベント



エンティティーのアクションタブに言ってください

イベントに"マクロ実行" アクションを追加します

マクロとVirtual Matrixを選択してください

イベントマクロが自動的に処理完了後終了しないなら、延々と実行され続けることになります...



ユーザリクエスト



Live Viewerから: ホットアクションかツールメニューの: Tool->Macros









見る、停止する



Config Toolで、物理フィジカルビューからVirtual Matrix を選択、"統計" タブへ行きます。統計タブは手動で更新する必要があります。実行と停止アイコンでマクロをコントロールできます。



Live Viewer には表示することの出来るマクロイベントもあります。







修正する



マクロはXMLファイルのVBスクリプトで書かれています。

マクロコードの修正には、Config Toolでマクロを選択して、右ペインで"コード"タブを開いてください。



サンプルコードを手に入れるもっとも簡単な方法は、サンプルマクロを作成し、ウィザードを使って必要な機能を生成することです。その後コードを美津子とが出来ます。



コードを修正したら、 コードのリバースエンジニア機能を設計することが不可能であったため、ウィザードを使用することが出来なくなります。



VB Script Reference





Jo

シリアルポートを聞いているマクロ

以前の記事で、シリアルを解析して、Omnicastイベントを生成することができる、簡単にマクロを作成することができると述べました。カスタマーに サンプルの提供




マクロインストール方法の一般情報



設定

マクロはシステムで正しいシリアルポートを使うよう設定しなくてはなりません。Omnicastでデバイスを識別する最も簡単な方法はロジカルIDです。システムで適切なシリアルポートを使用するためにスクリプトを修正しなくてはなりません。



Omnicast Config Toolを使用する



フィジカルビューで使用したいシリアルポートを選択してください

識別タブで、"ロジカルID"というフィールドを探し、その値を覚えて置いてください。

マクロを再度選択し、コードタブにいってください

コードの上部にある以下のラインに行き、シリアルポートのID値を 1 に変更してください。

' (ロジカルナンバー)が聞いているシリアルポート

Const g_nSerialPortID = 1



どのように機能するか

このマクロはスケジュールが終わるか、ユーザが停止するまでマクロは実行されるようデザインされています。

マクロが開始するとカスタムイベントをシステムで作成します。

Sub CreateCustomEvents().

を参照してください。



シリアルポートへ接続: エンコーダとの間で接続性を確立するとすぐに上がります

受け取ったデータの長さ: 受け取ったバイト数を含んでいる生成されたイベント

受け取ったデータ: バイトを含んだイベント

シリアルポートでデータを受信するたびに、メソッドの

Sub Serial_OnData(Handle, Data) が呼び出されます。

現在これは2つのカスタムイベントを生成します(長さと受信)。そして説明に受信バイト数を付加します。

The code in Serial_OnData 内のコードは特定のイベントを特定の日に生成するよう簡単に編集、もしくはMatric SDKからいくつかのメソッドを呼び出すことができます。

これが参考になれば幸いです。

Jo

OmnicastでのVirtual Earth

マップ上にカメラを表示するためにOmnicast でVirtual Earth を使うことができます。3Dマップを使ったデモを作成しました。このデモはお使いのカメラを追加するために、簡単に修正することが出来ます。














インストール



Webサーバがこのデモを実行できるよう設定する必要があります。

デモマップを含んだZIPファイルをダウンロード

フォルダにZIPファイルを展開してください。

IIS Configuration Manager (コントロールパネル -> 管理ツール) を実行。

デフォルトWebサイトで、サンプルを展開したファイルをポインティングした新しいバーチャルディレクトリを作成してください。

Try to see your new page in Explorerで新しいあなたのページを開いてください。ページは表示されますが、Omnicastを実行していないため、エラーメッセージが表示されます。

Omnicast Config Tool を実行して、バーチャルディレクトリのURLである新しいサイトを作成します。

Live Vieweのタイルに新しいサイトをドラッグしてください。

マップからタイルへドラッグするか、カメラアイコンをダブルクリックすることができるようになりました。

もし全てのカメラアイコンが赤いなら、デモマップがカメラIDの1-6であるように求めるからです。これは簡単に修正できます。やり方は次のセクションを参照してください。

このマップを最初にロードしたとき、これが3Dのため、Virtual Earth 3Dのダウンロードを求めるでしょう。もしこれを阻止したい場合、ページを2Dマップに修正することが出来ます。



カメラを設定する

マップに表示される全てのカメラはXML ファイル(camerageorss.xml)からロードされます。



新しいカメラを追加するには、メモ帳でXMLファイルを開きアイテムセクションを編集してください。



Omnicastで適切なカメラを探すためJavascriptはタイトルタグを使用しています。もしカメラロジカルIDが東京都千代田区ならば、タイトルは"cam100"になります。

カメラIDを見つける、修正するには(Config tool -> 要素 - > ID タブ)を見てください。

3Dのマップをブラウジングしているとgeo:long と geo:lat タグがあります。これは3Dマップの右下部に表示されます。



初期センターポイントを変更する

マップ開始時のデフォルトのロケーションを変更するには、html ファイル(VirtualEarthMap.htm)をメモ帳で開き、このラインの2つの座標を変更します。



References

Virtual Earth SDK

H.264の隠された値

数週間前、YouTube で "The Hidden cost of h.264". と呼ばれるプレゼンテーションを見ました。このプレゼンテーションはMJPEGを改良し、独自仕様にしているMxPEGカメラを推進しているMobotix によって投稿されたものです。




Mobotix プレゼンテーションは、H.264ストリームのデコーディングにはMotion JPEGよりも費用がかかることを元に、高価なビデオ監視サーバが必要であるため、 H.264 ソリューションが高コストであると論じています。



H.264 がMJPEGよりもCPU負荷がかかることは事実です。しかしOmnicastでは追加サーバを必要としません。よく考えられて構築された製品は録画するためにビデオストリームのデコーディングを必要としないためです。Omnicastでは、主な制限要因はCPUではなく、ディスクの書き込み/読み込み速度です。



Omnicastで100Mbit /秒を記録することができるシステムを構築すると想定します; これはH.264で100カメラ@1Mbits/秒で、MJPEGならば20カメラです(Axis MJPEG ストリームが同一品質で 5x から 6x 大きいことによります)



しかしこのプレゼンテーションはビデオ録画システムの最も重要なピースを忘れています。ストレージです。H.264 の真の価値はその 膨大なストレージ節約 です



ハードドライブコストの簡単なサンプルをご紹介しましょう:

100 台の H.264 カメラ、20日間 D1,15 FPS @ 500 Kbit/sec 約$12 000

100 台の Motion JPEG,20日間 D1, 15 FPS @ 2.5 Mbit/sec 約$70 000



Omnicastでは、H.264は常に最も費用対抗率のよいソリューションです。他のソリューションでも、例え必要なサーバの台数が増えたとしてもH.264 を使用したほうがコストを抑えられえるでしょう。



H.264 と MPEG-4 の違いについて別の記事も参考にしてください。

External references

MJPEG, MPEg-4, H.264の違い http://www.axis.com/products/video/about_networkvideo/compression_compare.htm

非常に良いH.264ビデオ圧縮基準に関するホワイトペーパー http://www.axis.com/files/whitepaper/wp_h264_31669_en_0803_lo.pdf

Omnicastとの統合方法

Omnicastは非常にオープンなビデオ監視ソリューションです。この記事ではOmnicastにサードパーティシステムの統合と、カスタマイズのもっともよく使われる方法の概要をご紹介します。




イベントとアクション

Omnicast は、管理者が特定のイベント後にシステムがどのようにリアクションを取るべきかを設定できる強力なエンジンを持っています。なんのプログラミングもなしに標準的な設定のみで導入することのできる例のうちのいくつかです:



出荷用ドアが開いたときに1つ以上のカメラをLive Viewer で表示する

あるカメラが動体検出した時、別のカメラで録画を開始する

IR動体センサーが何かを検地したときにドームカメラを特定のプリセットに動かす

特定のユーザがシステムにログインしたときEmailを送る

複雑なアクションのチェーンを作成するときに、マクロを作成できます

マクロ

Omnicast Virtual matrix はユーザがスケジュールどおりに、もしくは特定のイベントが起きるときにシステムが実行するカスタムスクリプトの作成を可能にします。.



Config Tool は簡単なマクロを作成するために使用できるマクロウィザードを含みます。実際ウィザードはコードをバックグラウンドで生成します。そしてもっと柔軟なものを求める場合はConfig Toolから生成されたコードを編集しやりたいと思うことを出来ます。



The Omnicast Macro SDK は我々のアプリケーションに関して多くのことができる一連のファンクションコールを持っています。しかしこれらのマクロはピュアVB Script か Java Scriptなので、簡単に他のシステムと統合できます。



作成することの出来る数々のマクロのうちのいくつかをご紹介します:



特定の シリアルポートで特定の文字を検出したとき カメラを表示する(POS/ATM マシン)

ドームカメラの停止後x秒後に特定のプリセットに移動させる

毎x秒ごとにスナップショットを保存する

TCP/IP プロトコルのアラーとを受信したら Omnicast Alarm を作成する



マップエンジン(ウェブベース)

マップエンジンはLive Viewerアプリケーションの中でユーザのコードを実行することを許す強力なツールです。Live Viewerはインターネット・エクスプローラと互換性があるどんなWeb ページでも表示することをサポートします。同様に現在Live Viewerと相互に作用できるAPIを公開しています。APIはWeb ページからアプリケーションまでのドラッグアンドドロップ機能を提供します。OmnicastマップデザイナーはJPEG / GIF構成で間取り図からマップを生成するためにドラッグアンドドロップを利用します。

どんなウェブサイトデザイナーでも以下の機能を実行するために簡単にマップエンジンを利用することができます:



Google map や Virtual Earth で存在するカメラを表示

動的マップに動体検出アラーとを表示

フロア図にPTZ 視界を表示

車両ゲートのオープン/クローズとステータスを表示

画像ポップアップとアクセスコントロール製品からアクティビティログをを表示.



アラーム手順

Omnicastアラームが上げられると、Live Viewerユーザーは手順を表示することができます。手順は実際にLive Viewerで表示するであろうURLです。マップエンジンに非常に類似していて、omnicastがいくかのアラームプロパティにアクセスを与えるAPIを持っています。



このアラームのためのプロシージャを詳述するシンプルなHTMLページあるいはWordドキュメント

ケース管理ツールと統合して、そしてユーザーに特定のフィールドを入力させる

キャプチャしたいくつかの情報のページ、携帯端末にSMSを送る

Omnicast SDK

SDKはVisual BasicあるいはC#でアプリケーションを作るよう意図されるActiveXコンポーネントとCOMオブジェクトのコレクションです。 アラームの受信とトリガ・イベント・ライブと録画ビデオの表示・いくつかの設定の編集、全ての必要な認証を含みます。Omnicastとの統合の最も柔軟な方法ですが、プログラミングスキルを必要とします。





アプリケーションでOmnicast カメラ(ライブか録画) を表示

ウェブベース製品のビデオ追加機能

Query the Omnicast Archive Database をクエリとビデオをAVI か G64フォーマットでエクスポート



Direct Show フィルタ

DShow フィルタは無圧縮ビデオストリーム(YUVかRGB)へのアクセスを与えるDirectX ソースフィルタです。 主な目的はOmnicastによってストリーミングされるカメラへのアクセスを必要とする解析企業のためと、トランスコーディングに使用されます。Direct Show プログラミングの理解と知識が必要になります。

Genetec プロトコル

Genetec プロトコルはOmnicastでサポートを必要とするIPカメラ/エンコーダメーカのために設計されています。RTSP/RTP上でMPEG-4, H.264とHTTP上にJPEGをストリーミングする HTTP/CGIベースのプロトコルです。

Omnicast 4.4デサポートする内容:



ビデオ設定(ビットレート、フレームレート、解像度など)

イベント

デバイス設定(IP アドレス、名称)

シリアルポートストリーミングと設定

PTZ コントロール

その他の機能が将来的に実装されます

国産VMSは殆どが〇〇レベル

 前回 ......... 市場占有率は驚くほど高いのです。 もしくは高かったのです。........... ということを書いたのですが、日本製のVMSが市場占有率が高かった理由はただ一つです。 それは水と空気と安全はただ の日本特有の出来事です。 100%事後検証しかニーズが無...