Video4Linuxは,Linuxでビデオキャプチャデバイスを扱うためのAPIです. 詳しくは「Video4Linux」をキーワードに Googleってみてください. きっと,いろんな情報が見つかるでしょう.
私はもともと,FreeBSD派でしたので,Meteorドライバを使っていました. 2003年から急にLinux派に転向したのを機会に, Video4Linux(V4L)を使ったシンプルなキャプチャプログラムを作成しました. たいしたもんではありませんが公開します. Web上で公開されているサンプルソースを参考に書きましたので, もはや私は著作権を主張する立場にはありません.
% tar xvfz capture-V4L-v1.2.tgzで,capture-V4Lというディレクトリにファイルが展開されます.
% cd capture-V4L % makeで,capture-V4Lという名前の実行バイナリが作成されるはずです.
Video4Linux APIを利用したビデオキャプチャツール capture-V4L
% capture-V4L [option]
-d#: デバイス名をセットします.デフォルトは /dev/videoです.
-s#: 入力端子を指定します(0:コンポジット, 1:コンポジット, 2:S端子)
デフォルトは2(S端子)です.
-t : TEOフォーマットで出力します.デフォルトはPPMフォーマットです.
-m#: マルチフレーム(動画)をキャプチャします.# でフレーム数を指定します.
デフォルトは1(静止画)です.
-f#: 静止画のファイル名,連番のファイルフォーマットを指定します.
-v : 冗長モード.いろんな情報が stderrに表示されます.
-w#: gettimeofday()で計測したシステム秒が指定された時刻になるまで待機
-a#: 連続して#枚を撮影し平均画像を出力します.ノイズ除去に効果-あり.
-u : USBカメラモード(NTSCチェックを省略する)
◎特徴
・静止画/動画のどちらでもキャプチャ可能
・出力は,PPM/TEOの2種類のフォーマットをサポート
・コンパイル時に特殊なライブラリは不要(libteoも不要)
◎出力フォーマットについて
本ツールは,様々な出力フォーマットに対応しています.
・フォーマットはPPMか/TEOか
・シングルフレーム(静止画)か/マルチフレーム(動画)か
・標準出力に書き出すか/指定された名前のファイルに書き出すか
(PPM|TEO)*(静止画|動画)*(連番|マルチフレーム)の8通りがありますが,PPM
フォーマットの動画を標準出力に出力できませんので,実際には7通りです.
(1) PPMの静止画を標準出力に書き出す.
% capture-V4L > image.ppm
(2) TEOの静止画を標準出力に書き出す.
% capture-V4L -t > image.teo
(3) PPMの静止画を指定されたファイルに書き出す.
% capture-V4L -f image.ppm
(4) TEOの静止画を指定されたファイルに書き出す.
% capture-V4L -f image.ppm -t
(5) TEOの動画を標準出力に書き出す.
% capture-V4L -m 10 -t > image.teo
(6) PPMの動画を連番のファイルに書き出す.
% capture-V4L -m 10 -f image.%d.ppm
(7) TEOの動画を連番のファイルに書き出す.
% capture-V4L -m 10 -f image.%d.teo -t
※ 連番ファイルのフォーマットは,printfの書式に従います.
「-m 10 -f image.%d.ppm」の場合は,image.0.ppm〜image.9.ppm
となります.個人的には,image.%03d.ppm などとしして桁を揃えると
image.000.ppm〜image.009.ppmなどとなって,美しいかと.
◎履歴
2003/10/16 Ver1.0 とりあえずのプロトタイプ
2003/10/22 Ver1.1 同期撮影用に -wオプション追加
2004/05/25 Ver1.2 USBカメラモードを追加