最終更新日

失われたソースファイル 7

コピーアンドペースト用の記事

失われたソースファイル 7

ありがちなんだけど良くなくしてしまうスクリプトファイルなどを おいておく場所です。

Linux V4L で使える card 番号を取得する Perlスクリプト

Video 4 Linux のモジュールロード時に引数で与える card 番号は、 Fedora CORE (2) の場合、

/usr/src/linux-2.6.10-1.12_FC2/Documentation/video4linux/CARDLIST.*

等に書いてあるはずなのですが、どうも最新版になっていないようで ソースと不一致しています。

というわけで、ソースファイルから card 番号を求める Perl スクリプトです。 あいかわらず、ワンショットスクリプトなのでおかしかったら、疑って下さい。

#
# Video for Linux cards.c to CARDLIST
#

# /usr/src/linux-2.6.10-1.12_FC2/drivers/media/video/saa7134/saa7134-cards.c
$filename = "saa7134-cards.c";
$boardname ="SAA7134";

open(IN, $filename) or die "$!";

$cardnumber = 0;
while ($line = <IN>) {

if ($line =‾ /^[¥t|¥s]*¥[$boardname.*¥]¥s=¥s/) {
    $cardname = "";
    while ($line = <IN>) {
        if ($line =‾ /^[¥t|¥s]*¥}¥,¥n/) {
            last;
        }
        if ($line =‾ /^[¥t|¥s]*¥.name[¥s|¥t]*=[¥s|¥t]*¥"(.*)¥",/) {
            $cardname = $1;
        }
    }
    printf("%03d --> %s¥n",$cardnumber, $cardname);

    $cardnumber ++;
}

}

ビデオの取り方もついでにメモしておきます。NOVAC PrimeTV 7133の例。 しかし、チューナーの設定が悪いのかモノクロになってしまう・・・。 継続調査。

$ modprobe saa7134 card=36 tuner=9
$ lsmod
$ ls -l /dev/video*
$ v4l-info
$ v4lctl setchannel 3
$ ffmpeg  -t 30 -s 320x240 -r 29.97 -b 2500 -ab 224 -ac 2 -f  mpeg  movie.mpg

おわり

cardname の取得は適当なので、気にしないで下さい。 ソースの上から番号を数えているだけです。 本当は、CARDLIST 互換で出力しようと思って断念した一品です。