title_parttitle_parttitle_part
静岡県浜松市であれこれソフトを開発している A.K.I Software のブログです。日々の開発日記やサーバー・セキュリティ関連の話題なども掲載。
<< 2018/06 >>123456789101112131415161718192021222324252627282930
Powered by BLOM JPT3815W 向け?専用レコーダー その3
小さくも大きくも閉じたりもしません
13/06/11 00:21 / その他のソフト

最初は「Motion JPEG で中身は Jpeg なんで画像の圧縮率が高くなるようにポスタリゼーション処理(簡単に言うと色数を減らす)とかやったら録画サイズ小さくなるんでない?」と思って、受信したデータを一旦 Bitmap に落としてから加工して Jpeg に再圧縮した上で動画に書き出そうと思ったのですが・・・芳しくない orz

一応、比較してみますと、
ドノーマルで JPT3815W から送られてくる Jpeg データは昼間で大よそ 55KByte 前後、夜間は 35KByte前後になります。
昼夜でサイズが変わるのは、夜はモノクロに近くなりますので必然的に圧縮率が高まる訳です。

昼間の状態で、これをグレイスケールにしますと、40K 暗いまでサイズが小さくなります。
防犯用?としてはいいかもしれんですが、やっぱカラーで録画しておきたいなーってことで、ポスタリゼーションを行って見たのですが、サイズは 50K 前後と、5K 小さくなるだけでした。
その上副作用としてブロックノイズが酷くなって、まぁさらっと見る限りではいいんですが、やっぱ気になってしまいます。

やっぱりかー、やっぱりそこにいかんとダメかーって事で昨夜から唸っていたのですが・・・

はい。こんなんでました。

photo


受信したデータをリアルタイムエンコードかますようにしました(笑)

Windows には Video for Windows(VFW)という古くから動画を扱う API がありまして、それを使うと、どこかにいる偉い人が作ってくれた codec を簡単に利用することが出来ます。

確か昔作った VFW のライブラリがあったはずだよなぁと探してみましたらありました。
タイムスタンプが 2000年ととっても古いです。
(こいつは Delphi 2007 R2 を使って開発をしていますので、vfw.h / vfw.lib なんて便利な物が無いので、自力で vfw.h を移植する必要があるんですよ。Delphi 使いの宿命です)
コードのコメントを見ると 1999-2000 Delphi4.0 用になってます(笑)
まぁ、ライブラリと言っても必要な変数定義と DLL の指定だけなので、大掛かりな物ではありません。

とりあえず Delphi4 用固有の箇所を Delphi 2007 で使えるように書き換えてあれこれやってみます。

頭の中の動画関連の知識は Cinepak 辺りで止まっているので(いつの時代だ)とりあえず codec を列挙する所から作ります。
おぉそうだ! mmioFOURCC だよ! fccType や fccHandler だよ! ICOpen ってなんだっけ?と思い出しつつ、とりあえず列挙した中に入っていた DivX codec を指定してみた所、なんかエンコードが出来てしまいました。(いつもながら適当です)

photo

えーと、こちらは最初に作った Motion JPEG で圧縮した動画です。(確認は VirtualDub でやってます)

6.4sec (64frame) で 1,783K 約 1.7M です。
6,4秒で 1.7M ってどんだけ圧縮されていないんだよ(笑)
そら録画したら、当たり前のように 800M とかファイルが出来るわけだ。

photo

こちらは、受信しつつ DivX で圧縮をかけたファイルです。
なんか微妙に codec のバージョンが古い気がする。
いつ入れたんだろう・・・と、それはさておき、5.7秒(57frame)で、186K です。桁間違えていません。
サイズが 1/10 ですよ。viva DixV!!

あ、DivX codec って言っていますが、実際の圧縮は MP4 H.264 です。拡張子が avi ですが、これは AVI のファイル形式を使っていて、中身が H.264 ってことですね。

少し話が飛ぶのですが、codec のエンコード。
特に MPEG 関連は、米MPEG LA ってところがライセンスを管理していて、エンコードとかデコードするソフトはライセンス料がかかるんですよ。
MP4 に関しては、ネットに無償公開するものであれば無料っぽいんですが、有償公開するものに関してはライセンス料がかかるっぽいです。
ここらがわからんとソフト公開できないんですよねぇ。
(MotionJPEG だけなら無問題)
誰か調べてくれないかなぁ(他力本願)

閑話休題。

非常にサイズが小さくなるので、丸1日録画しておいても HDD 容量を気にする必要まったく無しです。
まぁ、受信しつつエンコードをする関係で非力なCPUで無くても FPS が駄々下がりですが(30% down 位)防犯用とか猫録画用なら別に 5fps でも良いくらいだしなぁ。
まだ余分な処理も入っているので、そこらを最適化すれば 10% down くらいには持っていけるんじゃないかとは思いますが。

これでとりあえず録画関連は目処がついたので、次に欲しいのは動態検知ですね。
最悪 MP4 codec でライセンスが必要だよ。と言われても Motion JPEG なら問題ない訳だし、今は検知が出来ないので(そして本体の検知がまったく当てにならないので)動態検知ができるようになれば、100frame 位前から絶えずバッファリングしておいて、検知した時点で録画をするとやればサイズもそんなに気にならないですしね。

あれこれ書いていますが、あんまり仕事のウェイト減らしてこのソフト作って遊んでいてもダメなんですが(笑)

[更新日付:2013/06/11 01:26:58]
トラックバックを見る(0)
Log Link [http://akisoftware.com/cgi-bin/blom.exe?akisoft+sl+6a9e48c0788494811b470195e1237163c92a0c78]
TB Link [http://akisoftware.com/cgi-bin/blom.exe?akisoft+tb+6a9e48c0788494811b470195e1237163c92a0c78]

記事へのコメント

コメントはありません

名前
コメントキー
 
コメントする時はキーを正確に入力して下さい
コメント
アドレスを含んだコメントはできません
© 2008-10 A.K.I Software all rights reserved.