トップ 差分 一覧 ソース 検索 ヘルプ RSS ログイン

computer/PTx

FreeBSDでPT1/PT2を使用して録画環境を立ち上げるためのメモ。

ハードウェア関連の準備

 必要ハードウェア

  • FreeBSD機
    • i386もしくはamd64で、バージョンは8.0-RELEASE以降必須。
    • 現時点の実動機の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 <INTEL SSDSA2M040G2GC 2CV102HD> at ata0-slave UDMA133 SATA
ad4: 1907729MB <WDC WD20EARS-00MVWB0 51.0AB51> at ata2-master UDMA100 SATA 3Gb/s
ad6: 1907729MB <WDC WD20EARS-00MVWB0 51.0AB51> at ata3-master UDMA100 SATA 3Gb/s
ad8: 1907729MB <WDC WD20EARS-00MVWB0 51.0AB51> at ata4-master UDMA100 SATA 3Gb/s
ad10: 1907729MB <WDC WD20EARS-00MVWB0 51.0AB51> at ata5-master UDMA100 SATA 3Gb/s
  • PT1もしくはPT2
    • 主賓:)
  • スマートカードリーダ
    • LinuxやFreeBSDではSCR3310-NTTcomが実績が多くて安心。日立のHX520UJ.*系は不可。

 PTxドライバ

  • 導入手順
    • アップローダの都合で拡張子が変更されているので、それぞれ上記の拡張子にリネームしてから展開。
    • 手順の通りに"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: <EARTHSOFT PT2> mem 0xfe8ff000-0xfe8fffff at device 4.0 on pci3
ptx1: <EARTHSOFT PT2> mem 0xfe8fe000-0xfe8fefff at device 5.0 on pci3
ugen2.2: <NTT Communications Corp.> at usbus2

 参考リンク

ソフトウェア関連の準備

 ARIB STD-B25仕様確認テストプログラム

  • 導入手順
    • PTxドライバ(ptx-20110326)に同梱のパッチを当てること。
    • 上記パッチ適用後、標準出力対応パッチ(b25_stdio.patch)を当てること。
    • 普通にmakeすると実行形式"b25"が作成されます。

 TSストリーム分離

  • 配布元
    • tsstrip.c (拙作)
      • 色々と処理がアレなので、自己責任で…。
  • 導入手順
    • 普通にコンパイル。
  • 動作
    • 必要最低限のストリームだけを残して、他のストリームは捨てます。
      • ECMなども捨ててしまうので、必ずb25を先に通す必要があります。
      • 地デジのHD放送は、通常は自動判別で大丈夫です。衛星放送などはSID指定が必要な場合もあります。
    • 録画開始から約20秒以内にPMTが更新された場合、更新以前の内容を捨てます(いわゆる「わかさトラップ」対策)。
      • このため、番組直前の余白は最大でも15秒程度に留める必要があります(長さはソース内定義で調整可能)。
    • ファイルI/Oだけでなく、パイプ(標準入出力)でも動作可能です。

 録画wrapper

  • 配布元
    • recptx.pl … PTxドライバ(ptx-20110326)同梱のスクリプト
    • 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");

 参考リンク

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/"
<Directory "/home/foltia/php/">
  Order allow,deny
  Allow from all
  AddDefaultCharset off
  DirectoryIndex index.php
</Directory>
    • /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()削除

 参考リンク


お名前: コメント: