- ファイル:
-
- /trunk/doc/CHANGES.txt (更新) (1 diff)
- /trunk/doc/index.html (更新) (4 diffs)
- /trunk/doc/img/screen11.png (更新) (変更前)
- /trunk/doc/img/screen12.png (更新) (変更前)
- /trunk/doc/img/screen09.png (更新) (変更前)
- /trunk/doc/img/screen18.png (追加)
- /trunk/install/perl/tvrecording.pl (更新) (2 diffs)
- /trunk/install/perl/getxml2db.pl (更新) (1 diff)
- /trunk/install/perl/xmltv2foltia.pl (更新) (1 diff)
- /trunk/install/perl/cron_foltia_dayly.sh (更新) (1 diff)
- /trunk/install/php/folcast.php (更新) (1 diff)
- /trunk/install/php/foltialib.php (更新) (2 diffs)
- /trunk/install/php/selectcaptureimage.php (更新) (3 diffs)
- /trunk/install/php/showlibc.php (更新) (5 diffs)
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
/trunk/doc/CHANGES.txt
r18 r28 1 1 foltia 更新履歴 http://www.dcc-jpl.com/soft/foltia/ 2 3 06.12.24 4 tvrecording.pl: 5 録画開始前の余裕時間を約15秒増やした。 6 7 06.12.22 8 selectcaptureimage.php: 9 サブタイトルのしょぼいカレンダーへのリンク追加。 10 11 06.12.18 12 showlibc.php: 13 サブタイトルへのリンク追加。 14 ページタイトルに番組名表示。 15 folcast.php: 16 出力にContent-Disposition:ヘッダ追加 17 18 06.12.14 19 foltialib.php:printdiskusage 20 表示スタイルを変更 2 21 3 22 06.12.12; /trunk/doc/index.html
r8 r30 60 60 <ul> 61 61 <li>Linuxの動くAT互換機:手もと開発・録画機はCeleron 2.6GHz,1GB RAMのスペックで30分番組のMPEG4(XviD)変換が22分程度で完了しています。</li> 62 <li>ivtvドライバで動作するビデオキャプチャカード:foltiaの機能を引きだすためには複数のエンコーダを搭載するのがおすすめです。手もとの環境ではIOデータ 63 GV-MVP/RXを2枚、RX2Wを1枚で計4チャンネル同時録画環境にしています。画質の点からは複数エンコーダが一枚のカードに載ったRX2Wよりも1エンコーダのGV-MVP/RX2の方が多少有利なようです。</li> 62 <li>ivtvドライバで動作するビデオキャプチャカード:foltiaの機能を引きだすためには複数のエンコーダを搭載するのがおすすめです。手もとの環境ではIOデータ <a href="http://www.iodata.jp/prod/multimedia/tv/2003/gv-mvprx/">GV-MVP/RX</a>を2枚、<a href="http://www.iodata.jp/prod/multimedia/tv/2004/gv-mvprx2w/index.htm">GV-MVP/RX2W</a>を1枚で計4チャンネル同時録画環境にしています。画質の点からは複数エンコーダが一枚のカードに載ったRX2Wよりも1エンコーダのGV-MVP/RX2の方が多少有利なようです。しかしながら、GV-MVP/RX2Wは2006年7月に生産完了になってしまいました。</li> 64 63 <li>Home Electronics社製USB 赤外線トランスミッタ <a href="http://www.home-electro.com/tira2.php">Tira-2.1</a>(オプション):外部チューナコントロール機能を使う場合必要です。<br /> 65 64 </li> … … 143 142 Device::SerialPort(Tira2を使う場合のオプション)</p> 144 143 <h3>・XMLTVインストール</h3> 145 <p>EPG番組表取得に必要なXMLTV日本語版を <a href="http://linux.paken.org/index.php?XMLTVニ?ワツミア?ネヌ">ぱ研</a>よりインストールします。</p>144 <p>EPG番組表取得に必要なXMLTV日本語版をインストールします。<a href="http://linux.paken.org/index.php?XMLTV%C6%FC%CB%DC%C2%D0%B1%FE%C8%C7">ぱ研</a>が制作したものがすでに本家にマージされているようです。</p> 146 145 <h3>・ffmpegインストール</h3> 147 146 <p>iPod H.264/AVCを作れる拡張をされたffmpegをインストールします。<br /> … … 320 319 <p> </p> 321 320 <h3>予約一覧:</h3> 322 <p> 大きく上下のふたつのエリアに分かれていて、予約されている番組の放映予定と番組名を一覧表示します。ここでも[TID]をクリックすると番組予約画面へ、[タイトル]をクリックすると「しょぼいカレンダー」の該当番組詳細画面へそれぞれ移動します。録画予約の解除は下半分のタイトルリストの項目から行います。 「画質」項目は録画ビットレートをMbps単位で表示しています。<br />321 <p> 大きく上下のふたつのエリアに分かれていて、予約されている番組の放映予定と番組名を一覧表示します。ここでも[TID]をクリックすると番組予約画面へ、[タイトル]をクリックすると「しょぼいカレンダー」の該当番組詳細画面へそれぞれ移動します。録画予約の解除は下半分のタイトルリストの項目から行います。EPG予約の解除もここから行います。「画質」項目は録画ビットレートをMbps単位で表示しています。<br /> 323 322 デモ画面:<a href="http://www.dcc-jpl.com/soft/foltia/demo/listreserve.php">http://www.dcc-jpl.com/soft/foltia/demo/listreserve.php</a><br /> 324 323 <img src="img/screen09.png" width="800" height="600" /><br /> 324 |中略<br /> 325 <img src="img/screen18.png" width="800" height="600" /><br /> 325 326 </p> 326 327 <h3>番組一覧:</h3> … … 336 337 </p> 337 338 <h3>録画一覧(録画順):</h3> 338 <p> 録画済みのMPEG2ファイルを放映順に一覧表示します。削除チェックボックスにチェックを入れて削除ボタンを押すとそのファイルは削除されます。上 の方にディスク空き容量とトラコンプロセスを表示している部分がありますがこの部分は相当いい加減な書きかたなため環境にあわせて適当に修正して下さい。<br />339 <p> 録画済みのMPEG2ファイルを放映順に一覧表示します。削除チェックボックスにチェックを入れて削除ボタンを押すとそのファイルは削除されます。上部にディスク空き容量とトラコンプロセスを表示します。。<br /> 339 340 デモ画面:<a href="http://www.dcc-jpl.com/soft/foltia/demo/showplaylist.php">http://www.dcc-jpl.com/soft/foltia/demo/showplaylist.php</a><br /> 340 341 <img src="img/screen11.png" width="800" height="600" /><br /> /trunk/install/perl/tvrecording.pl
r8 r29 42 42 #tvConfig.pl ------------------------------- 43 43 $extendrecendsec = 10; #recording end second. 44 $startupsleeptime = 52; #process wait(MAX60sec) 44 #$startupsleeptime = 52; #process wait(MAX60sec) 45 $startupsleeptime = 37; #process wait(MAX60sec) 45 46 #$startupsleeptime = 1; #process wait(MAX60sec) 46 47 … … 259 260 260 261 # $recch でウェイト調整入れましょう 261 my $intval = $recch % 50; # 0〜49 262 my $startupsleep = $startupsleeptime - $intval; # 3〜52 (VHF 40-51) 263 $reclengthsec = $reclengthsec + $intval + 1; # 264 265 &writelog("tvrecording: DEBUG SLEEP $startupsleeptime:$intval:$startupsleep"); 262 #52 263 #my $intval = $recch % 50; # 0〜49 264 #my $startupsleep = $startupsleeptime - $intval; # 3〜52 (VHF 40-51) 265 #37 266 my $intval = $recch % 35; # 0〜34 267 my $startupsleep = $startupsleeptime - $intval; # 3-37 (VHF 25-36,tvk 30) 268 $reclengthsec = $reclengthsec + (60 - $startupsleep) + 1; # 269 270 &writelog("tvrecording: DEBUG SLEEP $startupsleeptime:$intval:$startupsleep:$reclengthsec"); 266 271 267 272 sleep ( $startupsleep); /trunk/install/perl/getxml2db.pl
r18 r21 40 40 if ($ARGV[0] eq "long"){ 41 41 $uri="http://cal.syoboi.jp/cal_chk.php"; 42 #$uri="http://syobocal.orz.hm/cal_chk.php"; 42 43 &writelog("getxml2db use long mode."); 43 44 }else{ 44 45 $uri="http://cal.syoboi.jp/cal_chk.xml"; 46 #$uri="http://syobocal.orz.hm/cal_chk.xml"; 45 47 } 46 48 /trunk/install/perl/xmltv2foltia.pl
r1 r27 6 6 #xmltv2foltia.pl 7 7 #XMLTV日本語版の出力するXMLを受け取り、EPGデータベースに挿入します。 8 # 9 #↓本家に取り込まれたっぽい(未確認) 10 # 8 11 #XMLTVは 9 12 # http://www.systemcreate-inc.com/gsxr/pc/mythtv.html#patches 10 13 #のパッチをあてたものを想定しています。オリジナルと比較して、サブタイトルや内容など 11 #より 秀才な内容を取得できます。14 #より詳細な内容を取得できます。 12 15 # 13 16 # usage;perl /usr/bin/tv_grab_jp | ./xmltv2foltia.pl /trunk/install/perl/cron_foltia_dayly.sh
r1 r26 12 12 # XMLTVをつかってEPG番組表インポート 13 13 # 14 # /usr/bin/perl /usr/bin/tv_grab_jp --config-file | /home/foltia/perl/xmltv2foltia.pl 15 /usr/bin/perl /usr/bin/tv_grab_jp --config-file ~/.xmltv/tv_grab_jp.conf.jcom | /home/foltia/perl/xmltv2foltia.pl 16 /usr/bin/perl /usr/bin/tv_grab_jp --config-file ~/.xmltv/tv_grab_jp.conf.tvk | /home/foltia/perl/xmltv2foltia.pl 14 /usr/bin/perl /usr/bin/tv_grab_jp --config-file | /home/foltia/perl/xmltv2foltia.pl 15 # 2つの局設定使うような場合 16 #/usr/bin/perl /usr/bin/tv_grab_jp --config-file ~/.xmltv/tv_grab_jp.conf.jcom | /home/foltia/perl/xmltv2foltia.pl 17 #/usr/bin/perl /usr/bin/tv_grab_jp --config-file ~/.xmltv/tv_grab_jp.conf.tvk | /home/foltia/perl/xmltv2foltia.pl 17 18 18 19 #録画ファイルとテーブルの整合性を更新 /trunk/install/php/folcast.php
r8 r24 20 20 21 21 header('Content-Type: application/rss+xml'); 22 22 header('Content-Disposition: attachment; filename="folcast.xml"'); 23 23 24 24 include("./foltialib.php"); /trunk/install/php/foltialib.php
r1 r21 414 414 $freearea = preg_split ("/[\s,]+/", $hdfreearea[0]); 415 415 416 exec ( "ps ax | grep ffmpeg", $encoding);417 exec ( "ps ax | grep faac", $processlock);416 // exec ( "ps ax | grep ffmpeg", $encoding); 417 // exec ( "ps ax | grep faac", $processlock); 418 418 419 419 print " … … 423 423 "; 424 424 425 // print "$freearea[1]<br>$freearea[2]<br>$freearea[3]<br>$freearea[4]<br>$hdfreearea[0]<br>$encoding[0]<br>$processlock[0]</p>\n"; 426 print "$encoding[0]<br>$processlock[0]</p>\n"; 427 428 /* 429 <div style="width:100%;border:1px solid black;text-align:left;"><span style="float:right;">170GB</span> 430 <div style="width:86%;border:1px solid black;background:white;">1.1TB/1.3TB(87%)</div> 431 </div> 432 */ 425 //exec('ps ax | grep ffmpeg |grep MP4 ' ,$ffmpegprocesses); 426 $ffmpegprocesses = `ps ax | grep ffmpeg | grep -v grep | wc -l `; 427 428 $uptime = exec('uptime'); 429 430 print "<div style=\"text-align:left;\">"; 431 print "$uptime<br>\n"; 432 print "トラコン稼働数:$ffmpegprocesses<br>\n"; 433 print "</div>"; 433 434 434 435 }//end sub /trunk/install/php/selectcaptureimage.php
r1 r25 12 12 13 13 mplayer -ss 00:00:10 -vo jpeg:outdir=/home/foltia/php/tv/691.localized/img/6/ -vf crop=702:468:6:6,scale=160:120,pp=lb -ao null -sstep 14 -v 3 /home/foltia/php/tv/691-6-20060216-0130.m2p 14 15 旧仕様16 mplayer -ss 00:0:10 -vo jpeg:outdir=./ -ao null -sstep 14 -v 3 ../665-13-20051230-0145.m2p17 convert -verbose -crop 160x120+1+3 -resize 165x126\! ../*.jpg18 14 19 15 DCC-JPL Japan/foltia project … … 80 76 print htmlspecialchars($rowdata[2]) . "</a> " ; 81 77 print htmlspecialchars($rowdata[3]) . " "; 78 $tid = $rowdata[0]; 79 if ($tid > 0){ 80 print "<a href = \"http://cal.syoboi.jp/tid/$tid/time#$pid\" target=\"_blank\">"; 81 print htmlspecialchars($rowdata[4]) . "</a> "; 82 }else{ 82 83 print htmlspecialchars($rowdata[4]) . " "; 84 } 83 85 print htmlspecialchars($rowdata[1]) . " "; 84 86 print htmlspecialchars($rowdata[6]) . "分 "; … … 86 88 87 89 $mp4filename = $rowdata[9]; 88 $tid = $rowdata[0];89 90 $serverfqdn = getserverfqdn(); 90 91 /trunk/install/php/showlibc.php
r1 r23 34 34 <?php 35 35 print "<link rel=\"alternate\" type=\"application/rss+xml\" title=\"RSS\" href=\"./folcast.php?tid=$tid\" /> 36 <title>foltia:Lib $tid</title>37 </head>38 36 "; 39 37 if ($tid == "") { 40 print "<body BGCOLOR=\"#ffffff\" TEXT=\"#494949\" LINK=\"#0047ff\" VLINK=\"#000000\" ALINK=\"#c6edff\" > \n"; 38 print "<title>foltia:Lib</title> 39 </head><body BGCOLOR=\"#ffffff\" TEXT=\"#494949\" LINK=\"#0047ff\" VLINK=\"#000000\" ALINK=\"#c6edff\" > \n"; 41 40 printhtmlpageheader(); 42 41 die_exit("再生可能番組がありません<BR>"); 43 42 } 44 45 43 $con = m_connect(); 46 44 $now = date("YmdHi"); 47 45 48 ?>49 <body BGCOLOR="#ffffff" TEXT="#494949" LINK="#0047ff" VLINK="#000000" ALINK="#c6edff" >50 <div align="center">51 <?php52 printhtmlpageheader();53 ?>54 <p align="left"><font color="#494949" size="6">録画ライブラリ番組個別表示</font></p>55 <hr size="4">56 <p align="left">再生可能ムービーを表示します。<br>57 58 <?php59 46 $query = " 60 47 SELECT foltia_program.title … … 70 57 $title = $title[0]; 71 58 $title = strip_tags($title); 59 $title = htmlspecialchars($title) ; 72 60 }else{ 73 61 $rowdata = pg_fetch_row($rs, 0); 74 62 $title = $rowdata[0]; 75 } 63 $title = htmlspecialchars($title) ; 64 } 65 //ヘッダ続き 66 print "<title>foltia:Lib $tid:$title</title> 67 </head> 68 <body BGCOLOR=\"#ffffff\" TEXT=\"#494949\" LINK=\"#0047ff\" VLINK=\"#000000\" ALINK=\"#c6edff\" > 69 <div align=\"center\"> 70 "; 71 printhtmlpageheader(); 72 print " <p align=\"left\"><font color=\"#494949\" size=\"6\">録画ライブラリ番組個別表示</font></p> 73 <hr size=\"4\"> 74 <p align=\"left\">再生可能ムービーを表示します。<br>"; 75 76 77 if ($tid == 0){ 78 print "$title 【<A HREF = \"./folcast.php?tid=$tid\">この番組のFolcast</A>】 <br>\n"; 79 }else{ 80 76 81 print "<a href=\"http://cal.syoboi.jp/tid/" . 77 htmlspecialchars($tid) . "\" target=\"_blank\">" . 78 htmlspecialchars($title) . "</a> 【<A HREF = \"./folcast.php?tid=$tid\">この番組のFolcast</A>】 <br>\n"; 79 80 82 htmlspecialchars($tid) . "\" target=\"_blank\">$title</a> 【<A HREF = \"./folcast.php?tid=$tid\">この番組のFolcast</A>】 <br>\n"; 83 } 81 84 //確認 82 85 if (file_exists ("$recfolderpath/$tid.localized")){ … … 146 149 $subtitle = htmlspecialchars($subtitle); 147 150 $onairdate = htmlspecialchars($onairdate); 151 $pid = htmlspecialchars($rowdata[6]); 148 152 $fName = htmlspecialchars($rowdata[7]); 149 153 if (ereg(".MP4", $fName)){ … … 173 177 }//end if sb 174 178 175 print " 176 <tr> 177 <td rowspan=\"4\" width=\"170\"><A HREF=\"$httpmediamappath/$tid.localized/mp4/$fName\" target=\"_blank\"><IMG SRC = \"$httpmediamappath/$tid.localized/mp4/$thumbnail\" WIDTH = \"160\" HEIGHT = \"120\"></A></td> 179 print " <tr> 180 <td rowspan=\"4\" width=\"170\"><a href = \"$httpmediamappath/$tid.localized/mp4/$fName\" target=\"_blank\"><img src = \"$httpmediamappath/$tid.localized/mp4/$thumbnail\" width = \"160\" height = \"120\"></A></td> 178 181 <td>$count</td> 179 182 </tr> 180 183 <tr> 181 <td>$subtitle</td> 182 </tr> 184 "; 185 if ($tid == 0){ 186 print "\n <td>$subtitle</td>"; 187 }else{ 188 print "\n <td><a href = \"http://cal.syoboi.jp/tid/$tid/time#$pid\" target=\"_blank\">$subtitle</a></td>"; 189 }//if 190 print " </tr> 183 191 <tr> 184 192 <td>$onairdate</td> 185 193 </tr> 186 194 <tr> 187 <td>< A HREF=\"$httpmediamappath/$tid.localized/mp4/$fName\" target=\"_blank\">$fName</A> / <script language=\"JavaScript\" type=\"text/javascript\">QT_WriteOBJECT_XHTML('http://g.hatena.ne.jp/images/podcasting.gif','16','16','','controller','FALSE','href','http://$serverfqdn/$httpmediamappath/$tid.localized/mp4/$fName','target','QuickTimePlayer','type','video/mp4');</script> $caplink</td>195 <td><a href =\"$httpmediamappath/$tid.localized/mp4/$fName\" target=\"_blank\">$fName</A> / <script language=\"JavaScript\" type=\"text/javascript\">QT_WriteOBJECT_XHTML('http://g.hatena.ne.jp/images/podcasting.gif','16','16','','controller','FALSE','href','http://$serverfqdn/$httpmediamappath/$tid.localized/mp4/$fName','target','QuickTimePlayer','type','video/mp4');</script> $caplink</td> 188 196 </tr> 189 197 "; 190 191 198 192 199 }//for … … 194 201 print "録画ファイルがありません<br>\n"; 195 202 }//if 196 197 //旧仕様198 /*199 //ディレクトリからファイル一覧を取得200 exec ("ls $recfolderpath/$tid.localized/mp4/*.MP4", $mp4files);201 202 if (file_exists("./selectcaptureimage.php") ) {203 $sbpluginexist = 1;204 }205 206 $serverfqdn = getserverfqdn();207 208 foreach($mp4files as $pathfName) {209 $fName = "";210 $fNametmp = split("/",$pathfName);211 $fName = array_pop($fNametmp);212 if(($fName == ".") or ($fName == "..") ){ continue; }213 214 if (ereg(".MP4", $fName)){215 $thumbnail = $fName;216 $thumbnail = ereg_replace(".MP4", ".THM", $thumbnail);217 // $filesplit = split("-",$fName);218 //print "<!-- FILENAME:$fName:$pathfName:$query -->\n";219 $query = "";220 221 $query = "222 SELECT223 foltia_program.tid,224 foltia_program.title,225 foltia_subtitle.countno,226 foltia_subtitle.subtitle,227 foltia_subtitle.startdatetime ,228 foltia_subtitle.m2pfilename ,229 foltia_subtitle.pid230 FROM foltia_subtitle , foltia_program231 WHERE foltia_subtitle.pspfilename = '$fName'232 AND foltia_program.tid = foltia_subtitle.tid233 AND foltia_program.tid = $tid234 ";235 //print "<!-- FILENAME:$fName:$pathfName:$query -->\n";236 $rs = "";237 $rs = m_query($con, $query, "DBクエリに失敗しました");238 239 if (pg_num_rows ($rs ) == 0){240 241 $count = "[話数]";242 $subtitle = "[サブタイトル]";243 $onairdate = "[放映日]";244 $caplink = "";245 }else{246 247 $rowdata = pg_fetch_row($rs, $row);248 $title = $rowdata[1];249 250 if ($rowdata[2]== "" ){251 $count = "[話数]";252 }else{253 $count = $rowdata[2];254 }255 if ($rowdata[3]== "" ){256 $subtitle = "[サブタイトル]";257 }else{258 $subtitle = $rowdata[3];259 }260 $onairdate = $rowdata[4];261 262 $tid = htmlspecialchars($rowdata[0]);263 $title = htmlspecialchars($title);264 $count = htmlspecialchars($count);265 $subtitle = htmlspecialchars($subtitle);266 $onairdate = htmlspecialchars($onairdate);267 268 $day = substr($onairdate,0,4)."/".substr($onairdate,4,2)."/".substr($onairdate,6,2);269 $time = substr($onairdate,8,2).":".substr($onairdate,10,2);270 $onairdate = "$day $time";271 272 //Starlight Breaker向け拡張273 //$debug_pg_num_rows = pg_num_rows ($rs );274 $caplink = "";275 276 if (($sbpluginexist == 1) && (pg_num_rows ($rs ) > 0)){277 $capimgpath = htmlspecialchars(preg_replace("/.m2p/", "", $rowdata[5]));278 if (file_exists("$recfolderpath/$tid.localized/img/$capimgpath") ){279 $caplink = " / <a href = \"./selectcaptureimage.php?pid=$rowdata[6]\">キャプ</a>";280 }else{281 $caplink = " / キャプなし";282 }283 }else{284 $caplink = "";285 }//end if sb286 287 } //end if 検索件数が0のとき288 //--289 print "290 <tr>291 <td rowspan=\"4\" width=\"170\"><A HREF=\"$httpmediamappath/$tid.localized/mp4/$fName\" target=\"_blank\"><IMG SRC = \"$httpmediamappath/$tid.localized/mp4/$thumbnail\" WIDTH = \"160\" HEIGHT = \"120\"></A></td>292 <td>$count</td>293 </tr>294 <tr>295 <td>$subtitle</td>296 </tr>297 <tr>298 <td>$onairdate</td>299 </tr>300 <tr>301 <td><A HREF=\"$httpmediamappath/$tid.localized/mp4/$fName\" target=\"_blank\">$fName</A> / <script language=\"JavaScript\" type=\"text/javascript\">QT_WriteOBJECT_XHTML('http://g.hatena.ne.jp/images/podcasting.gif','16','16','','controller','FALSE','href','http://$serverfqdn/$httpmediamappath/$tid.localized/mp4/$fName','target','QuickTimePlayer','type','video/mp4');</script> $caplink</td>302 </tr>303 ";304 305 }//end if ereg m2p306 }//end foreach307 308 */309 //旧仕様ココまで310 203 ?> 311 204 </tbody>