<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>2019/04/09 on Yano&#39;s digital garage</title>
    <link>https://www.bravotouring.com/~yano/archives/2019/04/09/</link>
    <description>Recent content in 2019/04/09 on Yano&#39;s digital garage</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 09 Apr 2019 23:54:30 +0900</lastBuildDate>
    <atom:link href="https://www.bravotouring.com/~yano/archives/2019/04/09/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>ARIB B25復号処理</title>
      <link>https://www.bravotouring.com/~yano/diary/it/20190409_arib25.htm</link>
      <pubDate>Tue, 09 Apr 2019 23:54:30 +0900</pubDate>
      <guid>https://www.bravotouring.com/~yano/diary/it/20190409_arib25.htm</guid>
      <description>&lt;p&gt;&lt;a href=&#34;https://www.bravotouring.com/~yano/diary/it/20190312_ffmpeg.htm&#34;&gt;二ヶ国語音声対応&lt;/a&gt;の問題で、録画したTSファイルを調べててARIB STD-B25の復号(descramble)に失敗しているものがある事に気付いた。&lt;/p&gt;&#xA;&lt;p&gt;&lt;span class=&#34;Host&#34;&gt;gt110b&lt;/span&gt;の&lt;a href=&#34;https://www.bravotouring.com/~yano/diary/it/20121214gt110b.htm&#34;&gt;MB直結＆ケース内蔵&lt;/a&gt;にしたB-CASカードの接触不良と推察し、手作業で&lt;span class=&#34;Path&#34;&gt;b25&lt;/span&gt;コマンドを叩いていたのだが、よく考えたらB-CASカード1枚では同時に復号できるのは3番組が限界なので、4つ以上の番組録画が重なった場合に足りなくなる事が判明。&lt;/p&gt;&#xA;&lt;p&gt;…かと言って、B-CASカードリーダを2セットも用意するのもバカらしいので、&lt;span class=&#34;Path&#34;&gt;recpt1&lt;/span&gt;ではひとまずscramble状態のまま受信しておいて、別途一つずつファイルを順次descrambleするのが賢いと気づいた。&lt;/p&gt;&#xA;&lt;p&gt;というわけで、&lt;span class=&#34;Path&#34;&gt;/var/www/html/epgrec/do-record.sh&lt;/span&gt;を弄って&lt;span class=&#34;Path&#34;&gt;recpt1&lt;/span&gt;の--b25オプションを削除し、&lt;span class=&#34;Path&#34;&gt;/var/www/html/epgrec/config.php&lt;/span&gt;で定義している&lt;span class=&#34;Software&#34;&gt;epgrec&lt;/span&gt;録画ファイルの拡張子を.tsから.arib25に変更。&#xA;&lt;blockquote class=&#34;Log&#34;&gt;&#xA;～～～&lt;br/&gt;&#xA;$RECORD_MODE = array(&lt;br/&gt;&#xA;    // ※ 0は必須で、変更不可です。&lt;br/&gt;&#xA;    0 =&gt; array(&lt;br/&gt;&#xA;        &#39;name&#39; =&gt; &#39;Full TS&#39;,    // モードの表示名&lt;br/&gt;&#xA;        &#39;suffix&#39; =&gt; &#39;.&lt;span class=&#34;Topics&#34;&gt;arib25&lt;/span&gt;&#39;,  // ファイル名のサフィックス&lt;br/&gt;&#xA;    ),&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;    1 =&gt; array(&lt;br/&gt;&#xA;        &#39;name&#39; =&gt; &#39;Minimum TS&#39;, // 最小のTS&lt;br/&gt;&#xA;        &#39;suffix&#39; =&gt; &#39;.&lt;span class=&#34;Topics&#34;&gt;arib25&lt;/span&gt;&#39;,  // ファイル名のサフィックス&lt;br/&gt;&#xA;    ),&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;    /* Example is as follows.&lt;br/&gt;&#xA;    2 =&gt; array(&lt;br/&gt;&#xA;        &#39;name&#39; =&gt; &#39;12Mbps MPEG4&#39;,&lt;br/&gt;&#xA;        &#39;suffix&#39; =&gt; &#39;.avi&#39;,&lt;br/&gt;&#xA;    ),&lt;br/&gt;&#xA;    */&lt;br/&gt;);&lt;br/&gt;～～～&lt;/blockquote&gt;&#xA;&lt;p&gt;録画完了時に.arib25ファイルを&lt;span class=&#34;Path&#34;&gt;/var/www/html/epgrec/recording&lt;/span&gt;(GUI設定値)から&lt;span class=&#34;Path&#34;&gt;/var/www/html/epgrec/recorded&lt;/span&gt;に移動するよう&lt;span class=&#34;Path&#34;&gt;/var/www/html/epgrec/recorder.php&lt;/span&gt;も変更。&lt;/p&gt;&#xA;&lt;blockquote class=&#34;Log&#34;&gt;&#xA;305         $decodefile = INSTALL_PATH .&#34;/recorded/&#34; . $rrec-&gt;path;&lt;br/&gt;&#xA;306         rename(INSTALL_PATH .$settings-&gt;spool . &#34;/&#34;. $rrec-&gt;path, $decodefile);&lt;br/&gt;&#xA;307         reclog( &#34;recorder:: 予約ID&#34;. $rrec-&gt;id .&#34;:&#34;.$rrec-&gt;type.$rrec-&gt;channel.$rrec-&gt;title.&#34;のB25復号準備&#34; );&#xA;&lt;/blockquote&gt;&#xA;&lt;span class=&#34;Software&#34;&gt;b25&lt;/span&gt;コマンドを回して.arib25から.tsを出力するcronを作成。&#xA;&lt;blockquote class=&#34;Log&#34;&gt;&#xA;yano@GT110b:~$ cat &lt;span class=&#34;Path&#34;&gt;~/etc/cron.sh/b25_descramble.cron&lt;/span&gt;&lt;br/&gt;&#xA;#!/bin/bash&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;PATH=/bin:/usr/bin:/sbin:/usr/sbin&lt;br/&gt;&#xA;NUM_FILES=5&lt;br/&gt;&#xA;SRC_SUFFIX=&#34;.arib25&#34;&lt;br/&gt;&#xA;DST_SUFFIX=&#34;.ts&#34;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;PIDFILE=/home/yano/run/`basename $0`.pid&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;UUID=`id | sed &#39;s/uid=\([0-9]*\)(.*/\1/&#39;`;&lt;br/&gt;&#xA;[ $UUID -eq 0 ] &amp;&amp; PIDFILE=/var/run/`basename $0`.pid;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;if [ -e ${PIDFILE} ];&lt;br/&gt;&#xA;then&lt;br/&gt;&#xA;    exit;&lt;br/&gt;&#xA;fi&lt;br/&gt;&#xA;echo $$ &gt; ${PIDFILE}&lt;br/&gt;&#xA;trap &#34;/bin/rm -f ${PIDFILE}; exit&#34; 1 2 3 15&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;B25_CMD=&#34;/usr/local/bin/b25&#34;&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;CONFIGFILE=/etc/default/epgrec&lt;br/&gt;&#xA;# source config info&lt;br/&gt;&#xA;[ -r ${CONFIGFILE} ] &amp;&amp; . ${CONFIGFILE}&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;cd ${TS_RECORDED};&lt;br/&gt;&#xA;SRC_FILES=`ls -1 *${SRC_SUFFIX} | head -${NUM_FILES}`&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;for f in ${SRC_FILES};&lt;br/&gt;&#xA;do&lt;br/&gt;&#xA;    sudo chown ${OWNER} $f;&lt;br/&gt;&#xA;    chmod 644 $f;&lt;br/&gt;&#xA;    B25_OUT=`basename ${f} ${SRC_SUFFIX}`.${DST_SUFFIX};&lt;br/&gt;&#xA;    ${B25_CMD} ${f} ${B25_OUT};&lt;br/&gt;&#xA;    if [ -s ${B25_OUT} ];&lt;br/&gt;&#xA;    then&lt;br/&gt;&#xA;        touch --reference=${f} ${B25_OUT};&lt;br/&gt;&#xA;        mv ${B25_OUT} ${TS_ENCODING}/;&lt;br/&gt;&#xA;        mv ${f} ${TS_RECORDED}/.b25done/;&lt;br/&gt;&#xA;    else&lt;br/&gt;&#xA;        mv ${f} ${TS_ENCODE_FAILED};&lt;br/&gt;&#xA;    fi;&lt;br/&gt;&#xA;done&lt;br/&gt;&#xA;&lt;br/&gt;&#xA;if [ -e ${PIDFILE} ];&lt;br/&gt;&#xA;then&lt;br/&gt;&#xA;    rm -f ${PIDFILE};&lt;br/&gt;&#xA;fi&#xA;&lt;/blockquote&gt;&#xA;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
