FreeBSDでPT1/PT2を使用して録画環境を立ち上げるためのメモ。 !!!ハードウェア関連の準備 !!必要ハードウェア *FreeBSD機 **i386もしくはamd64で、バージョンは8.0-RELEASE以降必須。 ***実働機の例→[PTserver|/~tosy/computer/PTserver.html] **現時点の実動機のdmesg抜粋 FreeBSD 8.2-STABLE #7: Wed Mar 30 15:08:51 JST 2011 tosy@wig.nu:/usr/obj/usr/src/sys/YUA amd64 CPU: AMD Athlon(tm) II Neo N36L Dual-Core Processor (1297.84-MHz K8-class CPU) real memory = 4294967296 (4096 MB) avail memory = 3981905920 (3797 MB) ad1: 38166MB at ata0-slave UDMA133 SATA ad4: 1907729MB at ata2-master UDMA100 SATA 3Gb/s ad6: 1907729MB at ata3-master UDMA100 SATA 3Gb/s ad8: 1907729MB at ata4-master UDMA100 SATA 3Gb/s ad10: 1907729MB at ata5-master UDMA100 SATA 3Gb/s *PT1もしくはPT2 **主賓:) *スマートカードリーダ **LinuxやFreeBSDでは[SCR3310-NTTcom|http://www.ntt.com/jpki/data/download2.html]が実績が多くて安心。日立のHX520UJ.*系は不可。 !!PTxドライバ *配布元 **[ptx-20110326.tar.gz|http://2sen.dip.jp/cgi-bin/pt1up/source/up0309.gz] (拡張子は .tar.gz) ***http://d.hatena.ne.jp/bsdaemon/20110326/1301153206 *導入手順 **アップローダの都合で拡張子が変更されているので、それぞれ上記の拡張子にリネームしてから展開。 **手順の通りに"make && make install"すればOK。 *設定 **/boot/loader.confに以下の行を追記 ptx_load="YES" *コメント **2011/07/04頃、portsに取り込まれました(multimedia/ptx-kmod) *注意事項 **ptx-20110326より古いバージョンには、複数枚挿し時に致命的な不具合(page faultに至る)があります。 **複数ストリーム並行動作時やシステム負荷が重いとき、micropacket errorが発生してdropすることがあります(環境依存?)。 !!カードドライバ *導入するports **devel/libccid (動作確認: ccid-1.4.4_1) **devel/pcsc-lite (動作確認: pcsc-lite-1.7.2,2) *設定 **/etc/rc.confに以下の行を追記 pcscd_enable="YES" *コメント **ccidやpcsc-liteのバージョンによってはB-CASカードを認識しないようです。 ***認識OK: ccid-1.3.13, pcsc-lite-1.6.0_1,2 ***認識NG: ccid-1.4.0, pcsc-lite-1.6.4_1,2 ***認識OK: ccid-1.4.4_1, pcsc-lite-1.7.4,2 ***時期的に、8.1-RELEASEの時点ではOK、その後にNG、2011年の春先?以降はOKです。 **pcsc-lite-1.7.2,2は、動作しますがメモリリークの不具合があります。 !!動作例 *認識しているところのdmesg抜粋 ptx0: mem 0xfe8ff000-0xfe8fffff at device 4.0 on pci3 ptx1: mem 0xfe8fe000-0xfe8fefff at device 5.0 on pci3 ugen2.2: at usbus2 !!参考リンク *[だえもんだもん|http://d.hatena.ne.jp/bsdaemon/]さん !!!ソフトウェア関連の準備 !!ARIB STD-B25仕様確認テストプログラム *配布元 **[arib_std_b25-0.2.4.lzh|http://www.marumo.ne.jp/junk/arib_std_b25-0.2.4.lzh] ***http://www.marumo.ne.jp/db2009_4.htm#19 *導入手順 **PTxドライバ(ptx-20110326)に同梱のパッチを当てること。 **上記パッチ適用後、標準出力対応パッチ({{ref b25_stdio.patch}})を当てること。 **普通にmakeすると実行形式"b25"が作成されます。 !!TSストリーム分離 *配布元 **{{ref tsstrip.c}} (拙作) ***色々と処理がアレなので、自己責任で…。 *導入手順 **普通にコンパイル。 *動作 **必要最低限のストリームだけを残して、他のストリームは捨てます。 ***ECMなども捨ててしまうので、必ずb25を先に通す必要があります。 ***地デジのHD放送は、通常は自動判別で大丈夫です。衛星放送などはSID指定が必要な場合もあります。 **録画開始から約20秒以内にPMTが更新された場合、更新以前の内容を捨てます(いわゆる「わかさトラップ」対策)。 ***このため、番組直前の余白は最大でも15秒程度に留める必要があります(長さはソース内定義で調整可能)。 **ファイルI/Oだけでなく、パイプ(標準入出力)でも動作可能です。 !!録画wrapper *配布元 **recptx.pl … PTxドライバ(ptx-20110326)同梱のスクリプト **{{ref recpt1.patch}} (拙作) *使用例 **./recpt1 --b25 --strip --sid 103 103 1520 371-59-20100913-1800.m2t ***NHK-BShiで25分20秒間録画(B25解除あり・ストリーム選択あり)。 ***引数は、Linux界隈でデファクトスダンダードなrecpt1コマンドと互換性があります。 *注意 **チューナー数は内部で決め打ちしています。そのままだと2枚挿し前提です。 ***変更する場合は、冒頭の下記の行を修正してください。 @isdb_s_tuners = ("0.s0", "0.s1", "1.s0", "1.s1"); @isdb_t_tuners = ("0.t0", "0.t1", "1.t0", "1.t1"); !!参考リンク *[まるも製作所|http://www.marumo.ne.jp/] !!!foltiaの導入 以下の手順はメモ書き程度なので、参考までに。 !!用意するもの *foltia本体 **パッケージ版は古いようなので、svnで取り出し。今回使用したのはrevision 135。 % svn co http://svn.dcc-jpl.com/foltia/trunk foltia *portsから導入 **www/apache22 (apache-2.2.17_1) **databases/sqlite3 (sqlite3-3.7.5) **lang/php5 (php5-5.3.5) APACHE=YES MULTIBYTE=YES **databases/php5-sqlite (php5-sqlite-5.3.5) UTF8=YES **lang/php5-extensions (php5-extensions-1.4) MBSTRING=YES **databases/p5-DBD-DQLite (p5-DBD-SQLite-1.31) **japanese/p5-Jcode (ja-p5-Jcode-2.07) **www/p5-libwww (p5-libwww-5.837) **sysutils/p5-Schedule-At (p5-Schedule-At-1.11) !!作業・修正など *システム設定 **foltiaユーザーの作成(UID/GID=88/88)。groupsにはwww(80)追加。 **/usr/local/etc/apache22/httpd.confの以下の行を修正。 User foltia **/usr/local/etc/apache22/Includes/foltia.confの作成 ## Foltia AddType application/x-httpd-php .php AddType application/x-httpd-php-source .phps Alias /foltia/ "/home/foltia/php/" Order allow,deny Allow from all AddDefaultCharset off DirectoryIndex index.php **/etc/crontabで、atrunを5分おき実行(*/5)から毎分実行(*)に修正 **foltiaユーザにatコマンド実行権限を付与(空ファイル/etc/at/at.denyを作成) *foltia設定・修正 **以下は/home/foltia/ディレクトリで、folitaユーザで実行。 **サイトから取得したfoltia本体のfoltia/install/phpおよびfoltia/install/perlディレクトリを、/home/foltia/直下にコピー。 **必要に応じて~/.forwardを設定。 **perl/foltia_conf1.plを設定。 ***$recfolderpathと$haveirdaunitのあたりを修正。 cp perl/foltia_conf1.pl.template perl/foltia_conf1.pl vi perl/foltia_conf1.pl **php/foltia_config2.phpを設定 cp php/foltia_config2.php.template php/foltia_config2.php vi php/foltia_config2.php ***$recfolderpath,$httpmediamappath,$useenvironmentpolicyのあたりを修正し、以下の行を追加。 date_default_timezone_set("Asia/Tokyo"); **PostgreSQL関連の記述を削除 ***use DBD::Pg;の行をコメントアウト % vi `grep -l DBD::Pg perl/*` *データベースの作成と動作確認 **初期データベース作成 % sqlite3 -batch -init mktable.sqlite.txt foltia.sqlite ***no such tableのエラーが数個出るけど無視 **crontabの設定(実行時刻や間隔は適宜調整) % crontab -e 7 * * * * /home/foltia/perl/schedulecheck.pl > /dev/null 2>&1 **しょぼかるから番組表を取得 % perl/getxml2db.pl long **ブラウザで表示して動作確認(http://サーバ名/foltia/) !!カスタマイズ *自分勝手な修正 ** デジタル専用なのでlistreserve.phpで"録画レート"などの表示部を削除 ** ipodtranscodeを使わないのでrecwrap.plの該当部を削除 ** しょぼかるにログインするためgetxml2db.plを改変してIDを通すように ** 重複チェックはrecpt1内で行うためrecwrap.plのcontinuousrecordingcheck()削除 !!参考リンク *[foltia|http://www.dcc-jpl.com/soft/foltia/] *[foltia+SQLiteをインストール|http://d.hatena.ne.jp/bsdaemon/20100417/1271480522] ---- {{comment tail}}