フォーラム: 公開討議 (スレッド #1534)

mencoderでTV録画 (2002-12-05 14:32 by rattcv #2921)

表題の件について、簡単なドキュメントを書いてみました。
まだ未完成ですが、暫定的に下記のサイトに置いておきます。


http://www.geocities.co.jp/SweetHome/7458/index.html

RE: mencoderでTV録画 (2002-12-08 20:54 by rattcv #2943)

う~ん、やっぱりリアルタイムエンコードはCPU喰いますねぇ。
家のDEC君には少々荷が重いようですぅ。(^^;
#2921 への返信

RE: mencoderでTV録画 (2002-12-08 23:14 by mark #2944)

DECくんで回っちゃうだけでも、スゴいとも・・
やぱ、PC-UNIXよね・・(笑)
#2943 への返信

RE: mencoderでTV録画 (2003-01-20 02:59 by rattcv #3586)

GUIフロントエンドを鋭意(?)作成中です。(^^;
http://www.geocities.co.jp/SweetHome/7458/rmencoder.html
まだ未完成なんでscreen shotのみです。
#2943 への返信

RE: mencoderでTV録画 (2003-01-22 23:30 by mark #3609)

楽しみにしてるっすよ・・
まぁ、のんびりやってくださいませ・・

RAPなペースでOKっす(笑)
#3586 への返信

GUIフロントエンド (2003-05-29 08:54 by rattcv #4868)

ぼちぼち動き始めてます。
試してみる勇気のある方は(笑)、声をかけて下さいね。
#3586 への返信

RE: mencoderでTV録画 (2002-12-15 20:50 by naohki #3027)

rattcvの書き込みを元にやってみました。
4日くらいはまってやっと満足のゆく録画ができるようになったのでスクリプトをUPします
----------------------------------------
#!/usr/bin/perl -s
#これは/data/dvdにファイルを作るので
print "[$ARGV[0]][$ARGV[1]][$ARGV[2]]\n";
$DATAPATH = "/data/";
$CHANNEL = 0;
$FRAME = 24;
$SIZE1 = 480;
$SIZE2 = 360;
$LENGTH = 3; #10分
$BITRATE = 650;
$FPS = 23.976;

if ($#ARGV < 1){
print "$#ARGV\n";
print "uneage : tvrec channel fromtime minuit \nor\n";
print "\ntvrec 0 '20:00 12/15/2001' 120\n";
print "\nfromtimeはatコマンドにそのまま渡される\n";
print " at ではある程度複雑な TIME 指定ができる。これは POSIX.2 標準を拡張した
ものである。ジョブを実行する時刻は HH:MM という形式で指定できる。 (すで
にその時刻を過ぎているときは次の日に実行する。) また midnight (真夜中),
noon (正午), teatime (午後4時のお茶の時間) とか、 AM , PM も指定 で き
る。さらに、コマンドの実行日を指定することもできる。日付の指定は month-
name day ( year も追加できる) のようにする。また は MMDDYY, MM/DD/YY,
DD.MM.YY なども可能である。日付の指定は、その日の時刻の後に指定しなけれ
ばならない。また now + count timeunits, と指定することでコマンドをど の
く ら い 後に実行するか指定できる。時間の単位には minutes, hours, days,
weeks が使える。さらにジョブを今日実行したい場合は today を、明日実行し
たい場合は tomorrow を、それぞれ時刻の後に付ければ良い。\n";
print "\n : tvrec channel minuit \nor\n";
exit ;
}elsif ($#ARGV < 2){
if ($ARGV[1] > 0){
$LENGTH = $ARGV[1];
}
} else{
$STIME=$ARGV[1];
$LENGTH = $ARGV[2];
system ("echo 'tvrec $ARGV[0] $ARGV[2]' | at $STIME ");
print ("echo 'tvrec $ARGV[0] $ARGV[2]' | at \'$STIME\' \n");
exit;
}
$CHANNEL=$ARGV[0];

if ((($ARGV[0] < 0) || ($ARGV[0]>12)) && !($ARGV[0] eq "s" ) && (!($ARGV[0] eq "v" ))){
print "channel は1~12までのはんいです";
exit ;
}

($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);
$year += 1900;
$mon += 1;
$FILENAME = sprintf("$DATAPATH/video$CHANNEL-%2.2d%2.2d%2.2d-%2.2d%2.2d%2.2d" , $year , $mon, $mday ,$hour, $min, $sec );
$LENGTH=$ARGV[1] * 60;
system "killall xawtv";
system "killall aviencp";
system "killall avi2mpg";
system "killall lav2yuv";
system "killall mpeg2enc";
system "killall mpg2enc";
system "aumix -l R -l 100 -v 0";
if ($CHANNEL == 0){
print ("mencoder -tv on:driver=v4l:device=/dev/video0:input=1:width=$SIZE1:height=$SIZE2:norm=NTSC:chanlist=japan-bcast:channel=1:forcechan=2 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$BITRATE -oac mp3lame -lameopts cbr:br=64 -vop pp=lb -o $FILENAME.mpg4 -endpos $LENGTH > /dev/null\n");
system ("mencoder -tv on:driver=v4l:device=/dev/video0:input=1:width=$SIZE1:height=$SIZE2:norm=NTSC:chanlist=japan-bcast:channel=1:forcechan=2 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$BITRATE -oac mp3lame -lameopts cbr:br=64 -vop pp=lb -o $FILENAME.mpg4 -endpos $LENGTH > /dev/null");
}else{
print ("mencoder -tv on:driver=v4l:device=/dev/video0:input=0:width=$SIZE1:height=$SIZE2:norm=NTSC:chanlist=japan-bcast:channel=$CHANNEL:forcechan=2 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$BITRATE:vrc_buf_size=1000000 -fps $FPS -oac mp3lame -lameopts cbr:br=64 -vop pp=lb -o $FILENAME.mpg4 -endpos $LENGTH \n");
-------------------------------------------------------
#2921 への返信

RE: mencoderでTV録画 (2002-12-15 21:02 by naohki #3028)

使い方は先ほどのソースを
tvrecという名前で保存します。

んで実行権をつけます。
パスの通っているところに置いて
説明を見る場合は
tvrec
とうちます
ほとんどの説明は時刻指定の方法についてかいていますってmanの中身そのものなんですが
わすれるのでいれてます

<<録画予約の方法>>
tvrec 0 '20:00 12/15/2001' 120
です
tvrec チャンネル 時刻 時間
です
上の例だと、ビデオ入力から2001年12月15日の20:00から120分間録画しなさい、です。

違うチャンネルだと
tvrec 4 20:00 60
これの場合は今日の20:00から4チャンネルを60分間録画しなさい
になります。
P3の800で80%程度のCPUを使いながら録画します。

各種のパラメータは
ソースの中をいじることで変えることができます。

#3027 への返信

RE: mencoderでTV録画 (2002-12-15 21:04 by naohki #3029)

<<すぐの録画の方法>>

すぐの録画の方法は
tvrec 12 30
です
tvrec チャンネル 時間
です
この例だと今すぐ12チャンネルを30分間
録画しなさいです。

#3028 への返信

RE: mencoderでTV録画 (2002-12-15 21:08 by naohki #3030)

録画のパラメータの変更方法
はソースの中を見ます。

$DATAPATH = "/data/";
$CHANNEL = 0;
$FRAME = 24;
$SIZE1 = 480;
$SIZE2 = 360;
$LENGTH = 3; #10分
$BITRATE = 650;
$FPS = 23.976;


ここのところ

$DATAPATH = "/data/";
データを保存するパスです。
ここにファイルを作るので変えるか子のディレクトリを作ってください
$CHANNEL = 0;
デフォルトのチャンネルです特に必要ありません
$FRAME = 24;
今は使っていません
$SIZE1 = 480;
横の大きさです
$SIZE2 = 360;
縦の大きさです
$LENGTH = 3; #10分
今は使っていません
$BITRATE = 650;
ビットレートです。
ここをいじることでファイルの大きさを変えることができます。
この設定では私の環境では、10分50Mになります。
$FPS = 23.976;
ここは今は使ってないかもしれません。
使うとおとずれがでるので
廃止しました
#3029 への返信

RE: mencoderでTV録画ぬけ (2002-12-15 21:09 by naohki #3031)

最後切れてました
以下の2行が抜けてます
-------------------------------------
system ("mencoder -tv on:driver=v4l:device=/dev/video0:input=0:width=$SIZE1:height=$SIZE2:norm=NTSC:chanlist=japan-bcast:channel=$CHANNEL:forcechan=2 -ovc lavc -lavcopts vcodec=mpeg4:vbitrate=$BITRATE -oac mp3lame -lameopts cbr:br=64 -vop pp=lb -o $FILENAME.mpg4 -endpos $LENGTH > /dev/null");
}
-------------------------------------
おそまつ

#3027 への返信

RE: mencoderでTV録画redhat7.3 (2002-12-15 21:15 by naohki #3032)

redhat7.3でやりました
この場合mencoderをメークし直す必要があったのですが
その方法を言います。

MPlayer-0.90pre10.tar.bz2
gcc-3.2.1.tar.bz2
を新たに入れました
それまではビデオ関係のライブラリー等
結構たくさん入れましたので今回は
MPlayer-0.90pre10.tar.bz2をメークする
のにgcc-3.2.1.tar.bz2を使ったという情報
しかはいっていません
gccをメークしてインストールして
その後mplayerをインストールするだけです

そうすると今までの不具合が嘘のようになくなりますので
お試しください。
#2921 への返信