チェンジセット 8
- コミット日時:
- 2006/12/07 15:00:43 (18 年前)
- ファイル:
-
- trunk/doc/CHANGES.txt (更新) (1 diff)
- trunk/doc/img/styles.css (更新) (3 diffs)
- trunk/doc/index.html (更新) (10 diffs)
- trunk/doc/manual/default.css (更新) (1 prop)
- trunk/doc/manual/fcinstall.html (更新) (1 prop)
- trunk/doc/manual/index.html (更新) (1 prop)
- trunk/doc/manual/install.html (更新) (1 prop)
- trunk/doc/manual/ivtv.html (更新) (1 prop)
- trunk/doc/manual/operation.html (更新) (1 prop)
- trunk/doc/manual/start.html (更新) (1 prop)
- trunk/install/perl/foltia_conf1.pl.template (更新) (1 diff)
- trunk/install/perl/ipodtranscode.pl (追加)
- trunk/install/perl/recwrap.pl (更新) (6 diffs)
- trunk/install/perl/tvrecording.pl (更新) (2 diffs)
- trunk/install/php/folcast.php (更新) (3 diffs)
- trunk/install/php/foltia_config2.php.template (更新) (1 diff)
凡例:
- 変更無し
- 追加
- 削除
- 更新
- コピー
- 移動
trunk/doc/CHANGES.txt
r1 r8 1 1 foltia 更新履歴 http://www.dcc-jpl.com/soft/foltia/ 2 3 06.12.7 4 tvrecording.pl: 5 同時刻に複数番組録画したときの信頼性を向上した。 6 7 06.12.6 8 folcast.php: 9 MP4ファイルが存在しない場合にもstatしていたのを修正。 10 recwrap.pl: 11 二重でおんなじ番組を録ろうとしてしまったときの対策を修正。 12 13 06.12.5 14 recwrap.pl: 15 ipodtranscode.pl: 16 foltia_conf1.pl.template: 17 folcast.php: 18 iPod用H.264トラコンに対応。 19 トラコン品質可変に変更。 2 20 3 21 06.11.20 trunk/doc/img/styles.css
r5 r8 1 /************************************************************************/2 /* Custom style-sheet stuffs for the Subversion book in HTML form. */3 /************************************************************************/4 5 1 BODY 6 2 { 7 font-family: " ������Pro W3";3 font-family: "ヒラギノ角ゴ Pro W3"; 8 4 font-size: 13px; 9 5 margin: 10; … … 12 8 } 13 9 14 H1.title 15 { 16 font-size: 250%; 17 font-style: normal; 18 font-weight: bold; 19 color: black; 10 img.photo { 11 margin: 10px; 12 border: 0; 20 13 } 21 14 22 H2.subtitle 23 { 24 font-size: 150%; 25 font-style: italic; 26 color: black; 15 a:link { 16 color: #dd0000; text-decoration: none; 17 background-color: transparent; 27 18 } 28 19 29 H2.title 30 { 31 font-size: 150%; 32 font-style: normal; 33 font-weight: bold; 34 color: black; 20 a:visited { 21 color: #aa4444; text-decoration: none; 22 background-color: transparent; 35 23 } 36 24 37 H3.title 38 { 39 font-size: 125%; 25 a:hover { 26 text-decoration: underline; color:#ff2222 ; 40 27 font-style: normal; 41 font-weight: bold; 42 color: black; 28 background-color: transparent; 43 29 } 44 30 45 H4.title 46 { 47 font-size: 100%; 48 font-style: normal; 49 font-weight: bold; 50 color: black; 31 h1 { 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;*/ 51 43 } 52 44 53 .toc B 54 { 55 font-size: 125%;56 font-style: normal;57 font-weight: bold;58 color: black;45 h2 { 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; 59 51 } 60 52 61 P,LI,UL,OL,DD,DT 62 { 63 font-style: normal;64 font-weight: normal;65 color: black;53 h3 { 54 margin-top: 1.5em; 55 padding-left: 0.3em; 56 border-bottom: solid 1px #000; 57 color: #22d; 66 58 } 67 59 68 TT,PRE 69 { 70 font-family: courier new,courier,fixed; 60 h4 { 61 margin-top: 1em; 62 padding-left: 0.1em; 63 border-bottom: dotted 1px #000; 71 64 } 72 65 73 .command, .screen, .programlisting 74 { 75 font-family: courier new,courier,fixed; 76 font-style: normal; 77 font-weight: normal; 66 div.menu { 67 float: left; 68 width: 200px; 69 background-color: #ddd; 78 70 } 79 71 80 .filename 81 { 82 font-family: arial,helvetica,sans-serif; 83 font-style: italic; 72 div.main { 73 float: right; 74 width: 580px; 75 padding: 0em 10px 0em 10px; 76 /*padding: 0em 1em 0em 1em;*/ 77 /*background-color: #ccc;*/ 84 78 } 85 79 86 A 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; 80 ol { 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;*/ 97 86 } 98 87 99 A:visited 100 { 101 color: purple; 102 text-decoration: underline; 88 ol li { 89 /*margin: 0; 90 padding: 0;*/ 91 font-size: 1em; 92 line-height: 180%; 103 93 } 104 94 105 IMG 106 { 107 border: none; 95 p { 96 line-height: 120%; 108 97 } 109 98 110 .figure, .example, .table 111 { 112 margin: 0.125in 0.5in; 99 div.command { 100 margin: 1em 1.5em; 101 padding : 0.7em 0.5em; 102 font-weight: bolder; 103 color: #fff; 104 background-color: #000; 113 105 } 114 115 .table TABLE116 {117 border: 1px rgb(180,180,200) solid;118 border-spacing: 0px;119 }120 121 .table TD122 {123 border: 1px rgb(180,180,200) solid;124 }125 126 .table TH127 {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.title133 {134 text-align: left !important;135 font-size: 100% !important;136 }137 138 .author139 {140 font-size: 100%;141 font-style: italic;142 font-weight: normal;143 color: black;144 }145 146 106 .sidebar 147 107 { … … 151 111 margin: 0 0.5in; 152 112 } 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 185 114 { 186 115 font-family: courier new,courier,fixed; 187 116 font-style: normal; 188 117 font-weight: normal; 189 font-size: 90%;190 color: black;191 margin: 0 0.5in;192 118 } 193 119 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; 198 126 } 199 200 .navheader HR, .navfooter HR201 {202 display: none;203 }trunk/doc/index.html
r4 r8 53 53 </li> 54 54 </ul> 55 55 <li>現在開発中のツール「Starlight Breaker」向け番組キャプチャ画像自動生成機能</li> 56 56 </li> 57 57 </ul> 58 58 <hr> 59 59 <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> 67 67 <hr> 68 68 <h2 id="foltiamechanism">・foltiaのしくみ</h2> … … 83 83 放送予定時刻の1分前になると録画の一連の流れを管理する録画プログラム[recwrap.pl]が起動します。このプログラムは、録画チャンネルが外部入力であれば外部チューナのチャンネルを適切なものに切り替えるためにリモコン送信プログラム[transfer.pl]を呼びだし、次に実際にビデオでバイスからファイルへの記録を行うキャプチャプログラム[tvrecording.pl]を呼び出します。<br /> 84 84 キャプチャプログラム[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 87 86 OS Xのローカライズ機構に準拠しているため、例えば665.localizedディレクトリはMac OS XのFinderでマウントすると「魔法少女リリカルなのはA's」と表示されます。<br /> 88 87 MPEG4への変換が終わるとpsp用MPEG4オプティマイザ[mp4psp]でタイトル入れとヘッダ組み立てをして最適化したあと、mplayerとImageMagickを利用してサムネールを作成します。サムネールはPSPの仕様に準拠して120x160で拡張子が.THMのjpegファイルです。そしてデータベースの放送情報テーブル[foltia_subtitle]に変換ファイル名を書き込んで録画の一連の流れが終了します。<br /> … … 93 92 <p> iPodへの自動シンク機能はiTunesの持つVideo Podcast機能を使うことで実現します。foltia Video Podcast-Folcastは、トラコンが終わった番組からXMLを組み立ててRSSを作ります。このRSSをiTunesに登録することでiPodへの自動シンク機能を実現します。</p> 94 93 <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> 103 101 </ul> 104 <div class="sidebar"><p> 現在はデータベースエンジンにPostgreSQLを採用していますが、将来的には扱いがらくちんなSQLiteへの切りかえも検討しています。<br /> 102 <div class="sidebar"> 103 <p> 現在はデータベースエンジンにPostgreSQLを採用していますが、将来的には扱いが容易なSQLiteへの切りかえも検討しています。<br /> 105 104 </p></div> 106 105 <hr> … … 111 110 foltiaのダウンロードは公式ページまたはSubversionで入手することが可能です。<br /> 112 111 Subversionを使う場合は下記のコマンドで最新versionを入手できます。</p> 113 <p class=" screen">$svn co http://svn.dcc-jpl.com/foltia/trunk114 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> 115 114 <h3>・配線</h3> 116 115 <p> あらかじめキャプチャカードを取り付け、に外部チューナを外部入力端子につないでおきます。</p> … … 119 118 <h3>・Apacheインストール</h3> 120 119 <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> 122 121 <h3>・ivtvドライバインストール</h3> 123 122 <p>「<a href="http://linux.matchy.net/FedoraGV-MVPRX.html">FEDORA 124 123 CORE で GV-MVP/RX を使う</a>」のrpmパッケージを使用すると早いです。<br /> 125 複数エンコーダを搭載している場合には <span class="command">/etc/modprobe.conf</span>に<br />124 複数エンコーダを搭載している場合には/etc/modprobe.confに<br /> 126 125 <span class="screen">options ivtv tuner=46,46</span><br /> 127 126 と、エンコーダの数だけ「46」を書き足します。<br /> … … 132 131 <p>ポイントは文字コードをEUC-JPでデータベースをつくることです。foltiaという名前でデータベースを作ったら、foltiaパッケージ付属のmktable.txtでテーブルを作成します。</p> 133 132 <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 /> 138 135 mplayer:サムネール作成に利用<br /> 139 136 ImageMagick:サムネール作成に利用</p> 140 137 <h3>・各種Perlモジュールのインストール</h3> 141 138 <p>以下のPerlモジュールを利用します。インストールされてなければCPANなどからインストールして下さい。<br /> 142 <span class="command">Time::HiRes<br />139 Time::HiRes<br /> 143 140 Schedule::At<br /> 144 141 DBD::Pg<br /> 145 142 Jcode<br /> 146 Device::SerialPort </span>(Tira2を使う場合のオプション)</p>143 Device::SerialPort(Tira2を使う場合のオプション)</p> 147 144 <h3>・XMLTVインストール</h3> 148 145 <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 /> 149 1.ffmpegのソースを入手する 150 <p class="command">$svn checkout --revision {"2006-03-28 22:00"} svn://svn.mplayerhq.hu/ffmpeg/trunk 151 ffmpeg 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 149 160 <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> 156 163 <h3>・mp4psp</h3> 157 164 <p>MPEG4のトラコンに利用しているツール「mp4psp」をインストールします。「<a href="http://hetima.com/">ヘチマコンピュータ</a>」によって作られたコードの「<a href="http://www.kokone.to/~kgt/diary.shtml?200501#23_3_1">作業日誌と云う名の不定記 … … 159 166 <h3>・外部チューナコントロール(オプション)</h3> 160 167 <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> 162 169 <h3>・各種設定 </h3> 163 170 <p>設定はperl設定php設定と録画局設定に大きく分かれています。<br /> 164 171 録画局設定は[foltia_station]テーブルで行います。<br /> 165 172 </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 /> 177 189 1なら削除ファイルは「mita」ディレクトリに移動、0なら即時削除します。mitaディレクトリはゴミ箱のように機能しますが自動的に削除はしません。らくちんな運用をしたければ0、安全のため保存しておきたければ1でよいでしょう。</p> 178 <p><span class=" command">$tunerinputnum = 6;<br />190 <p><span class="screen">$tunerinputnum = 6;<br /> 179 191 $svideoinputnum = 7;<br /> 180 192 $comvideoinputnum = 8;</span><br /> 181 193 上記3行にキャプチャカードごとに固有な映像入力のパラメータを示すivtvのinput numperを指示します。それぞれ、チューナ入力、S映像入力、コンポジット入力を指定します。デフォルトはIO 182 194 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 /> 186 201 Tira-2<http://www.home-electro.com/tira2.php>をつないでいるときに1,なければ0を指定します。<br /> 202 <br /> 203 <span class="screen">$mp4filenamestyle = 1 ;</span><br /> 204 古いPSPを利用している場合のみ1を指定します。通常1です。<br /> 205 0:PSP ファームウェアver.2.80より前と互換性を持つファイル名<br /> 206 1;よりわかりやすいファイル名<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 /> 187 217 そのほか、データベース設定もありますが環境に応じて設定して下さい。</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 = "/home/foltia" ; </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 = "/home/foltia" ; </span><br /> 191 222 「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 /> 193 225 録画ファイルの保存先のパス。<br /> 194 <span class="screen">$httpmediamappath = '/tv'; </span><br /> 226 <span class="screen"><br /> 227 $httpmediamappath = '/tv'; </span><br /> 195 228 ブラウザから見える録画ファイルのある位置。この場合http://localhost/tv/を表します。</p> 196 < p>・設定3:foltia_stationテーブル</p>229 <h4>・設定3:foltia_stationテーブル</h4> 197 230 <p>録画の重要な設定となる項目です。インストールが無事に終了してれば首都圏の放送局設定サンプルが入っていますのでそれを参考に設定して下さい。<br /> 198 231 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 /> 210 246 3.foltia_stationテーブルのontvcodeフィールドにfoltia_epgテーブルのontvchannelフィールドと同じ放送局識別名が記入されている<br /> 211 247 局になります。デフォルトで関東キー局とBS、BSデジタル局、CS局が設定されています。</p> … … 213 249 <p> USBトランスミッタであるTira2を動作させるために必要な準備を行います。<br /> 214 250 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 /> 216 253 全てのキーがうまく動作したら、データベースのfoltia_stationテーブルのtunertypeフィールドとtunerchフィールドにチャンネルコマンドを記入します。手もとのチューナではBSデジタル103chのNHK 217 254 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> 218 255 <h3>・動作確認</h3> 219 256 <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> 222 259 <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> 225 262 <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> 228 265 <p>成功するとデータベースのfoltia_programテーブルとfoltia_subtitleテーブルにデータが入ります。<br /> 229 266 ここまでできたらWebブラウザでインストールしたphpのディレクトリを開いてみましょう。<br /> … … 233 270 <img src="img/screen04.png" width="800" height="600" /><br /> 234 271 放送局とビットレートを選択して予約を押すと予約キューが入ります。放送局の設定で[全局]を選択すると文字通り放送スケジュールが入ってる局を全局録画しようとします。いまのところ受信可能不可能に関係なく録画します。想定してる用途は『千葉テレビとテレビ埼玉と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 /> 274 182194 2006-01-31 00:40 a foltia</p> 238 275 <p>放映予定の5分前に起動するプロセスが入ってることが確認できます。<br /> 239 276 この例だと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> 243 280 <p> 番組が終了したらMPEG2が録画されたか確認してみましょう。デフォルトで~/php/tv/690-16-20060131-0045.m2pというファイルが出来ているはずです。ファイル名はそれぞれ以下のルールで命名されます。<br /> 244 281 TID:しょぼいカレンダーと共通の番組IDです。<br /> … … 246 283 放映日:YYYYmmddスタイルの放映日です。<br /> 247 284 放映時刻: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> 250 286 <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> 253 289 <p>確認のためにブラウザで番組表ページを開きます。<br /> 254 290 <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 20 20 $haveirdaunit = 1;#Tira-2<http://www.home-electro.com/tira2.php>をつないでいるときに1,なければ0 21 21 $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 22 27 23 # デフォルトでインストールしてればいじらなくてもいい28 #以下はデフォルトでインストールしてればいじらなくてもいい 24 29 $main::DBDriv="Pg"; 25 30 $main::DBHost="localhost"; trunk/install/perl/recwrap.pl
r1 r8 29 29 $recch = $ARGV[0] ; 30 30 if ($recch eq "" ){ 31 #引き数なし 出実行されたら、終了31 #引き数なしで実行されたら、終了 32 32 print "usage recwrap.pl ch length(sec) [bitrate(5)] [TID] [NO] [PID]\n"; 33 33 exit; … … 79 79 if ($oserr == 1){ 80 80 &writelog("recwrap ABORT recfile exist. [$outputfilename] $recch $reclength 0 0 $bitrate $tid $countno $pid"); 81 exit; 81 82 }else{ 82 83 &writelog("recwrap RECEND [$outputfilename] $recch $reclength 0 0 $bitrate $tid $countno $pid"); … … 243 244 # print "$pspfilname($pspfilnamehd/$pspfilnameft)\n"; 244 245 }# 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 248 if (($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 } 268 281 269 282 #サムネール … … 275 288 &writelog("recwrap THAMI convert -crop 160x120+1+3 -resize 165x126\! $pspdirname/00000002.jpg $pspdirname/M4V$pspdirname.THM "); 276 289 277 if (-e "$pspdirname/ M4V".$pspfilname.".THM"){290 if (-e "$pspdirname/$thmfilename"){ 278 291 $timestamp =`date "+%Y%m%d-%H%M%S"`; 279 292 chomp $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"); 281 294 282 295 }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"); 284 297 } 285 298 # rm -rf 00000001.jpg … … 293 306 # MP4ファイル名をPIDレコードに書き込み 294 307 $DBQuery = "UPDATE foltia_subtitle SET 295 PSPfilename = ' M4V$pspfilname.MP4'308 PSPfilename = '$mp4filename' 296 309 WHERE pid = '$pid' "; 297 310 $sth = $dbh->prepare($DBQuery); … … 300 313 301 314 # MP4ファイル名をfoltia_mp4files挿入 302 $DBQuery = "insert into foltia_mp4files values ('$tid',' M4V$pspfilname.MP4') ";315 $DBQuery = "insert into foltia_mp4files values ('$tid','$mp4filename') "; 303 316 $sth = $dbh->prepare($DBQuery); 304 317 $sth->execute(); trunk/install/perl/tvrecording.pl
r1 r8 24 24 25 25 26 use Time::HiRes qw(usleep);26 #use Time::HiRes qw(usleep); 27 27 28 28 … … 250 250 } 251 251 #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 257 260 # $recch でウェイト調整入れましょう 258 259 260 &writelog("tvrecording: DEBUG SLEEP $startupsleeptime:$useconds:$intval:$startupsleeptimemicro"); 261 262 usleep ( $startupsleeptimemicro ); 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"); 266 267 sleep ( $startupsleep); 263 268 264 269 if ($recunits > 1){ trunk/install/php/folcast.php
r1 r8 40 40 $query = " 41 41 SELECT 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\" ~~ 'M 4V%%' AND foltia_program.tid = foltia_subtitle.tid AND foltia_program.tid = $tid42 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\" ~~ 'M%%' AND foltia_program.tid = foltia_subtitle.tid AND foltia_program.tid = $tid 43 43 ORDER BY \"enddatetime\" DESC 44 44 offset 0 limit $max … … 57 57 $query = " 58 58 SELECT 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\" ~~ 'M 4V%%' AND foltia_program.tid = foltia_subtitle.tid ORDER BY \"enddatetime\" DESC59 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\" ~~ 'M%%' AND foltia_program.tid = foltia_subtitle.tid ORDER BY \"enddatetime\" DESC 60 60 offset 0 limit $max 61 61 "; … … 119 119 $mp4thmname = ereg_replace(".MP4", ".THM", $mp4thmname); 120 120 $mp4thmnameuri = "http://". getserverfqdn() . $httpmediamappath ."/$tid.localized/mp4/$mp4thmname"; 121 $mp4filestat = stat("$recfolderpath/$tid.localized/mp4/$mp4filename"); 122 $mp4filesize = $mp4filestat[7]; 121 122 if (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 } 123 128 124 129 if ($rowdata[0] == 0 ){//EPG録画 trunk/install/php/foltia_config2.php.template
r1 r8 17 17 $recfolderpath = '/home/foltia/php/tv'; //録画ファイルの保存先のパス。 18 18 $httpmediamappath = '/tv'; //ブラウザから見える録画ファイルのある位置。 19 $protectmode = 1; //未使用:(ブラウザからの予約削除を禁止するなどの保護モードで動作します)19 $protectmode = 0; //未使用:(ブラウザからの予約削除を禁止するなどの保護モードで動作します) 20 20 $demomode = 0; //未使用:(ユーザインターフェイスだけ動作するデモモードで動作します) 21 21