チェンジセット 8

差分発生行の前後
無視リスト:
コミット日時:
2006/12/07 15:00:43 (18 年前)
コミッタ:
sorshi
ログメッセージ:

新エンコーダによりH.264対応、
複数同時録画時の信頼性向上、など

ファイル:

凡例:

変更無し
追加
削除
更新
コピー
移動
  • trunk/doc/CHANGES.txt

    r1 r8  
    11foltia 更新履歴 http://www.dcc-jpl.com/soft/foltia/ 
     2 
     306.12.7 
     4tvrecording.pl: 
     5 同時刻に複数番組録画したときの信頼性を向上した。 
     6 
     706.12.6 
     8folcast.php: 
     9 MP4ファイルが存在しない場合にもstatしていたのを修正。 
     10recwrap.pl: 
     11 二重でおんなじ番組を録ろうとしてしまったときの対策を修正。 
     12 
     1306.12.5 
     14recwrap.pl: 
     15ipodtranscode.pl: 
     16foltia_conf1.pl.template: 
     17folcast.php: 
     18 iPod用H.264トラコンに対応。 
     19 トラコン品質可変に変更。 
    220 
    32106.11.20 
  • trunk/doc/img/styles.css

    r5 r8  
    1 /************************************************************************/ 
    2 /* Custom style-sheet stuffs for the Subversion book in HTML form.      */ 
    3 /************************************************************************/ 
    4  
    51BODY 
    62{ 
    7         font-family: "������ Pro W3";  
     3        font-family: "ヒラギノ角ゴ Pro W3";  
    84        font-size: 13px; 
    95        margin: 10;  
     
    128} 
    139 
    14 H1.title 
    15 
    16     font-size: 250%; 
    17     font-style: normal; 
    18     font-weight: bold; 
    19     color: black; 
     10img.photo { 
     11    margin: 10px; 
     12    border: 0; 
    2013} 
    2114 
    22 H2.subtitle 
    23 
    24     font-size: 150%; 
    25     font-style: italic; 
    26     color: black; 
     15a:link { 
     16    color: #dd0000; text-decoration: none; 
     17    background-color: transparent; 
    2718} 
    2819 
    29 H2.title 
    30 
    31     font-size: 150%; 
    32     font-style: normal; 
    33     font-weight: bold; 
    34     color: black; 
     20a:visited { 
     21    color: #aa4444; text-decoration: none; 
     22    background-color: transparent; 
    3523} 
    3624 
    37 H3.title 
    38 
    39     font-size: 125%; 
     25a:hover { 
     26    text-decoration: underline; color:#ff2222 ; 
    4027    font-style: normal; 
    41     font-weight: bold; 
    42     color: black; 
     28    background-color: transparent; 
    4329} 
    4430 
    45 H4.title 
    46 
    47     font-size: 100%; 
    48     font-style: normal; 
    49     font-weight: bold; 
    50     color: black; 
     31h1 { 
     32    margin: 0em 0em 1em 0em; 
     33        padding-top: 0.5em; 
     34        padding-bottom: 0.5em; 
     35    font-family: Times, Georgia, serif; 
     36    font-size: 200%; 
     37        font-weight: bolder; 
     38        color: #00c; 
     39        /*border-top: 2px dotted #00c;*/ 
     40        border-bottom: 2px dotted #aaa; 
     41        /*background-color: #eef;*/ 
     42        /*text-decoration: underline;*/ 
    5143} 
    5244 
    53 .toc B 
    54 
    55     font-size: 125%
    56     font-style: normal
    57     font-weight: bold
    58     color: black
     45h2 { 
     46        padding-left: 0.5em; 
     47       border-left: solid 5px #c00
     48       border-bottom: solid 1px #c00
     49       font-size: 1.5em
     50       color: #000
    5951} 
    6052 
    61 P,LI,UL,OL,DD,DT 
    62 
    63     font-style: normal
    64     font-weight: normal
    65     color: black
     53h3 { 
     54        margin-top: 1.5em; 
     55       padding-left: 0.3em
     56       border-bottom: solid 1px #000
     57       color: #22d
    6658} 
    6759 
    68 TT,PRE 
    69 
    70     font-family: courier new,courier,fixed; 
     60h4 { 
     61        margin-top: 1em; 
     62        padding-left: 0.1em; 
     63        border-bottom: dotted 1px #000; 
    7164} 
    7265 
    73 .command, .screen, .programlisting 
    74 
    75     font-family: courier new,courier,fixed; 
    76     font-style: normal; 
    77     font-weight: normal; 
     66div.menu { 
     67    float: left; 
     68    width: 200px; 
     69        background-color: #ddd; 
    7870} 
    7971 
    80 .filename 
    81 
    82     font-family: arial,helvetica,sans-serif; 
    83     font-style: italic; 
     72div.main { 
     73    float: right; 
     74    width: 580px; 
     75    padding: 0em 10px 0em 10px; 
     76    /*padding: 0em 1em 0em 1em;*/ 
     77        /*background-color: #ccc;*/ 
    8478} 
    8579 
    86 
    87 
    88     color: blue; 
    89     text-decoration: underline; 
    90 }        
    91  
    92 A:hover  
    93 
    94     background: rgb(75%,75%,100%); 
    95     color: blue; 
    96     text-decoration: underline; 
     80ol { 
     81        margin: 0; 
     82        padding :1em 0 1em 2em; 
     83        border-top: 3px solid #aaa; 
     84        border-bottom: 3px solid #aaa; 
     85        /* margin: 0 1em;*/ 
    9786} 
    9887 
    99 A:visited  
    100 
    101     color: purple; 
    102     text-decoration: underline; 
     88ol li { 
     89        /*margin: 0; 
     90        padding: 0;*/ 
     91        font-size: 1em; 
     92    line-height: 180%; 
    10393} 
    10494 
    105 IMG 
    106 
    107     border: none; 
     95p { 
     96    line-height: 120%; 
    10897} 
    10998 
    110 .figure, .example, .table 
    111 
    112     margin: 0.125in 0.5in; 
     99div.command { 
     100        margin: 1em 1.5em; 
     101        padding : 0.7em 0.5em; 
     102        font-weight: bolder; 
     103        color: #fff; 
     104        background-color: #000; 
    113105} 
    114  
    115 .table TABLE 
    116 { 
    117     border: 1px rgb(180,180,200) solid; 
    118     border-spacing: 0px; 
    119 } 
    120  
    121 .table TD 
    122 { 
    123     border: 1px rgb(180,180,200) solid; 
    124 } 
    125  
    126 .table TH 
    127 { 
    128     background: rgb(180,180,200); 
    129     border: 1px rgb(180,180,200) solid; 
    130 } 
    131  
    132 .table P.title, .figure P.title, .example P.title 
    133 { 
    134     text-align: left !important; 
    135     font-size: 100% !important; 
    136 } 
    137  
    138 .author 
    139 { 
    140     font-size: 100%; 
    141     font-style: italic; 
    142     font-weight: normal; 
    143     color: black; 
    144 } 
    145  
    146106.sidebar  
    147107{ 
     
    151111    margin: 0 0.5in; 
    152112} 
    153  
    154 .sidebar P.title+ 
    155 
    156     text-align: center; 
    157     font-size: 125%; 
    158 
    159  
    160 .tip 
    161 
    162     border: black solid 1px; 
    163     background: url(./images/info.png) no-repeat; 
    164     margin: 0.12in 0; 
    165     padding: 0 55px; 
    166 
    167  
    168 .warning 
    169 
    170     border: black solid 1px; 
    171     background: url(./images/warning.png) no-repeat; 
    172     margin: 0.12in 0; 
    173     padding: 0 55px; 
    174 
    175  
    176 .note 
    177 
    178     border: black solid 1px; 
    179     background: url(./images/note.png) no-repeat; 
    180     margin: 0.12in 0; 
    181     padding: 0 55px; 
    182 
    183  
    184 .programlisting, .screen 
     113 .screen, .programlisting 
    185114{ 
    186115    font-family: courier new,courier,fixed; 
    187116    font-style: normal; 
    188117    font-weight: normal; 
    189     font-size: 90%; 
    190     color: black; 
    191     margin: 0 0.5in; 
    192118} 
    193119 
    194 .navheader, .navfooter 
    195 
    196     border: black solid 1px; 
    197     background: rgb(180,180,200); 
     120.command { 
     121        margin: 1em 1.5em; 
     122        padding : 0.7em 0.5em; 
     123        font-weight: bolder; 
     124        color: #fff; 
     125        background-color: #000; 
    198126} 
    199  
    200 .navheader HR, .navfooter HR 
    201 { 
    202     display: none; 
    203 } 
  • trunk/doc/index.html

    r4 r8  
    5353      </li> 
    5454    </ul> 
    55          <li>現在開発中のツール「Starlight Breaker」向け番組キャプチャ画像自動生成機能</li> 
     55  <li>現在開発中のツール「Starlight Breaker」向け番組キャプチャ画像自動生成機能</li> 
    5656  </li> 
    5757</ul> 
    5858<hr> 
    5959<h2 id="requirementhardware">・必要ハードウェア</h2> 
    60 <p><br /
    61    ・Linuxの動くAT互換機<br /
    62     手もと開発・録画機はCeleron 2.6GHz,1GB RAMのスペックで30分番組のMPEG4変換が22分程度で完了しています。<br /> 
    63    ・ivtvドライバで動作するビデオキャプチャカード<br /
    64     foltiaの機能を引きだすためには複数のエンコーダを搭載するのがおすすめです。手もとの環境ではIOデータ GV-MVP/RXを2枚、RX2Wを1枚で計4チャンネル同時録画環境にしています。画質の点からは複数エンコーダが一枚のカードに載ったRX2Wよりも1エンコーダのGV-MVP/RX2の方が多少有利なようです。<br /> 
    65    ・Home Electronics社製USB 赤外線トランスミッタ Tira-2.1(オプション)<br /
    66     外部チューナコントロール機能を使う場合必要です。</p
     60<ul
     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
     64  <li>Home Electronics社製USB 赤外線トランスミッタ <a href="http://www.home-electro.com/tira2.php">Tira-2.1</a>(オプション):外部チューナコントロール機能を使う場合必要です。<br /> 
     65   </li
     66</ul
    6767<hr> 
    6868<h2 id="foltiamechanism">・foltiaのしくみ</h2> 
     
    8383   放送予定時刻の1分前になると録画の一連の流れを管理する録画プログラム[recwrap.pl]が起動します。このプログラムは、録画チャンネルが外部入力であれば外部チューナのチャンネルを適切なものに切り替えるためにリモコン送信プログラム[transfer.pl]を呼びだし、次に実際にビデオでバイスからファイルへの記録を行うキャプチャプログラム[tvrecording.pl]を呼び出します。<br /> 
    8484   キャプチャプログラム[tvrecording.pl]はivtvドライバに付属のrecord-v4l2.plをベースに拡張したもので、搭載されている録画デバイスの空き状況を調べて、空いてる適切なデバイスを利用します。foltiaは特に指定をしない場合、同時録画する場合、地上波録画をキャプチャデバイスの若い番号から順番に、外部入力を一番大きいデバイスから順番に使用していきます。例としてキャプチャカードが4枚入っている場合、地上波録画は/dev/video0から、外部入力録画は/dev/video3から使われていきます。空きデバイスがない場合は、一番若い番号を持つビデオデバイスをつかんでるプロセスを止め、そのデバイスを利用します。録画は前後に10秒程度の余分な録画を行おうとするため、同一のチャネルで連続している番組を指定した場合であっても可能であれば2チューナ使用する形となります。tvrecording.plの録画チャンネルの引数に0を指定した場合はS入力が、-1を指定した場合はコンポジット入力が録画されます。外部入力はデフォルトで一番番号の大きいデバイスを利用します。録画が終了するとデータベースの放送情報テーブル[foltia_subtitle]に録画したMPEG2ファイル名を記録して親プロセスに戻ります<br /> 
    85    録画プログラムが終了すると、親プロセスのrecwrap.plはMPEG4への変換(トラコン)の必要があるか確認して、必要な場合トラコンスクリプト[vfr4psp.sh]を呼びだします。MPEG4トラコンスクリプトはffmpegを使ってm4vとPCMに変換したあとfaacを利用してPCMをaacに変換しMPEG4IPを使ってm4vとaacを多重化してmp4の形にします。デフォルトの圧縮設定は映像がXviD 
    86   300kbps 14.99fps 320x240,音声がAAC LC 81kbps 24kHzとなっていて、30分番組で85MB程度となります。MPEG4ファイルは、MPEG2ファイル保存ディレクトリの下に番組ごとに整理されます。具体的には[TID].localized/mp4/の形を取ります。番組個別ディレクトリはMac 
     85   録画プログラムが終了すると、親プロセスのrecwrap.plはMPEG4への変換(トラコン)の必要があるか確認して、必要な場合変換スクリプト[vfr4psp.sh]か[ipodtranscode.pl]が呼び出されます。変換フォーマットや品質は設定ファイルであらかじめ設定しておきます。MPEG4ファイルは、MPEG2ファイル保存ディレクトリの下に番組ごとに整理されます。具体的には[TID].localized/mp4/の形を取ります。番組個別ディレクトリはMac 
    8786  OS Xのローカライズ機構に準拠しているため、例えば665.localizedディレクトリはMac OS XのFinderでマウントすると「魔法少女リリカルなのはA's」と表示されます。<br /> 
    8887   MPEG4への変換が終わるとpsp用MPEG4オプティマイザ[mp4psp]でタイトル入れとヘッダ組み立てをして最適化したあと、mplayerとImageMagickを利用してサムネールを作成します。サムネールはPSPの仕様に準拠して120x160で拡張子が.THMのjpegファイルです。そしてデータベースの放送情報テーブル[foltia_subtitle]に変換ファイル名を書き込んで録画の一連の流れが終了します。<br /> 
     
    9392<p> iPodへの自動シンク機能はiTunesの持つVideo Podcast機能を使うことで実現します。foltia Video Podcast-Folcastは、トラコンが終わった番組からXMLを組み立ててRSSを作ります。このRSSをiTunesに登録することでiPodへの自動シンク機能を実現します。</p> 
    9493<p> foltiaはデータベースに次のようなテーブルを作ります。</p> 
    95 <ul> 
    96   <li> <span class="command">foltia_program</span>:「魔法少女リリカルなのはA's」のように番組名の情報を格納するテーブルです。番組ごとにトラコンのオン/オフを切り替えることも出来ます。</li> 
    97   <li><span class="command">foltia_subtitle</span>:「第1話 はじまりは突然になの」のような個別番組の放映情報を持つテーブルです。</li> 
    98   <li><span class="command">foltia_station</span>:放送局の情報を持つテーブルです。受信環境によって設定が必要になります。</li> 
    99   <li><span class="command">foltia_tvrecord</span>:録画予約の情報を持つテーブルです。</li> 
    100   <li><span class="command">foltia_epg</span>:XMLTV由来のEPG番組表のデータを持つテーブルです。</li> 
    101   <li><span class="command">foltia_m2pfiles</span>:録画されたMPEG2ファイルの情報をキャッシュ的に持つテーブルです。</li> 
    102   <li><span class="command">foltia_mp4files</span>:変換されたMPEG4ファイルの情報をキャッシュ的に持つテーブルです。</li> 
     94<ul><li>foltia_program:「魔法少女リリカルなのはA's」のように番組名の情報を格納するテーブルです。番組ごとにトラコンのオン/オフを切り替えることも出来ます。</li> 
     95  <li>foltia_subtitle:「第1話 はじまりは突然になの」のような個別番組の放映情報を持つテーブルです。</li> 
     96  <li>foltia_station:放送局の情報を持つテーブルです。受信環境によって設定が必要になります。</li> 
     97  <li>foltia_tvrecord:録画予約の情報を持つテーブルです。</li> 
     98  <li>foltia_epg:XMLTV由来のEPG番組表のデータを持つテーブルです。</li> 
     99  <li>foltia_m2pfiles:録画されたMPEG2ファイルの情報をキャッシュ的に持つテーブルです。</li> 
     100  <li>foltia_mp4files:変換されたMPEG4ファイルの情報をキャッシュ的に持つテーブルです。</li> 
    103101</ul> 
    104 <div class="sidebar"><p> 現在はデータベースエンジンにPostgreSQLを採用していますが、将来的には扱いがらくちんなSQLiteへの切りかえも検討しています。<br /> 
     102<div class="sidebar"> 
     103  <p> 現在はデータベースエンジンにPostgreSQLを採用していますが、将来的には扱いが容易なSQLiteへの切りかえも検討しています。<br /> 
    105104</p></div> 
    106105<hr> 
     
    111110 foltiaのダウンロードは公式ページまたはSubversionで入手することが可能です。<br /> 
    112111 Subversionを使う場合は下記のコマンドで最新versionを入手できます。</p> 
    113 <p class="screen">$svn co http://svn.dcc-jpl.com/foltia/trunk 
    114   foltia</p> 
     112<p class="command">$svn co http://svn.dcc-jpl.com/foltia/trunk  foltia</p> 
     113<p class="screen">またインストールについては「<a href="manual/index.html">foltiaインストールマニュアル</a>」も参考になります。</p> 
    115114<h3>・配線</h3> 
    116115<p> あらかじめキャプチャカードを取り付け、に外部チューナを外部入力端子につないでおきます。</p> 
     
    119118<h3>・Apacheインストール</h3> 
    120119<p>Apacheは2.2以降が2GBを越えるファイルの転送にも対応していて便利です。<br /> 
    121   ポイントは、Apacheを動かすユーザをfoltiaにすることと、「<span class="command">.THM</span>」のmime typeを<span class="command">image/jpeg</span>にする設定を追加することです。</p> 
     120  ポイントは、Apacheを動かすユーザをfoltiaにすることと、「.THM」のmime typeをimage/jpegにする設定を追加することです。</p> 
    122121<h3>・ivtvドライバインストール</h3> 
    123122<p>「<a href="http://linux.matchy.net/FedoraGV-MVPRX.html">FEDORA 
    124123  CORE で GV-MVP/RX を使う</a>」のrpmパッケージを使用すると早いです。<br /> 
    125   複数エンコーダを搭載している場合には<span class="command">/etc/modprobe.conf</span>に<br /> 
     124  複数エンコーダを搭載している場合には/etc/modprobe.confに<br /> 
    126125  <span class="screen">options ivtv tuner=46,46</span><br /> 
    127126  と、エンコーダの数だけ「46」を書き足します。<br /> 
     
    132131<p>ポイントは文字コードをEUC-JPでデータベースをつくることです。foltiaという名前でデータベースを作ったら、foltiaパッケージ付属のmktable.txtでテーブルを作成します。</p> 
    133132<h3>・各種ツールインストール</h3> 
    134 <p>以下のアプリケーションを利用します。インストールされてなければyumやaptなどからインストールして下さい。<br /> 
    135   ffmpeg:MPEG4トラコンに利用<br /> 
    136   faac:MPEG4トラコンに利用<br /> 
    137   MPEG4IP:MPEG4トラコンに利用<br /> 
     133<p>以下のアプリケーションを利用します。インストールされてなければyumやaptなどからインストールして下さい。 
     134<br /> 
    138135  mplayer:サムネール作成に利用<br /> 
    139   ImageMagick:サムネール作成に利用</p> 
     136ImageMagick:サムネール作成に利用</p> 
    140137<h3>・各種Perlモジュールのインストール</h3> 
    141138<p>以下のPerlモジュールを利用します。インストールされてなければCPANなどからインストールして下さい。<br /> 
    142   <span class="command">Time::HiRes<br /> 
     139  Time::HiRes<br /> 
    143140  Schedule::At<br /> 
    144141  DBD::Pg<br /> 
    145142  Jcode<br /> 
    146   Device::SerialPort</span>(Tira2を使う場合のオプション)</p> 
     143  Device::SerialPort(Tira2を使う場合のオプション)</p> 
    147144<h3>・XMLTVインストール</h3> 
    148145<p>EPG番組表取得に必要なXMLTV日本語版を<a href="http://linux.paken.org/index.php?XMLTVニ?ワツミア?ネヌ">ぱ研</a>よりインストールします。</p> 
     146<h3>・ffmpegインストール</h3> 
     147<p>iPod H.264/AVCを作れる拡張をされたffmpegをインストールします。<br /> 
     148  <br /> 
     1491.ffmpegのソースを入手する 
     150<p class="command">$svn checkout --revision {"2006-03-28 22:00"} svn://svn.mplayerhq.hu/ffmpeg/trunk 
     151ffmpeg  
     152<p>2.ここにあるiPodパッチをあてる<br> 
     153  <a href = "http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2006-March/009814.html" target = "_blank">http://lists.mplayerhq.hu/pipermail/ffmpeg-devel/2006-March/009814.html</a><br> 
     154   
     155  <br /> 
     156  3.メイクする<br> 
     157  手もとでは下記オプションでビルドしています。 
     158<p class="command">$./configure --enable-mp3lame --enable-x264 --enable-gpl --enable-a52 
     159--enable-xvid --enable-faac --enable-faad --enable-amr_nb --enable-amr_wb --enable-pthreads 
    149160<h3>・foltia本体</h3> 
    150 <p>アーカイブを展開してできる「perl」と「php」をそれぞれ適当なところに配置します。<br /> 
    151   手もとの環境では<br /> 
    152   <span class="command">/home/foltia/perl/</span><br /> 
    153   と<br /> 
    154   <span class="command">/home/foltia/php/</span><br /> 
    155   に配置しています。</p> 
     161<p>installディリクトリの中にある「perl」と「php」をそれぞれ適当なところに配置します。<br /> 
     162  手もとの環境では/home/foltia/perl/と/home/foltia/php/に配置しています。</p> 
    156163<h3>・mp4psp</h3> 
    157164<p>MPEG4のトラコンに利用しているツール「mp4psp」をインストールします。「<a href="http://hetima.com/">ヘチマコンピュータ</a>」によって作られたコードの「<a href="http://www.kokone.to/~kgt/diary.shtml?200501#23_3_1">作業日誌と云う名の不定記 
     
    159166<h3>・外部チューナコントロール(オプション)</h3> 
    160167<p>Home Electronics社製USB 赤外線トランスミッタ <a href="http://www.home-electro.com/tira2.php">Tira-2.1</a>を利用することにより、外部チューナのコントロールを行うことが可能です。<br /> 
    161   「<a href="http://www.geocities.jp/coffee_style/Tira-2-0.html">Tira-2.1 シリアルプロトコル(の意訳</a>)」より、サンプルプログラムのcapture.plとtransfer.plをダウンロードしてfoltiaのperlディレクトリの下のirdaディレクトリに実行権限を付けてインストールして下さい。Tira2を接続して<span class="command">/dev/ttyUSB0</span>が使える状態になったら、パーミッションを666に変更しておきます。</p> 
     168  「<a href="http://www.geocities.jp/coffee_style/Tira-2-0.html">Tira-2.1 シリアルプロトコル(の意訳</a>)」より、サンプルプログラムのcapture.plとtransfer.plをダウンロードしてfoltiaのperlディレクトリの下のirdaディレクトリに実行権限を付けてインストールして下さい。Tira2を接続して/dev/ttyUSB0が使える状態になったら、パーミッションを666に変更しておきます。</p> 
    162169<h3>・各種設定 </h3> 
    163170<p>設定はperl設定php設定と録画局設定に大きく分かれています。<br /> 
    164171  録画局設定は[foltia_station]テーブルで行います。<br /> 
    165172</p> 
    166 <p>・設定1:<span class="command">perl/foltia_conf1.pl</span><br /> 
    167   <span class="command">perl/foltia_conf1.pl.template</span>をコピーして設定ファイルを作ります。<br /> 
    168   <span class="command">$toolpath = '/home/foltia'; </span><br /> 
    169   「perl」ディレクトリがあるパス。<br /> 
    170   <span class="command">$recunits = '4';</span><br /> 
    171   搭載エンコーダの数。GV-MVP/RX2Wを一枚刺しの場合は2になります。<br /> 
    172   <span class="command">$recfolderpath = '/home/foltia/php/tv';</span><br /> 
    173   録画ファイルを置くPATH<br /> 
    174   <span class="command">$uhfbandtype = 0;</span><br /> 
    175   UHF帯なら0、CATVなら1を指定します。それぞれivtvのntsc-bcast-jpとntsc-cable-jpに対応します。<br /> 
    176   <span class="screen">$rapidfiledelete = 1;</span><br /> 
     173<h4>・設定1:perl/foltia_conf1.pl</h4> 
     174<p>perl/foltia_conf1.pl.templateをコピーして設定ファイルを作ります。<br /> 
     175  <br /> 
     176  <span class="screen">$toolpath = '/home/foltia';<br /> 
     177  </span>「perl」ディレクトリがあるパス。<br /> 
     178  <span class="screen"><br /> 
     179  $recunits = '4';<br /> 
     180  </span>搭載エンコーダの数。GV-MVP/RX2Wを一枚刺しの場合は2になります。<br /> 
     181  <br /> 
     182  <span class="screen">$recfolderpath = '/home/foltia/php/tv';<br /> 
     183  </span>録画ファイルを置くPATH<br /> 
     184  <br /> 
     185  <span class="screen">$uhfbandtype = 0;<br /> 
     186  </span>UHF帯なら0、CATVなら1を指定します。それぞれivtvのntsc-bcast-jpとntsc-cable-jpに対応します。<br /> 
     187  <span class="screen"><br /> 
     188  $rapidfiledelete = 1;</span><br /> 
    1771891なら削除ファイルは「mita」ディレクトリに移動、0なら即時削除します。mitaディレクトリはゴミ箱のように機能しますが自動的に削除はしません。らくちんな運用をしたければ0、安全のため保存しておきたければ1でよいでしょう。</p> 
    178 <p><span class="command">$tunerinputnum = 6;<br /> 
     190<p><span class="screen">$tunerinputnum = 6;<br /> 
    179191  $svideoinputnum = 7;<br /> 
    180192  $comvideoinputnum = 8;</span><br /> 
    181193  上記3行にキャプチャカードごとに固有な映像入力のパラメータを示すivtvのinput numperを指示します。それぞれ、チューナ入力、S映像入力、コンポジット入力を指定します。デフォルトはIO 
    182194  DATA製 GV-MVP/RX,RX2,RX2Wカードで利用できる設定となっています。<br /> 
    183   カード固有の値を調べるにはivtvドライバをインストールした状態で「<span class="command">/usr/bin/ivtvctl.paken 
    184   --list-inputs --device=/dev/video0</span>」などで可能です。<br /> 
    185   <span class="screen">$haveirdaunit = 1;</span><br /> 
     195カード固有の値を調べるにはivtvドライバをインストールした状態で</p> 
     196<p><span class="command">$/usr/bin/ivtvctl.paken 
     197  --list-inputs --device=/dev/video0</span></p> 
     198<p>などで可能です。<br /> 
     199  <span class="screen"><br /> 
     200  $haveirdaunit = 1;</span><br /> 
    186201  Tira-2&lt;http://www.home-electro.com/tira2.php&gt;をつないでいるときに1,なければ0を指定します。<br /> 
     202  <br /> 
     203  <span class="screen">$mp4filenamestyle = 1 ;</span><br /> 
     204古いPSPを利用している場合のみ1を指定します。通常1です。<br /> 
     2050:PSP ファームウェアver.2.80より前と互換性を持つファイル名<br /> 
     2061;よりわかりやすいファイル名<br /> 
     207  <br /> 
     208  <span class="screen">$trconqty = 2;</span><br /> 
     209  MPEG4変換の品質を指定します。デフォルトはH.264/AVCの中画質となっています。<br /> 
     210  3の高画質はファイルサイズは小さく画質もよいのですが処理時間がかかりすぎているのでデフォルトには指定していません。<br /> 
     211  手もとのCeleron2.6GHzのパソコンで、3の設定で実尺の3.4倍、2の設定で1.1倍、1の設定で0.77倍位の処理時間で完了しています。<br /> 
     212  0:PSP/iPod XviD MPEG4(旧式):faacとMPEG4IPを使って変換<br /> 
     213  1:iPod Xvid MPEG4 標準画質 15fps 300kbps<br /> 
     214  2:iPod H.264 中画質 24fps 300kbps<br /> 
     215  3:iPod H.264 高画質 30fps 300kbps<br /> 
     216  <br /> 
    187217そのほか、データベース設定もありますが環境に応じて設定して下さい。</p> 
    188 <p>・設定2:<span class="command">php/foltia_config2.php<br /> 
    189 php/foltia_config2.php.templateをコピーして設定ファイルを作ります。<br /> 
    190 </span><span class="screen">$toolpath = &quot;/home/foltia&quot; ; </span><br /> 
     218<h4>・設定2:php/foltia_config2.php</h4> 
     219<p>php/foltia_config2.php.templateをコピーして設定ファイルを作ります。<span class="command"><br /> 
     220  </span></p> 
     221<p><span class="screen">$toolpath = &quot;/home/foltia&quot; ; </span><br /> 
    191222  「php」ディレクトリがあるパス。この場合/home/foltia/php/と設置されている状態になります。<br /> 
    192   <span class="screen">$recfolderpath = '/home/foltia/php/tv'; </span><br /> 
     223  <span class="screen"><br /> 
     224  $recfolderpath = '/home/foltia/php/tv'; </span><br /> 
    193225  録画ファイルの保存先のパス。<br /> 
    194   <span class="screen">$httpmediamappath = '/tv'; </span><br /> 
     226  <span class="screen"><br /> 
     227  $httpmediamappath = '/tv'; </span><br /> 
    195228ブラウザから見える録画ファイルのある位置。この場合http://localhost/tv/を表します。</p> 
    196 <p>・設定3:foltia_stationテーブル</p
     229<h4>・設定3:foltia_stationテーブル</h4
    197230<p>録画の重要な設定となる項目です。インストールが無事に終了してれば首都圏の放送局設定サンプルが入っていますのでそれを参考に設定して下さい。<br /> 
    198231  foltia_stationテーブルのそれぞれの項目について説明します。<br /> 
    199   stationid:ユニークなID値です。<br /> 
    200   stationname:しょぼいカレンダーと共通の放送局名です。<br /> 
    201   stationrecch:周波数チャンネルです。外部入力の場合はS映像入力の場合に0、コンポジット入力の場合に-1を指定します。<br /> 
    202   stationcallsignue:放送局略称を記入します。空白でも構いません。<br /> 
    203   stationuri:放送局公式URIを記入します。空白でも構いません。<br /> 
    204   tunertype:外部チューナコントロールコマンドを書き入れます。「Tira2準備」の項で詳しく述べます。空白でも構いません。<br /> 
    205   tunerch:外部チューナコントロールコマンドを書き入れます。「Tira2準備」の項で詳しく述べます。空白でも構いません。<br /> 
    206   device:放送局によって録画デバイスを固定するときに用います。たとえば、BS-2専用チューナを常に/dev/video2につないでいるような場合「/dev/video2」と指定します。通常は空白です。<br /> 
    207   ontvcode:XMLTVで用いる放送局識別コードを記入します。EPG番組表に表示される局は<br /> 
    208   1.XMLTV初期設定で情報を取得していて<br /> 
    209   2.foltia_epgにデータがインポートされていて<br /> 
     232  <br /> 
     233  <span class="screen">stationid</span>:ユニークなID値です。<br /> 
     234  <span class="screen">stationname</span>:しょぼいカレンダーと共通の放送局名です。<br /> 
     235  <span class="screen">stationrecch</span>:周波数チャンネルです。外部入力の場合はS映像入力の場合に0、コンポジット入力の場合に-1を指定します。<br /> 
     236  <span class="screen">stationcallsignue</span>:放送局略称を記入します。空白でも構いません。<br /> 
     237  <span class="screen">stationuri</span>:放送局公式URIを記入します。空白でも構いません。<br /> 
     238  <span class="screen">tunertype</span>:外部チューナコントロールコマンドを書き入れます。「Tira2準備」の項で詳しく述べます。空白でも構いません。<br /> 
     239  <span class="screen">tunerch</span>:外部チューナコントロールコマンドを書き入れます。「Tira2準備」の項で詳しく述べます。空白でも構いません。<br /> 
     240  <span class="screen">device</span>:放送局によって録画デバイスを固定するときに用います。たとえば、BS-2専用チューナを常に/dev/video2につないでいるような場合「/dev/video2」と指定します。通常は空白です。<br /> 
     241  <span class="screen">ontvcode</span>:XMLTVで用いる放送局識別コードを記入します。EPG番組表に表示される局は<br /> 
     242  1. 
     243  XMLTV初期設定で情報を取得していて<br /> 
     244  2. 
     245  foltia_epgにデータがインポートされていて<br /> 
    210246  3.foltia_stationテーブルのontvcodeフィールドにfoltia_epgテーブルのontvchannelフィールドと同じ放送局識別名が記入されている<br /> 
    211247  局になります。デフォルトで関東キー局とBS、BSデジタル局、CS局が設定されています。</p> 
     
    213249<p> USBトランスミッタであるTira2を動作させるために必要な準備を行います。<br /> 
    214250   perl/irda/にインストールされたcapture.plを利用して、チューナリモコンからボタンを学習させていきます。foltiaではひとつのキー表現するファイル名に「一文字.dat」というルールを使用しています。手もとのデジタルチューナをコントロールするのに必要だったキーは0-9の数字と地上デジタル切り替え、BSデジタル切り替え、CATV切り替え、放送局番号入力キーの14キーでした。それぞれのキーに対応するリモコンデータファイル名を0.dat-9.dat,u.dat,b.dat,c.dat,X.datとしました。これらをcapture.plと同じ階層に置きます。<br /> 
    215    完了したらチューナコントロールが行えるか動作確認をします。<span class="command">./transfer.pl 0.dat</span>と実行することでリモコンで0キーを押した状態を再現します。<br /> 
     251   完了したらチューナコントロールが行えるか動作確認をします。<span class="command"><br /> 
     252  </span>./transfer.pl 0.datと実行することでリモコンで0キーを押した状態を再現します。<br /> 
    216253   全てのキーがうまく動作したら、データベースのfoltia_stationテーブルのtunertypeフィールドとtunerchフィールドにチャンネルコマンドを記入します。手もとのチューナではBSデジタル103chのNHK 
    217254  BS-hiに切り替える場合、BSデジタル切り替え、チャンネル番号入力、1,0,3と5つのキーを押します。これを再現するにはb.dat,X.dat,1.dat,0.dat,3.datの5つのファイルを送出することになります。これをデータベースに書くと「bX103」となります。tunertypeフィールドとtunerchフィールドは連結されて実行されますので「b」「X103」と書いても「bX103」「」と書いても等価なものとして扱われます。わかりやすい記入方法で書き込んでください。</p> 
    218255<h3>・動作確認</h3> 
    219256<p> ここまで設定できたらあと一息で完了します。まず単純な録画ができるか動作確認していきましょう。<br /> 
    220    最初に<br /
    221   <span class="screen">$head /dev/video0</span></p> 
     257   最初に</p
     258<p><span class="command">$head /dev/video0</span></p> 
    222259<p>などでキャプチャでバイスからMPEG2データか取れるか確認します。なにか出てくればOKですので次に進みます。<br /> 
    223    つぎに、録画試験を~/perl/tvrecording.plを使って行います。<br /
    224   <span class="screen">$./tvrecording.pl 1 60 0 test.m2p 5 0 0 /dev/video0</span></p> 
     260   つぎに、録画試験を~/perl/tvrecording.plを使って行います。</p
     261<p><span class="command">$./tvrecording.pl 1 60 0 test.m2p 5 0 0 /dev/video0</span></p> 
    225262<p>としてみましょう。この例は1chを60秒5Mbpsでtest.m2pというファイル名で/dev/video0から録画することを意味しています。2分程度でプロンプトに戻ります。録画ファイル保存フォルダ(デフォルトだと/home/foltia/tv/)にtest.m2pが出来ていて、ファイルを再生して期待通りならば第1段階成功です。うまくいかなかった場合には~/debug.txtに書かれる情報も参考にして原因を突き止めて下さい。<br /> 
    226    つぎに、しょぼいカレンダーから番組データをインポートできるかを確認します。<br /
    227   <span class="screen">$./perl/getxml2db.pl</span></p> 
     263   つぎに、しょぼいカレンダーから番組データをインポートできるかを確認します。</p
     264<p><span class="command">$./perl/getxml2db.pl</span></p> 
    228265<p>成功するとデータベースのfoltia_programテーブルとfoltia_subtitleテーブルにデータが入ります。<br /> 
    229266   ここまでできたらWebブラウザでインストールしたphpのディレクトリを開いてみましょう。<br /> 
     
    233270  <img src="img/screen04.png" width="800" height="600" /><br /> 
    234271   放送局とビットレートを選択して予約を押すと予約キューが入ります。放送局の設定で[全局]を選択すると文字通り放送スケジュールが入ってる局を全局録画しようとします。いまのところ受信可能不可能に関係なく録画します。想定してる用途は『千葉テレビとテレビ埼玉とtvkでリリカルなのはA'sを録画しておこう!』というものではなくしょぼいカレンダーが持つ*声優関連*や*アニメ特番*などの放送局が特定できない番組グループを録画するためのものです。<br /> 
    235    予約が完了したらシェルでatqコマンドでキューが入ったを確認します。<br /
    236   <span class="screen">$atq</span></p
    237 <p class="screen">182194 2006-01-31 00:40 a foltia</p> 
     272   予約が完了したらシェルでatqコマンドでキューが入ったを確認します。</p
     273<p class="command">$atq<br /
     274182194 2006-01-31 00:40 a foltia</p> 
    238275<p>放映予定の5分前に起動するプロセスが入ってることが確認できます。<br /> 
    239276  この例だと00:40にfolprep.plが起動します。<br /> 
    240   folprep.plが起動すると放映予定1分前にrecwrap.plがキューに入ります。<br /
    241   <span class="screen">$atq</span></p
    242 <p class="screen">182195 2006-01-31 00:44 a foltia</p> 
     277  folprep.plが起動すると放映予定1分前にrecwrap.plがキューに入ります。</p
     278<p class="command">$atq<br /
     279  182195 2006-01-31 00:44 a foltia</p> 
    243280<p> 番組が終了したらMPEG2が録画されたか確認してみましょう。デフォルトで~/php/tv/690-16-20060131-0045.m2pというファイルが出来ているはずです。ファイル名はそれぞれ以下のルールで命名されます。<br /> 
    244281  TID:しょぼいカレンダーと共通の番組IDです。<br /> 
     
    246283  放映日:YYYYmmddスタイルの放映日です。<br /> 
    247284  放映時刻:0000-2359の間での開始時刻になります。しょぼいカレンダーでは24:00以降の時刻を扱いますがfoltiaでは暦通り24:00以降の時刻は次の日として取り扱います。<br /> 
    248    MPEG2の録画が完了するとfoltiaはffmpegとfaacを利用してMPEG4へのトラコンを開始します。所要時間はCeleron2.4GHz環境で実尺の8割程度の時間です。この例の場合~/php/tv/690.localized/mp4/M4V69016.MP4という動画ファイルと同じ階層にM4V69016.THMファイルができ上がります。ファイル名は制限の強いPSP命名ルールに縛られています。M4Vが固定、そのあとに続く5バイトでTIDと話数をある程度表現しようとします。たまにファイル名が衝突することがありますが、その場合は一時的に後ろにタイムスタンプを表記して変換を続けます。また、まれにfaacが変換音声変換途中で止まってしまってトラコン途中で失敗してしまうことがあります。その場合はkill 
    249   -KILLでfaacを止めて下さい。現在原因究明中です。</p> 
     285   MPEG2の録画が完了するとfoltiaはffmpegを利用してH.264/AVCへの変換を開始します。所要時間はCeleron2.6GHz環境で実尺の1.2倍程度の時間です。この例の場合~/php/tv/690.localized/mp4/MAQ-690-16-20060131-0045.MP4という動画ファイルと同じ階層にMAQ-690-16-20060131-0045.THMファイルができ上がります。ファイル名は、先頭がM4Vの場合MPEG4(XviD)、MAQの場合H.264/AVC、そのあとに続くのはMPEG2と同じルールです。</p> 
    250286<p> 番組指定による自動録画が動いたら、つぎにEPGによる個別番組録画の動作確認に移りましょう。<br /> 
    251    まず番組データをXMLTVを用いてインポートします。<br /
    252   <span class="screen">$/usr/bin/perl /usr/bin/tv_grab_jp | /home/foltia/perl/xmltv2foltia.pl</span></p> 
     287   まず番組データをXMLTVを用いてインポートします。</p
     288<p><span class="command">$/usr/bin/perl /usr/bin/tv_grab_jp | /home/foltia/perl/xmltv2foltia.pl</span></p> 
    253289<p>確認のためにブラウザで番組表ページを開きます。<br /> 
    254290  <img src="img/screen05.png" width="800" height="600" /><br /> 
  • trunk/doc/manual/default.css

    • 属性の設定値: svn:mime-type (登録) text/html
  • trunk/doc/manual/fcinstall.html

    • 属性の設定値: svn:mime-type (登録) text/html
  • trunk/doc/manual/index.html

    • 属性の設定値: svn:mime-type (登録) text/html
  • trunk/doc/manual/install.html

    • 属性の設定値: svn:mime-type (登録) text/html
  • trunk/doc/manual/ivtv.html

    • 属性の設定値: svn:mime-type (登録) text/html
  • trunk/doc/manual/operation.html

    • 属性の設定値: svn:mime-type (登録) text/html
  • trunk/doc/manual/start.html

    • 属性の設定値: svn:mime-type (登録) text/html
  • trunk/install/perl/foltia_conf1.pl.template

    r1 r8  
    2020$haveirdaunit = 1;#Tira-2<http://www.home-electro.com/tira2.php>をつないでいるときに1,なければ0 
    2121$mp4filenamestyle = 1 ;#0:PSP ファームウェアver.2.80より前と互換性を持つファイル名 1;よりわかりやすいファイル名 
     22$trconqty = 2; 
     23#0:PSP/iPod XviD MPEG4(旧式):faacとMPEG4IPを使って変換 
     24#1:iPod Xvid MPEG4 標準画質 15fps 300kbps 
     25#2:iPod H.264 中画質 24fps 300kbps 
     26#3:iPod H.264 高画質 30fps 300kbps 
    2227 
    23 #デフォルトでインストールしてればいじらなくてもいい 
     28#以下はデフォルトでインストールしてればいじらなくてもいい 
    2429$main::DBDriv="Pg"; 
    2530$main::DBHost="localhost"; 
  • trunk/install/perl/recwrap.pl

    r1 r8  
    2929$recch = $ARGV[0] ; 
    3030if ($recch eq "" ){ 
    31         #引き数なし実行されたら、終了 
     31        #引き数なし実行されたら、終了 
    3232        print "usage recwrap.pl  ch length(sec) [bitrate(5)] [TID] [NO] [PID]\n"; 
    3333        exit; 
     
    7979if ($oserr == 1){ 
    8080        &writelog("recwrap ABORT recfile exist. [$outputfilename] $recch $reclength 0 0 $bitrate $tid $countno $pid"); 
     81        exit; 
    8182}else{ 
    8283        &writelog("recwrap RECEND [$outputfilename] $recch $reclength 0 0 $bitrate $tid $countno $pid"); 
     
    243244# print "$pspfilname($pspfilnamehd/$pspfilnameft)\n"; 
    244245}# endif MP4ファイル名が新styleなら 
    245  
    246 &writelog("recwrap TRCNSTART vfr4psp.sh $recfolderpath/$outputfilename $pspfilname $pspdirname $psptrcn[1]"); 
    247 #トラコン開始 
    248 system("$toolpath/perl/transcode/vfr4psp.sh $recfolderpath/$outputfilename $pspfilname $pspdirname $psptrcn[1]"); 
    249  
    250 &writelog("recwrap TRCNEND  vfr4psp.sh $recfolderpath/$outputfilename $pspfilname $pspdirname $psptrcn[1]"); 
    251  
    252 #最適化 
    253  
    254 $DBQuery =  "SELECT subtitle  FROM  foltia_subtitle WHERE tid = '$tid' AND countno = '$countno' "; 
    255          $sth = $dbh->prepare($DBQuery); 
    256         $sth->execute(); 
    257  @programtitle = $sth->fetchrow_array; 
    258  
    259 if ( $countno == "0" ){ 
    260         $pspcountno = ""; 
    261 }else{ 
    262         $pspcountno = $countno ; 
    263 
    264 &writelog("recwrap OPTIMIZE  mp4psp -p $pspdirname/M4V$pspfilname.MP4   -t  '$psptrcn[2] $pspcountno $programtitle[0]' "); 
    265 Jcode::convert(\$programtitle[0],'euc'); 
    266 system ("/usr/local/bin/mp4psp -p $pspdirname/M4V$pspfilname.MP4   -t  '$psptrcn[2] $pspcountno $programtitle[0]'") ; 
    267  
     246#2006/12/03_10:30:24 recwrap TRCNSTART vfr4psp.sh /home/foltia/php/tv/591-87-20061203-1000.m2p -591-87-20061203-1000 /home/foltia/php/tv/591.localized/mp4/ 3 
     247 
     248if (($trconqty eq "")||($trconqty == 0 )){ 
     249        &writelog("recwrap TRCNSTART vfr4psp.sh $recfolderpath/$outputfilename $pspfilname $pspdirname $psptrcn[1]"); 
     250        system("$toolpath/perl/transcode/vfr4psp.sh $recfolderpath/$outputfilename $pspfilname $pspdirname $psptrcn[1]"); 
     251        &writelog("recwrap TRCNEND  vfr4psp.sh $recfolderpath/$outputfilename $pspfilname $pspdirname $psptrcn[1]"); 
     252        #最適化 
     253        $DBQuery =  "SELECT subtitle  FROM  foltia_subtitle WHERE tid = '$tid' AND countno = '$countno' "; 
     254                 $sth = $dbh->prepare($DBQuery); 
     255                $sth->execute(); 
     256         @programtitle = $sth->fetchrow_array; 
     257        if ( $countno == "0" ){ 
     258                $pspcountno = ""; 
     259        }else{ 
     260                $pspcountno = $countno ; 
     261        } 
     262        &writelog("recwrap OPTIMIZE  mp4psp -p $pspdirname/M4V$pspfilname.MP4   -t  '$psptrcn[2] $pspcountno $programtitle[0]' "); 
     263        Jcode::convert(\$programtitle[0],'euc'); 
     264        system ("/usr/local/bin/mp4psp -p $pspdirname/M4V$pspfilname.MP4   -t  '$psptrcn[2] $pspcountno $programtitle[0]'") ; 
     265$mp4filename = "M4V${pspfilname}.MP4"; 
     266$thmfilename = "M4V${pspfilname}.THM"; 
     267}else{# #2006/12/6 新エンコーダ 
     268 
     269        &writelog("recwrap TRCNSTART ipodtranscode.pl $recfolderpath/$outputfilename $pspfilname $pspdirname $pid $psptrcn[1]"); 
     270        system("$toolpath/perl/ipodtranscode.pl $recfolderpath/$outputfilename $pspfilname $pspdirname $pid $psptrcn[1]"); 
     271        &writelog("recwrap TRCNEND  ipodtranscode.pl $recfolderpath/$outputfilename $pspfilname $pspdirname $psptrcn[1]"); 
     272 
     273        if($trconqty >= 2){#H.264/AVCなら 
     274        $mp4filename = "MAQ${pspfilname}.MP4"; 
     275        $thmfilename = "MAQ${pspfilname}.THM"; 
     276        }else{ 
     277        $mp4filename = "M4V${pspfilname}.MP4"; 
     278        $thmfilename = "M4V${pspfilname}.THM"; 
     279        } 
     280
    268281 
    269282#サムネール 
     
    275288&writelog("recwrap THAMI  convert -crop 160x120+1+3 -resize 165x126\! $pspdirname/00000002.jpg $pspdirname/M4V$pspdirname.THM "); 
    276289 
    277 if (-e "$pspdirname/M4V".$pspfilname.".THM"){ 
     290if (-e "$pspdirname/$thmfilename"){ 
    278291$timestamp =`date "+%Y%m%d-%H%M%S"`; 
    279292chomp $timestamp; 
    280         system("convert -crop 160x120+1+3 -resize 165x126\! $pspdirname/00000002.jpg $pspdirname/M4V".$pspfilname.".THM.".$timestamp.".THM"); 
     293        system("convert -crop 160x120+1+3 -resize 165x126\! $pspdirname/00000002.jpg $pspdirname/$thmfilename".$timestamp.".THM"); 
    281294 
    282295}else{ 
    283         system("convert -crop 160x120+1+3 -resize 165x126\! $pspdirname/00000002.jpg $pspdirname/M4V".$pspfilname.".THM"); 
     296        system("convert -crop 160x120+1+3 -resize 165x126\! $pspdirname/00000002.jpg $pspdirname/$thmfilename"); 
    284297} 
    285298# rm -rf 00000001.jpg       
     
    293306# MP4ファイル名をPIDレコードに書き込み 
    294307        $DBQuery =  "UPDATE  foltia_subtitle  SET  
    295         PSPfilename      = 'M4V$pspfilname.MP4'  
     308        PSPfilename      = '$mp4filename'  
    296309        WHERE pid =  '$pid' "; 
    297310         $sth = $dbh->prepare($DBQuery); 
     
    300313 
    301314# MP4ファイル名をfoltia_mp4files挿入 
    302         $DBQuery =  "insert into  foltia_mp4files values ('$tid','M4V$pspfilname.MP4') "; 
     315        $DBQuery =  "insert into  foltia_mp4files values ('$tid','$mp4filename') "; 
    303316         $sth = $dbh->prepare($DBQuery); 
    304317        $sth->execute(); 
  • trunk/install/perl/tvrecording.pl

    r1 r8  
    2424 
    2525 
    26 use Time::HiRes qw(usleep); 
     26#use Time::HiRes qw(usleep); 
    2727 
    2828 
     
    250250} 
    251251#1分前にプロセス起動するから指定時間スリープ 
    252 srand(time ^ ($$ + ($$ << 15))); 
    253 my $useconds  = int(rand(12000000)); 
    254 my $intval = int ($useconds  / 1000000); 
    255 my $startupsleeptimemicro = ($startupsleeptime * 1000000) - $useconds; 
    256 $reclengthsec = $reclengthsec + $intval + 1; 
     252#srand(time ^ ($$ + ($$ << 15))); 
     253#my $useconds  = int(rand(12000000)); 
     254#my $intval = int ($useconds  / 1000000); 
     255#my $startupsleeptimemicro = ($startupsleeptime * 1000000) - $useconds; 
     256#$reclengthsec = $reclengthsec + $intval + 1; 
     257#&writelog("tvrecording:  DEBUG SLEEP $startupsleeptime:$useconds:$intval:$startupsleeptimemicro"); 
     258#       usleep ( $startupsleeptimemicro ); 
     259 
    257260# $recch でウェイト調整入れましょう 
    258  
    259  
    260 &writelog("tvrecording:  DEBUG SLEEP $startupsleeptime:$useconds:$intval:$startupsleeptimemicro"); 
    261  
    262         usleep ( $startupsleeptimemicro ); 
     261my $intval = $recch % 50; # 0〜49 
     262my $startupsleep = $startupsleeptime - $intval; #  3〜52 (VHF 40-51) 
     263$reclengthsec = $reclengthsec + $intval + 1; # 
     264 
     265&writelog("tvrecording:  DEBUG SLEEP $startupsleeptime:$intval:$startupsleep"); 
     266 
     267sleep ( $startupsleep); 
    263268 
    264269if ($recunits > 1){ 
  • trunk/install/php/folcast.php

    r1 r8  
    4040$query = " 
    4141SELECT  foltia_program.tid,foltia_program.title, 
    42 foltia_subtitle.countno , foltia_subtitle.subtitle , foltia_subtitle.startdatetime, foltia_subtitle.pspfilename,foltia_subtitle.lengthmin,foltia_subtitle.enddatetime   FROM foltia_subtitle , foltia_program   WHERE \"pspfilename\" ~~ 'M4V%%'  AND foltia_program.tid = foltia_subtitle.tid AND foltia_program.tid = $tid    
     42foltia_subtitle.countno , foltia_subtitle.subtitle , foltia_subtitle.startdatetime, foltia_subtitle.pspfilename,foltia_subtitle.lengthmin,foltia_subtitle.enddatetime   FROM foltia_subtitle , foltia_program   WHERE \"pspfilename\" ~~ 'M%%'  AND foltia_program.tid = foltia_subtitle.tid AND foltia_program.tid = $tid    
    4343ORDER BY \"enddatetime\" DESC  
    4444offset 0 limit  $max  
     
    5757$query = " 
    5858SELECT  foltia_program.tid,foltia_program.title, 
    59 foltia_subtitle.countno , foltia_subtitle.subtitle , foltia_subtitle.startdatetime, foltia_subtitle.pspfilename,foltia_subtitle.lengthmin,foltia_subtitle.enddatetime   FROM foltia_subtitle , foltia_program   WHERE \"pspfilename\" ~~ 'M4V%%'  AND foltia_program.tid = foltia_subtitle.tid ORDER BY \"enddatetime\" DESC  
     59foltia_subtitle.countno , foltia_subtitle.subtitle , foltia_subtitle.startdatetime, foltia_subtitle.pspfilename,foltia_subtitle.lengthmin,foltia_subtitle.enddatetime   FROM foltia_subtitle , foltia_program   WHERE \"pspfilename\" ~~ 'M%%'  AND foltia_program.tid = foltia_subtitle.tid ORDER BY \"enddatetime\" DESC  
    6060offset 0 limit  $max  
    6161        "; 
     
    119119$mp4thmname = ereg_replace(".MP4", ".THM", $mp4thmname); 
    120120$mp4thmnameuri = "http://". getserverfqdn() . $httpmediamappath ."/$tid.localized/mp4/$mp4thmname"; 
    121 $mp4filestat = stat("$recfolderpath/$tid.localized/mp4/$mp4filename"); 
    122 $mp4filesize = $mp4filestat[7]; 
     121 
     122if (file_exists("$recfolderpath/$tid.localized/mp4/$mp4filename")) { 
     123        $mp4filestat = stat("$recfolderpath/$tid.localized/mp4/$mp4filename"); 
     124        $mp4filesize = $mp4filestat[7]; 
     125} else { 
     126        $mp4filesize = 0; 
     127
    123128 
    124129if ($rowdata[0] == 0 ){//EPG録画 
  • trunk/install/php/foltia_config2.php.template

    r1 r8  
    1717                $recfolderpath = '/home/foltia/php/tv'; //録画ファイルの保存先のパス。 
    1818                $httpmediamappath = '/tv'; //ブラウザから見える録画ファイルのある位置。 
    19                 $protectmode = 1; //未使用:(ブラウザからの予約削除を禁止するなどの保護モードで動作します) 
     19                $protectmode = 0; //未使用:(ブラウザからの予約削除を禁止するなどの保護モードで動作します) 
    2020                $demomode = 0; //未使用:(ユーザインターフェイスだけ動作するデモモードで動作します) 
    2121 
track feed