ARIB

ARIB B25復号処理

二ヶ国語音声対応の問題で、録画したTSファイルを調べててARIB STD-B25の復号(descramble)に失敗しているものがある事に気付いた。

gt110bMB直結&ケース内蔵にしたB-CASカードの接触不良と推察し、手作業でb25コマンドを叩いていたのだが、よく考えたらB-CASカード1枚では同時に復号できるのは3番組が限界なので、4つ以上の番組録画が重なった場合に足りなくなる事が判明。

…かと言って、B-CASカードリーダを2セットも用意するのもバカらしいので、recpt1ではひとまずscramble状態のまま受信しておいて、別途一つずつファイルを順次descrambleするのが賢いと気づいた。

というわけで、/var/www/html/epgrec/do-record.shを弄ってrecpt1の–b25オプションを削除し、/var/www/html/epgrec/config.phpで定義しているepgrec録画ファイルの拡張子を.tsから.arib25に変更。

~~~
$RECORD_MODE = array(
    // ※ 0は必須で、変更不可です。
    0 => array(
        'name' => 'Full TS',    // モードの表示名
        'suffix' => '.arib25',  // ファイル名のサフィックス
    ),
    1 => array(
        'name' => 'Minimum TS', // 最小のTS
        'suffix' => '.arib25',  // ファイル名のサフィックス
    ),
    /* Example is as follows.
    2 => array(
        'name' => '12Mbps MPEG4',
        'suffix' => '.avi',
    ),
    */
);
~~~

録画完了時に.arib25ファイルを/var/www/html/epgrec/recording(GUI設定値)から/var/www/html/epgrec/recordedに移動するよう/var/www/html/epgrec/recorder.phpも変更。

305         $decodefile = INSTALL_PATH ."/recorded/" . $rrec->path;
306         rename(INSTALL_PATH .$settings->spool . "/". $rrec->path, $decodefile);
307         reclog( "recorder:: 予約ID". $rrec->id .":".$rrec->type.$rrec->channel.$rrec->title."のB25復号準備" );

b25コマンドを回して.arib25から.tsを出力するcronを作成。