Created: March 30, 2014
Updated: Dec 29, 2014

マニュアルがないと何もできない私が Siano チューナで24時間ワンセグ野郎サーバを構築するマニュアルを自分用にまとめてみたら楽しかった件。

まとめ 楽しい! ■目次
0. 更新履歴
1. はじめに
1.1 必要なもの
1.2 Siano ワンセグチューナー調達
1.3 サーバ機器選定
2. Ubuntu LTS Server インストール
2.1 インストールイメージ入手
2.2 インストール
2.3 アップグレード
3. Sinanoドライバインストールの記録
4. ディスクの増設
5. 録画ツールのインストール、Siano動作確認の記録
6. ストリームサーバ perlRTMP の導入
6.1 Web サイト埋め込み式動画再生プレーヤ JW FLV MEDIA PLAYER の導入
6.2 Web サーバの設定
7. ストリームサーバ(perlRTMP)のインストール
8. OneSeg24forLinux の導入
8.1 ライブラリのインストール
8.2 録画スクリプトの起動
9. ディスクフル防止
10. (iPhone 向けストリーミング) OneSeg24 for iPhone のインストール
11. 「player.pl差し替え版sqlite3対応版」による、見やすく検索できる番組表と番組のMP4変換ダウンロード
11.1 player.pl差し替え版sqlite3対応版の設定
11.2 player45.swf 導入
11.3 segwrapperの導入
11.4 player.pl 動作確認
11.5 OneSeg24 for iPhone 対応
11.6 PC用MP4作成対応
12. 字幕対応
12.1 字幕データ抽出 dumpeit 導入
12.2 字幕表示 caption.pl 導入
12.3 字幕データ作成の自動処理
13. Siano チューナーのハングアップ予防
13.1 ハングアップしたチューナーの特定
13.2 Siano 熱暴走予防
14. 日々の運用
15. トラブルシューティング
16. ToDo
17. リファレンス
18. 謝辞


■0. 更新履歴
2014/12/29
Ubuntu 14 LTS 出たけど今年はムリという近況をよくあるだろう質問に追記。
やっつけ死活監視復帰スクリプトを ToDo に追記。

■1. はじめに
前文書の UOT-100 で使ってた Ubuntu 8.04.4 LTS Server のサポートが終了した。

マニュアルがないと何もできない私が OneSeg24 for Linux サーバを構築するマニュアルを自分用に作ってみた。
http://www.eonet.ne.jp/~y-katow/OneSeg24forLinux-UOT-100-Ubuntu8.04LTS-Server.html

Siano で OneSeg24 for Linux を構築する手順については、
今お読みになっている本ページで完結していますので
上記を参照しなくても大丈夫です。

書き直した理由:
Siano チューナが国内で手に入ったので乗り換えてみた。
省スペースデスクトップで運用してたら電気代めっさかかったのでノートに変えた。

前回との変更点:
Siano 対応のためのデバイスドライバビルド
節電 USB ハブによる物理チューナと OS 上デバイスファイルの対応づけ
OneSeg24 for iPhone の 「player.pl差し替え版sqlite3対応版」対応
ぷちのいずさま URL、前文書より変更があり注意。

お約束: 内容については責任を持ちません。

「書いてあるとおりにしてるのに動かん」とかは
メールくださったら何かしら返事はするかもしれません。
または2ちゃんねる掲示板の該当スレで質問したら、
("24時間ワンセグ野郎 site:2ch.net" で検索)
他人のフリして名無しでレスするかも。
あとご指摘などフィードバック大歓迎です。
メールでもスレでもご連絡ありましたら嬉しいです。

よくあるだろう質問:
Q:なんでこのページ長いの?
「今日の必ずトクする一言」の影響です。
http://www3.coara.or.jp/~tomoyaz/higa9911.html#991112
いまだに vi で html 手打ちしてます。Shift_JIS を UTF-8 にしたいとは思っています。
Q:もう Ubuntu 14 LTS 出るよ?
→2013 ゴールデンウイークには作業終わってたけど忙しかった。
スクショ画像でいつやってたかは察してください。
チューナの熱暴走とかあったけど、工夫したら 2013 年の猛暑にもかかわらず安定したので盆にある程度まで作成。
それ以後体調悪くて書けませんでした。
WindowsXP サポート終了だとか Ubuntu 14 とかで もう延ばせないと思い、なんとか書きました。
Q:で Ubuntu 14 LTS 出たらどうするん?
→Ubuntu 14 LTS 環境でのビルドを検証し、また書きます。
→(2014/12/29追記) DTM とか音ゲーとかしてたら時間なくなった。今年は無理、すまん。

■1.1 必要なもの
x86 PC、USB 2.0 x3 ポート必要
外付け HDD、USB 2.0 以上か IEEE 1394 接続。
Siano チューナ、受信局数分(ただし dvbstream の仕様により8局が最大)

あると便利なもの
ELECOM の 節電 USB ハブ U2H-SW4S シリーズ x2
アンテナブースター

■1.2 Siano ワンセグチューナー調達
いっときは海外モノしかなかったが、
国内で調達できる Siano チューナは以下が確認されているようだ。
数百円から二千円台で買えてしまう。
とはいえ8本買うとけっこうな額になるが...
調達先は「Google ショッピング」とかで探してください。

・ワールドフェイス WF-W1
WF-W1

wf-w1 >>製品情報 >>World-Face | ワールドフェイス | 新品&中古パソコン、周辺機器をグッドプライスにて世界へ
http://world-face.com/products/wf-w2.html
どこにも売ってなかったのでネットオークションで中古で入手。
わたしが入手した個体は Siano Nova B Digital Receiver。
SMC コネクタ、横出し。
(伸縮)ロッドアンテナ付属
×幅が比較的広いので、後述の節電USB・HUB(U2H-SW4)に連続して刺せない。
→百均の USB 延長とか使えばいいんじゃなイカ?

・恵安 KDK-ONESEG-MINI/U2
恵安株式会社 USBワンセグTVチューナー KDK-ONESEG-MINI/U2
KDK-ONESEG-MINI/U2
http://www.keian.co.jp/products/products_info/kdk_oneseg_miniu2/kdk_oneseg_miniu2.html
わたしが入手した個体は Siano Nova B Digital Receiver。
○びっくりするくらい小さい。
SMC コネクタ。
SMC-F 変換コネクタ付属。
(伸縮)ロッドアンテナ付属。

・アウロラ AU-ONESEG2
AU-ONESEG2
AU-ONESEG2
http://www.aurora-eos.co.jp/original/au-oneseg2/html/index.html
わたしが入手した個体は Siano Nova B Digital Receiver。
×独自コネクタ。一見して RCA と思ったが微妙に違う。
○高感度ロングアンテナ付属。
→アンテナに繋がっている同軸ケーブル途中で切ったら8本分結線できるのでは。
F 変換コネクタ付属。

・エスケイネット SK-1DX
SK-1DX
2013/05 時点でメーカーサイトに製品ページが見つからず...
わたしが入手した個体は Siano Nice Digital Receiver。
リモコンがない以外、上記 WF-W1 と見分けがつかんくらいそっくり。
○リモコン回路がないせいか、いちばん安い
SMC コネクタ、横出し。
(伸縮)ロッドアンテナ付属
×幅が比較的広いので、後述の節電USB・HUB(U2H-SW4)に連続して刺せない。
→百均の USB 延長とか使えばいいんじゃなイカ?

■1.3 サーバ機器選定
24時間回すだけあって、電気代を考えると省電力ノートを推奨。
WindowsXP を使ってて Windows7 がサポートされていないチップセットの
ノート PC なんぞに入れたらいいんじゃなイカ?
USB ポートは、USB 2.0 が 3 ポート必要(USB-HUB x2、USB-HDD x1)。
置く場所にもよりますが、なるべく静かなものがよいかも。
ノートの内蔵 HDD は 20GB もあれば十分。
そのあたりの容量だと定格電流が 500mA、700mA、1A などがあるが、
選ぶことができるのなら小さいのがよい。
SSD はやったことないけど、swap とか書き換え回数が多いので
やめたほうがいいとオモウ。

録画をためる外付け USB-HDD については、USB 2.0 以上。
バスパワー/セルフパワーは本体との相性できめてください。
電気代考えたらできればバスパワーで 2.5 インチ。
容量のめやすとして、わたしのところでは8局運用で
640GB → 17日分保持、1TB → 25日分保持してました。


■2. Ubuntu LTS Server インストール
■2.1 インストールイメージ入手
http://ubuntutym2.u-toyama.ac.jp/ubuntu//precise/ubuntu-12.04.4-server-i386.iso
Ubuntu 12.04 LTS をインストールする。が、
ちょっと古めの PC だと12.04 LTS の CD で
CPU が物理アドレス拡張に対応してないぜ、と文句を言われる。
"This kernel requires the following features not present on the CPU:
pae
Unable to boot - please use a kernel appropriate for your CPU."
→いったん Ubuntu 10.04.4 LTS をインストールして、後にアップグレードする。
http://ubuntutym2.u-toyama.ac.jp/ubuntu/lucid/ubuntu-10.04.4-server-i386.iso

CD-R に焼く。
マニュアルがないと何もできないので焼くソフトが分からない場合→こちらを参照
Windows TIPS:Windows 7/8でISO/IMGファイルをCD/DVD-Rに書き込む - @IT
http://www.atmarkit.co.jp/ait/articles/1305/13/news070.html

気分的に、Windows とか入ってたディスクではどうなるか分からないので
MBR とパーティションテーブルをデータ消去したディスクにインストールする。
マニュアルがないと何もできないのでどうデータ消去したらいいか分からない場合 → DBANとかどうでしょう
@IT:Security Tips > ハードディスクの内容を安全に消去 - DBAN
http://www.atmarkit.co.jp/fsecurity/rensai/securitytips/024dban.html

起動後 "boot: " プロンプトで "quick" と打って、dwipe が開始されれば
ディスクの先頭にある MBR とパーティションテーブルは消えているだろうから、電源落としてOK.

■2.2 インストール
以下 Ubuntu 10.04.4 LTS の手順。
Ubuntu 12.04 LTS の場合は適宜読み替えてください。

"Language"画面
"English"のまま[Enter]。

ubuntu ロゴ画面
"Install Ubuntu Server"のまま[Enter]。

"[!!] Choose language"画面
"English - English"のまま[Enter]。
"Choose a country, territory or area:"
一番下の"other"を選択、[Enter]。
"Asia"を選択、[Enter]。
"Japan"を選択、[Enter]。
"Detect keyboard layout?"
"<No>"のまま[Enter]。
"Origin of the keyboard:"
"Japan"を選択し[Enter]。
"Keyboard layout:"
"Japan"のまま[Enter]。

"Scanning CD-ROM"
"Loading additional compornents"画面
CD-ROMをスキャンするのでしばらく待つ。2、3分

※IPアドレスは便宜上、192.168.254.50/24 とする。以下同様。
"Configuring the network with DHCP"画面
"<Cancel>"を選択、[Enter]。
※間に合わなかったら"<Back>"で戻る。
"[!!] Configure the network"画面、
"Configure network manually"を選択
"IP address:" 192.168.254.50
"Netmask:" 255.255.255.0 のまま
"Gateway:" お使いのブロードバンドルータのIPアドレス
"Name server addresses:" お使いのブロードバンドルータのIPアドレス
"Hostname:" コンピュータ名を適切に入力
"Domain name:" 任意

"[!] Configure the clock"画面
"Asia/Tokyo"と出るのでそのまま[Enter]。

"[!!] Partition disks"画面
"Guided - use entire disk and set up LVM"のまま[Enter]。
ディスクが選択されているので[Enter]。
"Write the changes to disks and configure LVM?"
内容を確認して[Tab]で"<Yes>"を選択し、[Enter]
ディスク容量が表示されているので確認し、[Enter]
"Write the changes to disks?"
内容を確認して[Tab]で"<Yes>"を選択し、[Enter]
"Partitions formatting"
フォーマットされる。

"Installing the base system"画面
インストールが進行するのでしばらく待つ。
数分。

"[!!] Set up users and passwords"画面
"Full name for the new user:" 「OneSeg24 for Linux」トカ何トカ
"Username for your account:" oneseg24
"Choose a password for the new user:" 適切に入力。
"Re-enter password to verify:"
"Encrypt your home directory?"には"<No>"のまま[Enter]。

"[!] Configure the package manager"画面
"HTTP proxy information (blank for none):" 必要なら、http://プロキシサーバのfqdnまたはIPアドレス:ポート/ "<Continue>"
"Cofiguring apt"画面
インストールが続行される。

"Select and install software"画面
"No automatic updates"のまま[Enter]。

"[!] Software selection"画面
何もチェックを入れてないまま[Enter]。

インストールが進行するのでしばらく待つ。
5分くらい。

"[!} Configuring grub-pc"画面
"Install the GRUB boot loader to the master boot record?"
"<Yes>"のまま[Enter]。

"[!!} Finish the installation"画面
トレイがイジェクトされるので、CD-R を取り出してから[Enter]

■2.3 アップグレード

oneseg24 でログイン。

最新のパッケージリストに更新
$ sudo apt-get -y update
念のためアップグレード
$ sudo apt-get -y upgrade
5分くらい。
再起動
$ sudo reboot

リリースアップグレード。時間計っとく。
$ sudo time do-release-upgrade
ビデオカードがしょぼいぜ、とか言われる場合がある。
"Your graphics hardware may not be fully supported in Ubuntu 12.04 LTS."
"continue [yN]"で"y"を入力、[Enter]。
ちょっと時間かかるぜ、とか言われる。
"Installing the upgrade can take several hours."
"continue [yN] Details [d]"で"y"を入力、[Enter]。

"Configuring libc6"画面
"Restart services during package upgrades without asking?"
[TAB]で"<Yes>"を選択、[Enter]。
30分くらいで
古いパッケージを捨てるぜ、とか言われる。
"Remove obsolete packages?"
"Continue [yN] Details [d]"で"y"を入力、[Enter]。

終わったから再起動するぜ、とか言われる。
"System upgrade is complete."
"Restart requiered"
"Continue [yN]"で"y"を入力、[Enter]。
再起動する。
しまった。time 取ってたのなら、"N" で止めといて
時間みてから sudo reboot するべきだな。まぁいいか。
Login: が "Ubuntu 12.04.2 LTS" になっていることを確認。(2013/04/30現在)

最新のパッケージリストに更新
$ sudo apt-get -y update
念のためアップグレード
$ sudo apt-get -y upgrade
"0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded."
そうでしょうね。

他端末から操作しやすいように telnetd と ftpd を入れる。

telnetd をインストール
$ sudo apt-get -y install telnetd
他端末から telnet で接続できることを確認。
$ exit

※以下、基本的に他端末から telnet にて操作。
Windows 端末なら TeraTerm などを使うとコマンド類をコピペができるので便利。
Tera Term (テラターム) プロジェクト日本語トップページ - SourceForge.JP
http://sourceforge.jp/projects/ttssh2/
2つ接続して片側を root にすると、以降の sudo や exit は不要。


■3. Sinanoドライバインストールの記録
cvoc-e121 @ ウィキ - ドライバのインストール
http://www47.atwiki.jp/cvoc-e121/16.html
【UOT-100】24時間ワンセグ野郎 Part05【LOG-J200】
http://toro.2ch.net/test/read.cgi/avi/1298197262/727

このへんを参考に。

$ sudo -s

必要パッケージを入手。
# apt-get -y install build-essential
# apt-get -y install kernel-package libncurses5-dev

カーネルのバージョンを確認。
# uname -r

上記の該当するバージョンのカーネルソースを入手。
# apt-get -y install linux-source-3.2.0

カーネルソースを展開する。
# cd /usr/src
# tar jxvf linux-source-3.2.0.tar.bz2
# exit

Siano Nova B Digital Receiver 用のパッチを入手する。
$ mkdir ~/Downloads
$ wget -P ~/Downloads http://www47.atwiki.jp/cvoc-e121/pub/siano-2.6.35.10.patch

※プロキシが必要な環境にいる場合
"No route to host."と出るので
$ sudo vi +/http_proxy /etc/wgetrc
http_proxy = http://プロキシサーバのfqdnまたはIPアドレス:ポート/
ftp_proxy = http://プロキシサーバのfqdnまたはIPアドレス:ポート/
としてやりなおす。

※"ERROR 403: Forbidden."
と出て wget で取れない場合はブラウザで取りにゆく。
cvoc-e121 @ ウィキ - ドライバのインストール
http://www47.atwiki.jp/cvoc-e121/pages/16.html
http://www47.atwiki.jp/cvoc-e121/pub/siano-2.6.35.10.patch
をダウンロードする。

※中身を見て
$ view ~/Downloads/siano-2.6.35.10.patch
「あなたのIPアドレスは@ウィキのスパムIPアドレスネットワークに該当します。」
だった場合はブラウザから取り直す。

$ w3m http://www47.atwiki.jp/cvoc-e121/pages/16.html
※telnet クライアントの漢字コードを UTF-8 にしておかないと化ける。
真ん中へん「同じもの」リンクを選択、(リンク保存)a、
(ファイル名指定)~/Downloads/siano-2.6.35.10.patch、(終了)q、(確認)y

※プロキシが必要な環境にいる場合
"w3m: Can't load" と出るので
$ vi +/http_proxy ~/.w3m/config
http_proxy http://プロキシサーバのfqdnまたはIPアドレス:ポート/

実はこの中身は
$ file ~/Downloads/siano-2.6.35.10.patch
Downloads/siano-2.6.35.10.patch: gzip compressed data, from Unix
というように、ファイル名と違い gzip かかってるので展開しておく。
$ mv ~/Downloads/siano-2.6.35.10.patch ~/Downloads/siano-2.6.35.10.patch.gz
$ zcat ~/Downloads/siano-2.6.35.10.patch.gz > ~/Downloads/siano-2.6.35.10.patch

※なんか取れない場合は、本家 LinuxTVWiki に取りに行く。 
CVOC-E121 - LinuxTVWiki
http://www.linuxtv.org/wiki/index.php/CVOC-E121

$ w3m http://www.linuxtv.org/wiki/index.php/CVOC-E121
(ページ保存)S、(ファイル名指定)~/Downloads/siano-2.6.35.10.patch.txt、(終了)q、(確認)y
$ cp ~/Downloads/siano-2.6.35.10.patch.txt ~/Downloads/siano-2.6.35.10.patch
patch 部分だけになるよう整形
$ vi ~/Downloads/siano-2.6.35.10.patch

Ubuntu Server 12.04.2 LTS のカーネルのバージョンは 3.2.0 だが、
siano-2.6.35.10.patch はそのまま使えるようだ。

$ sudo -s
# cd /usr/src/linux-source-3.2.0/drivers/media/dvb/siano

※本家 LinuxTVWiki から取った場合、
パッチを cvoc-e121 @ ウィキ の記述のまま
# patch -p1 < ~/Downloads/siano-2.6.35.10.patch (これはやらないほうがいい)
とすると以下のようなエラーが出る。
"Hunk #4 FAILED at 814.
1 out of 4 hunks FAILED -- saving rejects to file smsdvb.c.rej"
これは、patch ファイル作成時、四箇所ほど行末にホワイトスペースが余分に入っているため。
(本家 LinuxTVWiki のパッチがそうなっていて、cvoc-e121 @ ウィキ の方は直してあるものが置いてあるようだ。)

空白を無視する ignore whitespace オプション(-l)を入れてこうするとよい。
# patch -p1 -l < ~/Downloads/siano-2.6.35.10.patch
# exit

上記スレにあった Siano Nice Digital Receiver 対応用のパッチを入手する。

$ w3m http://patchwork.linuxtv.org/patch/9573/
"Download"、"patch"リンクを選択、(リンク保存)a、
(ファイル名指定)~/Downloads/Siano-DVB-USB-device-called-Smart-Plus.patch、(終了)q、(確認)y
$ sudo -s
# cd /usr/src/linux-source-3.2.0/drivers/media/dvb/siano
# patch -l < ~/Downloads/Siano-DVB-USB-device-called-Smart-Plus.patch
# exit

Siano が死んだときのパッチ
$ w3m http://patchwork.linuxtv.org/patch/7892/
"Download"、"patch"リンクを選択、(リンク保存)a、
(ファイル名指定)~/Downloads/15-17-DVB-Siano-drivers---Bug-fix---avoid-rare-dead-locks-causing-the-driver-to-hang-when-module-removed..patch
実はこのままでは
patch: **** unexpected end of file in patch
が出る。該当スレによると、一部切れているので本文より追加。
【UOT-100】24時間ワンセグ野郎 Part05【LOG-J200】
http://toro.2ch.net/test/read.cgi/avi/1298197262/755
$ w3m http://patchwork.linuxtv.org/patch/7892/
(ページ保存)S、(ファイル名指定)~/Downloads/7892.txt、(終了)q、(確認)y
前者に後者の以下の行を末尾に追加。

------- + list_del(&cb->entry); - wait_event(coredev->buffer_mng_waitq, (cb = get_entry(coredev))); + spin_unlock_irqrestore(&coredev->bufferslock, flags); return cb; } ------- あと、6箇所いらん改行が入っているので vi で色を見ながら J コマンドで行連結して直しておく。(見れば分かる .)
$ sudo -s
# cd /usr/src/linux-source-3.2.0/drivers/media/dvb/siano
# patch -l < ~/Downloads/15-17-DVB-Siano-drivers---Bug-fix---avoid-rare-dead-locks-causing-the-driver-to-hang-when-module-removed..patch

ビルドの設定をする。
# cd /usr/src/linux-source-3.2.0
# cp /boot/config-`uname -r` .config
# make oldconfig
# make menuconfig
".config - Linux/i386 3.2.40 Kernel Configuration"という
ncurses で水色の CUI 画面が出てくる。(2013/04/30現在)
以下を確認。(しなくていいみたいだけど)
" Device Drivers --->" 選択して[Enter]
" Multimedia support --->" 選択して[Enter]
"[*] DVB/ATSC adapters --->" 選択して[Enter]
" Siano SMS1xxx based MDTV receiver" 下の
" Siano module components --->" 選択して[Enter]
" USB interface support" になっていることを確認。
[→]キーで"< Exit >"を選択、[Enter]を押す。
(※[Tab]キーで"< Exit >"に飛んで[Space]を押すと"<M>"マークが消えるので注意)
[→]キーで"< Exit >"を選択、[Enter]を押す。
[→]キーで"< Exit >"を選択、[Enter]を押す。
[→]キーで"< Exit >"を選択、[Enter]を押す。
[→]キーで"< Exit >"を選択、[Enter]を押す。
※"Dou you wish to save your new kernel configuration?" と問われたら
設定を触らない限りは問われないはずなので
[Tab]キーで"< No >"を選択、[Enter]を押す。

もしも上記設定が見つからなければ .config ファイルを編集し、
# vi +/SIANO .config
CONFIG_SMS_SIANO_MDTV

CONFIG_SMS_SIANO_MDTV=m
とし、再度 make menuconfig を実行する。

# make-kpkg clean

カーネルのビルドを行う。かなり時間がかかる。
コンソールを開いて放置していて猫がキーボードを跳ねても困るし、
他端末からの telnet で待っていては電気代がもったいないし
途中で接続が切れてしまっても困るので
GNU screen 仮想端末にて実行しつつ、デタッチする。
# screen
一応ログ取っとく。
# script make-kpkg.log
ついでに次回のために経過時間をはかっておく。
revision オプションは数字を入れる必要がある。日付にしておく。
cvoc-e121 @ ウィキ の記述とオプションが違うが、該当スレによれば
【UOT-100】24時間ワンセグ野郎 Part05【LOG-J200】
http://toro.2ch.net/test/read.cgi/avi/1298197262/594
# time make-kpkg --initrd --revision=`date +"%Y%m%d"` kernel_image kernel_headers modules_image
とするようだ。
[Ctrl]+[A]、[Ctrl]+[D]でデタッチ。
# exit
$ exit
かなり待つ。2GHz CPU で3時間半くらい。

$ sudo -s
screen をレジューム。
# screen -r
ビルドの終了を確認。経過時間を確認。
ログ取り終了。
# exit
# cd ..
# dpkg -i linux-image-3.2.37_`date +"%Y%m%d"`_i386.deb
# dpkg -i linux-headers-3.2.37_`date +"%Y%m%d"`_i386.deb
screen を終了。
# exit
# exit

Siano 用のファームウェアを入手する。
該当スレによると、Siano 付属 CD のファームファイルだと動かないらしい。
【UOT-100】24時間ワンセグ野郎 Part05【LOG-J200】
http://toro.2ch.net/test/read.cgi/avi/1298197262/728
$ w3m http://steventoth.net/linux/sms1xxx/
"sms1xxx-hcw-55xxx-isdbt-02.fw" を選択、リンクを選択、(リンク保存)a、
(ファイル名指定)~/Downloads/sms1xxx-hcw-55xxx-isdbt-02.fw
(終了)q、(確認)y
$ cp ~/Downloads/sms1xxx-hcw-55xxx-isdbt-02.fw ~/Downloads/isdbt_nova_12mhz_b0.inp

$ sudo cp ~/Downloads/isdbt_nova_12mhz_b0.inp /lib/firmware
$ sudo reboot

$ sudo -s
# modprobe smsdvb

Siano ワンセグチューナーを何本か挿す。
# dmesg | grep DVB
"DVB: registering new adapter (Siano Nova B Digital Receiver)"や
"DVB: registering new adapter (Siano Nice Digital Receiver)"が
挿した本数分出ていることを確認。
# ls -d /dev/dvb/adapter?
adapter? が挿した本数分出ていることを確認。
追加で挿してみても挿した合計本数分出ていることを確認。
# chmod 666 /dev/dvb/adapter?/*

24時間ワンセグ野郎関連ディレクトリ作成。
# mkdir /usr/local/oneseg24
# chmod 777 /usr/local/oneseg24

起動時にsianoを認識するスクリプトを作成。
# cat > /usr/local/oneseg24/siano.sh
#!/bin/sh
/sbin/modprobe smsdvb
/bin/chmod 666 /dev/dvb/adapter?/*
[Ctrl]+[D]
# chmod 755 /usr/local/oneseg24/siano.sh

起動時にsianoを認識するよう設定。
/etc/rc.local 末尾、"exit 0" の前に入れる。
# vi + /etc/rc.local
/bin/sh /usr/local/oneseg24/siano.sh

# reboot
念のため再起動時に認識されているか確認する。
$ ls -d /dev/dvb/adapter?


■4. ディスクの増設
USB-HDD を接続。
ディスクまるごとワンパーティション

$ sudo -s

デバイス名確認。
# fdisk -l | more

パーティショニング。
# fdisk /dev/sdb
(新規パーティション)n、(プライマリパーティション1)p、1、
(ディスク全体デフォルト値)[Enter]、[Enter]、(書き込んで終了)w

フォーマット。
# mke2fs /dev/sdb1

マウントポイント作成。
# mkdir /mnt/oneseg24

マウント実行確認。
# mount /dev/sdb1 /mnt/oneseg24

マウントオプション確認。
# mount

オプションを fstab に追記。
# vi + /etc/fstab
/dev/sdb1 /mnt/oneseg24 auto noauto 0 2

ts ディレクトリ作成
# mkdir /mnt/oneseg24/ts
# ln -s /mnt/oneseg24/ts /usr/local/oneseg24/ts

起動時にマウントするスクリプトを作成
# cat > /usr/local/oneseg24/mountts.sh
#!/bin/sh
/sbin/e2fsck -p /dev/sdb1
/bin/mount /mnt/oneseg24
[Ctrl]+[D]
# chmod 755 /usr/local/oneseg24/moutts.sh
起動時に HDD をマウントするよう設定。
/etc/rc.local 末尾、"exit 0" の前に入れる。
# vi + /etc/rc.local
/bin/sh /usr/local/oneseg24/mountts.sh

# reboot
念のため再起動時にマウントされているか確認する。
$ mount


■5. 録画ツールのインストール、Siano動作確認の記録

dvbstream-0.5.tar.gz のダウンロード。
http://sourceforge.net/projects/dvbtools/
http://downloads.sourceforge.net/project/dvbtools/dvbstream/dvbstream-0.5/dvbstream-0.5.tar.gz

$ wget -P ~/Downloads http://downloads.sourceforge.net/project/dvbtools/dvbstream/dvbstream-0.5/dvbstream-0.5.tar.gz

OneSeg24forLinux_1.0.0.2.tar.gz のダウンロード。
これには dvbstream 用複数起動修正パッチが含まれている。
パッチのおかげで最大8本の同時録画が可能となる。
http://code.google.com/p/oneseg24/
http://oneseg24.googlecode.com/files/OneSeg24forLinux_1.0.0.2.tar.gz

$ wget -P ~/Downloads http://oneseg24.googlecode.com/files/OneSeg24forLinux_1.0.0.2.tar.gz

作業用ディレクトリに移り、展開
$ mkdir ~/make
$ cd ~/make
$ tar xvzf ~/Downloads/dvbstream-0.5.tar.gz
$ tar xvzf ~/Downloads/OneSeg24forLinux_1.0.0.2.tar.gz

$ cd dvbstream-0.5
dvbstream 用複数起動修正パッチを当てる。
$ patch < ~/make/OneSeg24forLinux_1.0.0.2/driver/dvbstream.patch
コンパイル。
$ make

$ sudo -s
make install が効かないので cp する。
# cp dvbstream /usr/local/bin
# chmod u+s /usr/local/bin/dvbstream
# exit

dvbstream はチャンネルの選局を周波数で行います。
周波数の計算式は以下の通りです。
ch * 6000 + 395143 = 周波数

ch は以下ページで調べることができます。
UHF 地上波デジタル放送周波数
http://www.max.hi-ho.ne.jp/mishima/mk/dezitaru/channel.html

兵庫県の一例 ch22 NHK総合・神戸 527143 ch13 NHKEテレ1・大阪 473143 ch26 サンテレビ 551143 ch16 MBS毎日放送 491143 ch15 ABCテレビ 485143 ch18 テレビ大阪 503143 ch17 関西テレビ 497143 ch14 よみうりテレビ 479143 計算が面倒なときは
$ for ch in 22 13 26 16 15 18 17 14; do echo `expr $ch \* 6000 + 395143`; done > ~/make/freq.txt
とかやって freq.txt を編集すればいいんじゃなイカ?

$ cd ~/make
キャプチャテスト用スクリプトを作成。
$ cat > dvbtest.sh
#!/bin/sh
/usr/local/bin/dvbstream -c 0 -f `/usr/bin/expr 22 \* 6000 + 395143` 8192 -o > test0.ts &
/bin/sleep 3
/usr/local/bin/dvbstream -c 1 -f `/usr/bin/expr 13 \* 6000 + 395143` 8192 -o > test1.ts &
/bin/sleep 3
/usr/local/bin/dvbstream -c 2 -f `/usr/bin/expr 26 \* 6000 + 395143` 8192 -o > test2.ts &
/bin/sleep 3
/usr/local/bin/dvbstream -c 3 -f `/usr/bin/expr 16 \* 6000 + 395143` 8192 -o > test3.ts &
/bin/sleep 3
/usr/local/bin/dvbstream -c 4 -f `/usr/bin/expr 15 \* 6000 + 395143` 8192 -o > test4.ts &
/bin/sleep 3
/usr/local/bin/dvbstream -c 5 -f `/usr/bin/expr 18 \* 6000 + 395143` 8192 -o > test5.ts &
/bin/sleep 3
/usr/local/bin/dvbstream -c 6 -f `/usr/bin/expr 17 \* 6000 + 395143` 8192 -o > test6.ts &
/bin/sleep 3
/usr/local/bin/dvbstream -c 7 -f `/usr/bin/expr 14 \* 6000 + 395143` 8192 -o > test7.ts &
[Ctrl]+[D]
$ chmod 755 dvbtest.sh
テスト実行。
$ sh dvbtest.sh
キャプチャされているか確認。
$ ls -l test?.ts
確認できたらテスト停止。
$ killall dvbstream

できた test?.ts を ftp などで Windows機にコピーして再生できるか確認する。
マニュアルがないと何もできないので何で再生すればよいか分からない場合
→ CCCP 付属の MPC-HC とかどうでしょう。
The Combined Community Codec Pack 付属の Media Player Classic Home Cinema で再生できるか確認する。
CCCP - Combined Community Codec Pack
http://www.cccp-project.net/
略称が昔のソビエト連邦の略称 "CCCP" と同じで
シャレで「鎌と槌」のロゴが入っているが、
別に政治的な関係はないので心配ない。たぶん。知らん。

万一、MPC-HC で再生できなくても、
以下 URL の TSConverter で MP4 に変換できる場合がある。
UOT-100/LOG-J200 用予約録画ソフト -24時間ワンセグ野郎派生ツール
http://theremin.hostoi.com/oneseg.htm

電波状況が悪いと ts のファイルサイズが 0 のままだったりする。
電波状況がよくないと ts ができても再生できない場合がある。
電波状況がよくないと MP4 に変換できない場合がある。
電波状況については、dvbstream の stderr 出力から "Signal strength" や "SNR" を見る
アンテナ結線をトライアンドエラーして苦労するよりは、
金にモノを言わせてアンテナブースター買ってやるとあっさり改善する。
Siano にはミニヒューズホルダーで取り付けると外れにくい。
5CFB〜ミセットヒューズホルダ


■6. ストリームサーバ perlRTMP の導入

~/make/OneSeg24forLinux_1.0.0.2/oneseg24/readme.txt を読むと、
perlRTMP がいるようだ。

ダウンロード
$ wget -P ~/Downloads http://perlrtmp.googlecode.com/files/perlrtmp_1.0.1.1.tar.gz
ソース展開
$ cd ~/make
$ tar xvzf ~/Downloads/perlrtmp_1.0.1.1.tar.gz
$ cd perlrtmp_1.0.1.1
$ view readme.txt

~/make/perlrtmp_1.0.1.1/readme.txt を見ると、
Flash プレーヤーが必要であり、JW FLV MEDIA PLAYER を推奨している。

■6.1 Web サイト埋め込み式動画再生プレーヤ JW FLV MEDIA PLAYER の導入
(結果を言うと入れなくてもよいのだが、perlRTMP のマニュアルではテストに使っているので入れておく)
~/make/perlrtmp_1.0.1.1/readme.txt で言及しているバージョンは JW FLV MEDIA PLAYER 4.2 だが、
現在は JW Player と名を変えかなり変わっている。
マニュアルと異なっていると困るので、"JW FLV MEDIA PLAYER 4.2" を検索して探す。

ダウンロード
$ wget -P ~/Downloads http://download3.fyxm.net/14/14532/mediaplayer.zip
展開
$ sudo apt-get -y install unzip
$ unzip -d ~/make/mediaplayer ~/Downloads/mediaplayer.zip
※ちなみにこれは JW FLV MEDIA PLAYER 4.4

■6.2 Web サーバの設定
~/make/OneSeg24forLinux_1.0.0.2/readme.txt
~/make/OneSeg24forLinux_1.0.0.2/oneseg24/readme.txt
~/make/perlrtmp_1.0.1.1/readme.txt
によれば、Web サーバの CGI 環境も必要なようなので設定する。
(~/make/OneSeg24forLinux_1.0.0.2/oneseg24/readme.txt には public_html とあるが、
別にユーザディレクトリの ~/public_html に置く必要はない。)
テストページとして JW FLV MEDIA PLAYER の readme.html を使う。

・静的 html の公開。
$ sudo -s
apache2 のインストール。
# apt-get -y install apache2
テストページのコピー。
# cp ~/make/mediaplayer/* /var/www

他端末から
http://192.168.254.50/readme.html
を開いて"Player Example"が再生できていれば
Web サーバの設定はできている。

CGI 設定。
# vi +/cgi-script /etc/apache2/mods-available/mime.conf
cgi-script のコメントを外し、拡張子 .pl を追加する。
#AddHandler cgi-script .cgi

AddHandler cgi-script .cgi .pl

# vi /etc/apache2/sites-available/default
<Directory /var/www/>ディレクティブを編集
その1.Indexes を削除、ExecCGI を追加。
Options Indexes FollowSymLinks MultiViews

Options FollowSymLinks MultiViews ExecCGI

その2.AllowOverride を All に。
AllowOverride None

AllowOverride All

変更を反映。
# /etc/init.d/apache2 restart

CGIテストページを作成。 # cat > /var/www/first.pl #!/usr/bin/perl print "Content-type: text/html\n\n"; print "Hello, World."; [Ctrl]+[D] # chmod 755 /var/www/first.pl 他端末から
http://192.168.254.50/first.pl
を開いて"Hello, World."が出れば CGI 設定はできている。

■7. ストリームサーバ(perlRTMP)のインストール
$ cd ~/make/perlrtmp_1.0.1.1
$ view readme.txt

~/make/perlrtmp_1.0.1.1/readme.txt を参考に。

追加インストールが必要なライブラリを導入。
# apt-get -y install libdigest-SHA-perl

テストページの作成。上記録画テストしたファイルを使う。 # cp ~/make/test0.ts /var/www/test.ts # chmod 644 /var/www/test.ts # cat > /var/www/test.html <html> <body> <script type='text/javascript' src='swfobject.js'></script> <div id='preview'>This div will be replaced</div> <script type='text/javascript'> var s1 = new SWFObject('player.swf','player','320','200','9','#ffffff'); s1.addParam('allowfullscreen','true'); s1.addParam('allowscriptaccess','always'); s1.addParam('wmode','opaque'); s1.addParam('flashvars','streamer=rtmp://192.168.xxx.xxx&file=test.ts.flv'); s1.write('preview'); </script> </body> </html> [Ctrl]+[D] # vi +/xxx /var/www/test.html 以下を編集 streamer=rtmp://192.168.xxx.xxx ↓ streamer=rtmp://192.168.254.50 # exit ストリームサーバのテスト。
$ cd ~/make/perlrtmp_1.0.1.1
$ perl server.pl /var/www &

他端末から
http://192.168.254.50/test.html
を開く。録画テストした動画が再生できることを確認する。
(上記 server.pl がバックグラウンドで動いている間だけ)
再生できないとき→/var/www/test.ts が o+r になっているか?

確認できたら止める。
$ killall perl

運用ディレクトリにコピー。
$ sudo -s
# cd ~/make
# cp -r ./perlrtmp_1.0.1.1 /usr/local/oneseg24
# exit


■8. OneSeg24forLinux の導入
$ cd ~/make/OneSeg24forLinux_1.0.0.2
$ cd oneseg24
$ view readme.txt

~/make/OneSeg24forLinux_1.0.0.2/oneseg24/readme.txt を参考に。

■8.1 ライブラリのインストール
$ sudo -s
# apt-get -y install sqlite3
# apt-get -y install libdbi-perl
# apt-get -y install libdbd-sqlite3-perl
# exit

$ cd ~/make/OneSeg24forLinux_1.0.0.2/oneseg24
チャンネル部分を編集。
$ vi epg.sql

以下に兵庫県の例を挙げる。
insert into da_channel (dc_ch, dc_name) values (22, 'NHK総合・神戸');
insert into da_channel (dc_ch, dc_name) values (13, 'NHKEテレ1・大阪');
insert into da_channel (dc_ch, dc_name) values (26, 'サンテレビ');
insert into da_channel (dc_ch, dc_name) values (16, 'MBS毎日放送');
insert into da_channel (dc_ch, dc_name) values (15, 'ABCテレビ');
insert into da_channel (dc_ch, dc_name) values (18, 'テレビ大阪');
insert into da_channel (dc_ch, dc_name) values (17, '関西テレビ');
insert into da_channel (dc_ch, dc_name) values (14, 'よみうりテレビ ');

記述順はテレビのリモコンや新聞のテレビ欄にあわせればいいんじゃなイカ?
チャンネルの番号は前述のページを参照。
放送局名は iEPG 規格を作った SONY が運営している以下サイトから
コピペすれば確実かも。
テレビ番組表【Gガイド.テレビ王国】
http://tv.so-net.ne.jp/

データベース作成
OneSeg24forLinux のプログラムがファイルを作成できるようディレクトリに権限を設定。
$ sudo chmod 777 /usr/local/oneseg24 (777でいいか自信がない)
データベース作成
$ sqlite3 /usr/local/oneseg24/epg.db '.read epg.sql'

■8.2 録画スクリプトの起動
epg.pl 修正
$ vi +/epg.db epg.pl
my $dsn = 'DBI:SQLite:dbname=epg.db';

my $dsn = 'DBI:SQLite:dbname=/usr/local/oneseg24/epg.db';

ts.pl 修正
dvbstream のパス、rec.pl epg.pl のパス。
変更ないのでこのままでOK。

作業ディレクトリから運用ディレクトリへコピー
$ sudo -s
# cd ~/make
# cp -r ./OneSeg24forLinux_1.0.0.2 /usr/local/oneseg24

録画スクリプト作成
# cat > /usr/local/oneseg24/oneseg24.sh
#!/bin/sh
cd /usr/local/oneseg24/OneSeg24forLinux_1.0.0.2/oneseg24
/usr/bin/perl ts.pl -c 0 -f `/usr/bin/expr 22 \* 6000 + 395143` -h 22 -d /usr/local/oneseg24/ts >/usr/local/oneseg24/log/dvbstream0.log 2>&1 &
/bin/sleep 3
/usr/bin/perl ts.pl -c 1 -f `/usr/bin/expr 13 \* 6000 + 395143` -h 13 -d /usr/local/oneseg24/ts >/usr/local/oneseg24/log/dvbstream1.log 2>&1 &
/bin/sleep 3
/usr/bin/perl ts.pl -c 2 -f `/usr/bin/expr 26 \* 6000 + 395143` -h 26 -d /usr/local/oneseg24/ts >/usr/local/oneseg24/log/dvbstream2.log 2>&1 &
/bin/sleep 3
/usr/bin/perl ts.pl -c 3 -f `/usr/bin/expr 16 \* 6000 + 395143` -h 16 -d /usr/local/oneseg24/ts >/usr/local/oneseg24/log/dvbstream3.log 2>&1 &
/bin/sleep 3
/usr/bin/perl ts.pl -c 4 -f `/usr/bin/expr 15 \* 6000 + 395143` -h 15 -d /usr/local/oneseg24/ts >/usr/local/oneseg24/log/dvbstream4.log 2>&1 &
/bin/sleep 3
/usr/bin/perl ts.pl -c 5 -f `/usr/bin/expr 18 \* 6000 + 395143` -h 18 -d /usr/local/oneseg24/ts >/usr/local/oneseg24/log/dvbstream5.log 2>&1 &
/bin/sleep 3
/usr/bin/perl ts.pl -c 6 -f `/usr/bin/expr 17 \* 6000 + 395143` -h 17 -d /usr/local/oneseg24/ts >/usr/local/oneseg24/log/dvbstream6.log 2>&1 &
/bin/sleep 3
/usr/bin/perl ts.pl -c 7 -f `/usr/bin/expr 14 \* 6000 + 395143` -h 14 -d /usr/local/oneseg24/ts >/usr/local/oneseg24/log/dvbstream7.log 2>&1 &
[Ctrl]+[D]
# chmod 755 /usr/local/oneseg24/oneseg24.sh
ログ格納ディレクトリ作成
# mkdir /usr/local/oneseg24/log
録画スクリプト実行。
# /bin/sh /usr/local/oneseg24/oneseg24.sh
# exit

番組表 CGI の設定
$ cd ~/make/OneSeg24forLinux_1.0.0.2/public_html

epg.cgi、setup.cgi 修正
$ vi +/oneseg24 epg.cgi setup.cgi
my $dsn = 'DBI:SQLite:dbname=../oneseg24/epg.db';

my $dsn = 'DBI:SQLite:dbname=/usr/local/oneseg24/epg.db';

player.cgi 修正
$ vi +/xxx player.cgi
以下を修正
my $streamer = 'rtmp://192.168.xxx.xxx';

my $streamer = 'rtmp://192.168.254.50';

番組表 CGI のコピー
$ sudo -s
# cd ~/make/OneSeg24forLinux_1.0.0.2/public_html
# cp -r ./* /var/www
# exit

・チャンネル設定(一度だけ)
CGI からチャンネル設定ができるように権限を設定
$ chmod 666 /usr/local/oneseg24/epg.db
これを忘れると"500 Internal Server Error"となる。

他端末から
http://192.168.254.50/setup.cgi
ストリームごとの放送日時と番組名が表示されますので、
プルダウンを選択して放送局と対応させてください。
最後に「登録」ボタンをクリックして設定を保存します。

・ストリームサーバの起動スクリプト作成
$ sudo -s
# cat > /usr/local/oneseg24/perlrtmp.sh
#!/bin/sh
cd /usr/local/oneseg24/perlrtmp_1.0.1.1
/usr/bin/perl server.pl /usr/local/oneseg24/ts >/usr/local/oneseg24/log/perlrtmp.log 2>&1 &
[Ctrl]+[D]
# chmod 755 /usr/local/oneseg24/perlrtmp.sh
ストリームサーバの起動
# /bin/sh /usr/local/oneseg24/perlrtmp.sh

・視聴
他端末から
http://192.168.254.50/epg.cgi
epg.cgi
番組表が表示されますので、番組名をクリックするとプレーヤー画面に移動します。
player.cgi

各種起動スクリプトをシステム起動時に自動実行させる設定。
# vi + /etc/rc.local
exit 0 の前に追加。
/bin/sh /usr/local/oneseg24/siano.sh
/bin/sh /usr/local/oneseg24/mountts.sh
/bin/sh /usr/local/oneseg24/oneseg24.sh
/bin/sh /usr/local/oneseg24/perlrtmp.sh

# reboot
再起動しても番組表ページが表示され(Webサーバ起動、epg.cgi動作)、
最新の番組が録画されており(siano.sh動作、oneseg24.sh動作)、
プレーヤー画面が再生される(perlrtmp.sh動作)ことを確認する。


■9. ディスクフル防止

ディスクの空き容量を把握しておく。
$ df -h
8チャンネル一日で 34GB 程度消費するので、空き容量から計算して保持する日数を決める。
例えば、一ヶ月ていど保持して古いものから自動削除させるには 31日として

削除スクリプト作成
$ sudo -s
# cat > /usr/local/oneseg24/rmts.sh
#!/bin/sh
/usr/bin/find /mnt/oneseg24/ts -mindepth 1 -maxdepth 1 -type d -mtime +24 -exec rm -r {} \;
[Ctrl]+[D]
# chmod 755 /usr/local/oneseg24/rmts.sh
※find の引数のディレクトリは実体 /mnt/oneseg24/ts にすること。
シンボリックリンクの /usr/local/oneseg24/ts にすると削除されない。

タイマー設定
# crontab -e
10 0 * * * /bin/sh /usr/local/oneseg24/rmts.sh

毎日深夜0時10分に実行させている。
ディレクトリごと消したいので "-type d"、"rm -r" している。

ちなみにわたしのところでは 1TB で運用していて 26 日分でいっぱいになり、
rmts.sh の find 引数は
-mtime +24
としている。
後述の define.pl では前日の深夜番組を参照することもあるので一日たして
$start_date = 27;
としている。


■10. (iPhone 向けストリーミング) OneSeg24 for iPhone のインストール
ダウンロード
$ wget -P ~/Downloads http://oneseg24.googlecode.com/files/OneSeg24foriPhone.tar.gz
展開
$ cd ~/make
$ tar xvzf ~/Downloads/OneSeg24foriPhone.tar.gz
$ cd OneSeg24foriPhone
$ view readme.txt

~/make/OneSeg24foriPhone/readme.txt を参考に。

2ファイル、保存ディレクトリパス設定変更
$ vi +/ts m3u8.cgi ts.cgi
my $dir = '/ts';

my $dir = '/usr/local/oneseg24/ts';

OneSeg24 for Linux の番組表をコピーして iPhone 用に変更
$ cp ~/make/OneSeg24forLinux_1.0.0.2/public_html/epg.cgi ./iPhone.cgi
$ vi +/player.cgi iPhone.cgi
player.cgi

m3u8.cgi

作業用ディレクトリから公開ディレクトリにコピー
$ sudo cp -r ./lib ./*.cgi /var/www

iPhone から
http://192.168.254.50/iPhone.cgi
で PC 同様の番組表が見れて、録画が再生できることを確認。
OneSeg24foriPhone

OneSeg24foriPhone


■11. 「player.pl差し替え版sqlite3対応版」による、見やすく検索できる番組表と番組のMP4変換ダウンロード

player.pl

※ここからはドキュメントが付属していないので導入はたいへんになる。

Rubber Duckie: player.pl差し替え版sqlite3対応版一応公開
http://r-duck.blogspot.com/2009/09/playerplsqlite3.html

リンクページは
Rubber Duckie
http://rduck.web.fc2.com/

player.pl差し替え版sqlite3対応版
http://rduck.web.fc2.com/player-sqlite090926.tar.bz

■11.1 player.pl差し替え版sqlite3対応版の設定

$ wget -P ~/Downloads http://rduck.web.fc2.com/player-sqlite090926.tar.bz
$ cd ~/make
$ tar xvf ~/Downloads/player-sqlite090926.tar.bz
$ cd player-sqlite

~/make/player-sqlite/define.pl を参考に。

$ vi define.pl

define.pl を読むと、mp4 を作る場合、以下が必要とある。
TSConverter、MP4Box、FFMpeg、neroAacEnc、neroAacDec
→ あとで余裕があったらやることにするる。

$BaseDir = '/usr/local/www/apache22';

$BaseDir = '/var/www';

@iepg_chan = (
"22:NHK総合・神戸",
"13:NHKEテレ1・大阪",
"26:サンテレビ",
"16:MBS毎日放送",
"15:ABCテレビ",
"18:テレビ大阪",
"17:関西テレビ",
"14:よみうりテレビ"
);

$RwIPOD = '_ipod';

#$RwIPOD = '_ipod';

$DBNAME = "/media/disk/oneseg24/epg.db";

$DBNAME = "/usr/local/oneseg24/epg.db";

define.pl の記述どおりの以下フォルダを作成する。
$log_folder = $BaseDir . '/log';
$CacheDir = $BaseDir . '/cache';
$ShotDir = $BaseDir . '/data/simg';
$mp4_folder = $BaseDir . '/data/mp4';

$ sudo -s
# cd /var/www
# mkdir -p log cache data/simg data/mp4
# chmod -R 777 log cache data
# exit

■11.2 player45.swf 導入

$ vi player.pl

player.pl を眺めていると、player45.swf が必要と分かった。
このバージョンのダウンロードページが見つからなかったので、
"player45.swf filetype:swf" で検索して
インストールしているページから適当に入手。
(いろいろ問題ありそうなので、ここには入手先を書かない。自分で探してください .)

(2013/07/02時点 Google "player45.swf filetype:swf" 検索上位十件)
サーモンプレイヤー:字幕ボタン(後述)出ない。
Diaporama:レゲエっぽい。違う。
レスリング:字幕ボタン出る。
flashmp3:音楽プレーヤっぽい。違う。
Umcmedia:字幕ボタン出る。
hitparad:字幕ボタン出る。
ifactorystream:字幕ボタン出る。
DJ Tronic:音楽プレーヤっぽい。違う。
dropboxusercontent:字幕ボタン出る。
123:音楽プレーヤっぽい。違う。

$ wget -P ~/Downloads http://どこか/swf/player45.swf
$ sudo cp ~/Downloads/player45.swf /var/www

■11.3 segwrapperの導入

$ cd ~/make/player-sqlite
$ vi download.pl encode.pl player.pl
segwrapper の場所として perlrtmp のライブラリを定義する場所がある。
# segwrapperの場所
use lib '/opt/perlrtmp/lib';

segwrapper 単体をインストールすることで問題なく動く。

segwrapper.zip - perlrtmp - 『24時間ワンセグ野郎』同梱 segwrapper.pm 改良版 - perl RTMP Server for MPEG2-TS/MP4(H264/AAC) Streaming - Google Project Hosting
http://code.google.com/p/perlrtmp/downloads/detail?name=segwrapper.zip&can=2&q=
http://perlrtmp.googlecode.com/files/segwrapper.zip

$ wget -P ~/Downloads http://perlrtmp.googlecode.com/files/segwrapper.zip
$ cd ~/make
$ unzip -d segwrapper ~/Downloads/segwrapper.zip
$ cd segwrapper
$ mv segwrapper.pm segwrapper.pm.dos
$ sudo apt-get -y install nkf
$ nkf -w -Lu segwrapper.pm.dos > segwrapper.pm

ここでこのまま使うと、
http://192.168.254.50/player.pl
500 Internal Server Error
$ sudo view /var/log/httpd/error_log
Can't locate Time/JulianDay.pm in @INC
というように出る。

以下ページより、segwrapper が JulianDay.pm を使わないようにするパッチを入手。
Rubber Duckie: segwrapper.pm の脱 inverse_julian_day 化
http://r-duck.blogspot.com/2009/09/segwrapperpm-inversejulianday.html

$ w3m -M http://r-duck.blogspot.com/2009/09/segwrapperpm-inversejulianday.html
(ページ保存)S、(ファイル名指定)~/Downloads/segwrapper.pm.patch.txt、(終了)q、(確認)y

$ cp ~/Downloads/segwrapper.pm.patch.txt ~/Downloads/segwrapper.pm.patch
$ vi ~/Downloads/segwrapper.pm.patch
$ patch -l < segwrapper.pm.patch (うまくいかない)
上記ページのコピペではタブ→スペース変換がうまくいってないみたいで
うまくパッチがあたらないので手パッチする。
(たいした量じゃないので見れば分かる .)
$ vi segwrapper.pm.patch segwrapper.pm

$ vi segwrapper.pm
my $TSFOLDER = "D:\\TS";

my $TSFOLDER = "/usr/local/oneseg24/ts";

$ cd ~/make
$ sudo cp -r ./segwrapper /usr/local/oneseg24

$ cd ~/make/player-sqlite
$ vi player.pl encode.pl download.pl
3ファイル、segwrapper の場所を定義
use lib '/opt/perlrtmp/lib';

use lib '/usr/local/oneseg24/segwrapper';

$ sudo cp -r ./* /var/www

■11.4 player.pl 動作確認

http://192.168.254.50/player.pl
500 Internal Server Error
$ view /var/log/apache2/error.log
Can't locate LWP/UserAgent.pm in @INC
と出る場合は LWP/UserAgent を含むライブラリを導入。
$ sudo apt-get -y install libwww-perl

http://192.168.254.50/player.pl
player.pl
ページ上方の「・時間別番組表から直接選択して抽出」カレンダー表示が動作することを確認。
player.pl
番組名をクリックして別ウィンドウで番組が再生できることを確認。
player.pl
ページ下方の「・時間を指定して番組抽出」が動作することを確認。
ページ下方の「・番組表から検索して抽出」の「キーワードで検索」が動作することを確認。
ページ下方の「・番組表から検索して抽出」の「ジャンルを抽出」が動作することを確認。

番組再生ウィンドウ右下の"・TS download"をクリックすると、
ダウンロードは一瞬で終わり
[WARN] No TS File
という内容の18バイトのファイルができてしまう。
以下ページを参考にして回避する。

数学ハカセの憂鬱: lenny で24時間ワンセグ野郎(その5)
http://blog.cane.jp/article/28857187.html
segwrapper.pm を編集。
$ cd ~/make/segwrapper
$ vi segwrapper.pm
return ($Base."\\".$datstr."\\".$str."_Ch".($Ch+0));

return ($Base."/".$datstr."/".$str."_Ch".($Ch+0));

$ cd ~/make
$ sudo cp -r ./segwrapper /usr/local/oneseg24

番組再生ウィンドウ右下の"TS download"をクリックし、ダウンロード可能か確認する。

これで番組視聴画面から ts ファイルのダウンロードが可能となった。

現在のところ、
番組再生ウィンドウ左下の「・PC用MP4作成」をクリックすると
リロードされたうえに「■MP4作成に失敗しました」と出る。

以下、MP4変換環境構築はけっこう面倒なので、
Windows で視聴しているなら PC 用 MP4 はその端末で
ダウンロードした ts ファイルを TSConverter にかければよいでしょう。

■11.5 OneSeg24 for iPhone 対応

player.pl 中の二つ目の「MP4を作成」行に、以下行を追加 $ vi +/MP4を作成 player.pl print "・<a href='m3u8.cgi?$request'>iPhone再生</a>"; $ sudo cp player.pl /var/www iPhone から
http://192.168.254.50/player.pl で
player.pl on iPhone
PC 同様の番組表が見れて、

player.pl on iPhone
再生ウィンドウの「iPhone再生」を選択すると

m3u8.cgi on iPhone
録画が再生できることを確認。
■11.6 PC用MP4作成対応
端末が Windows じゃないから MP4 変換してダウンロードしたいという人、
Windows だけど MP4 変換できたら嬉しいよねという人に。

・TSConverter、MP4Box 導入
以下ページを参考に。
注意:URL変更
Linuxでワンセグ録画 その4 (TSストリームをMP4ファイルに変換) | ぷちのいず
http://petit-noise.net/blog/linux%e3%81%a7%e3%83%af%e3%83%b3%e3%82%bb%e3%82%b0%e9%8c%b2%e7%94%bb-%e3%81%9d%e3%81%ae4-ts%e3%82%b9%e3%83%88%e3%83%aa%e3%83%bc%e3%83%a0%e3%82%92mp4%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ab%e5%a4/

$ wget -P ~/Downloads http://theremin.hostoi.com/file/TSConverter_9_01.zip
$ wget -P ~/Downloads http://rduck.web.fc2.com/TSConverter_4_26_patch.tar.bz2
$ wget -P ~/Downloads http://petit-noise.net/system/files/TSConverter-linux.patch
注意:URL変更
$ wget -P ~/Downloads http://petit-noise.net/wp-content/uploads/TSConverter-linux.patch

$ cd ~/make
$ unzip ~/Downloads/TSConverter_9_01.zip
$ cd TSConverter
$ unzip Source.zip
$ tar xvf ~/Downloads/TSConverter_4_26_patch.tar.bz2
$ cd Source
$ nkf -e -Lu TSConverter.cpp > TSConverter.c
$ mv TSConverter.h TSConverter.h.dos
$ nkf -Lu TSConverter.h.dos > TSConverter.h
$ patch -p1 < ../TSConverter090426.patch
$ patch -p0 < ~/Downloads/TSConverter-linux.patch
$ gcc -o TSConverter TSConverter.c
$ sudo cp TSConverter /usr/local/bin

・TSConverterが必要としている MP4Box を導入
$ sudo apt-get -y install subversion
$ cd ~/make
$ svn co https://gpac.svn.sourceforge.net/svnroot/gpac/trunk/gpac
Checked out revision ????.

※プロキシ環境にいる場合は
could not connect to server
$ vi +/^[global ~/.subversion/servers
[global]
http-proxy-host = プロキシのホスト名またはIPアドレス
http-proxy-port = プロキシのポート
としてやりなおす。

$ cd gpac
$ ./configure --static-mp4box
error: zlib not found on system or in local libs
と出るので zlib ライブラリをインストールしてやりなおし。
$ sudo apt-get -y install zlib1g-dev
$ ./configure --static-mp4box
$ make -j5
コンパイルエラーが出る場合がある。
しょっちゅう更新されているので、まめにチェックしておくとよい。
うちでは何度か機器を入れ替えてた際に記録したのだが、
svn co した際に出るリビジョンが
Checked out revision 4127.(2012/08/04時点)→コンパイルOK
Checked out revision 4280.(2013/01/12時点)→コンパイルOK
Checked out revision 4335.(2013/02/27時点)→コンパイルOK
Checked out revision 4525.(2013/05/01時点)→コンパイルエラー
Checked out revision 4614.(2013/07/02時点)→コンパイルエラー
だった。

2013/02/27 に構築した revision 4335 では問題なかったので、それを指定して使う。
$ cd ~/make
$ rm -rf ./gpac
$ svn co -r 4335 https://gpac.svn.sourceforge.net/svnroot/gpac/trunk/gpac
$ cd gpac
$ ./configure --static-mp4box
$ make -j5
$ sudo cp bin/gcc/MP4Box /usr/local/bin

・TSConverterが必要としている DtsEdit を導入
$ cd ~/make
$ svn checkout http://svn.sourceforge.jp/svnroot/rec10/tstools/DtsEdit
ちなみに
Checked out revision 942.(2012/08/04時点)→コンパイルOK
Checked out revision 953.(2013/01/12時点)→コンパイルOK
Checked out revision 953.(2013/02/27時点)→コンパイルOK
Checked out revision 954.(2013/07/02時点)→コンパイルOK
だった。
$ wget -P ~/Downloads http://rduck.web.fc2.com/DtsEdit_20081009_patch.tar.bz2
$ cd DtsEdit
$ mkdir patch
$ cd patch
$ tar xvf ~/Downloads/DtsEdit_20081009_patch.tar.bz2
$ cd ..
$ for file in src/{*.cpp,*.h}; do echo $file; nkf -wd $file > $file.tmp; mv $file.tmp $file; done
$ cd src
$ nkf -w ../patch/DtsEdit.patch | patch -p1
$ rm stdint.h
(これを忘れると大量のエラーが出る)
$ vi +/gpac Makefile
$(CPP) -o $@ $(OBJS) -lgpac -L/usr/local/lib

$(CPP) -o $@ $(OBJS) /home/oneseg24/make/gpac/bin/gcc/libgpac_static.a -lz -L/usr/local/lib

$ make
$ sudo cp DtsEdit /usr/local/bin

・TSConverter、MP4Box の動作確認。
$ cd ~/make/player-sqlite
$ grep TSConverter *.pl
ここに出てくる TSConverter を呼んでいる処理が動くか確認する。
$ cd ~/make
$ TSConverter test0.ts
test0.mp4 が生成されているか確認。

$ cd ~/make/player-sqlite
$ grep MP4Box *.pl
ここに出てくる MP4Box を呼んでいる処理が動くか確認する。
$ cd ~/make
$ TSConverter test0.ts
$ TSConverter test1.ts
$ MP4Box -quiet -ipod -add test0.mp4 test1.mp4
エラーが出ていないことを確認。

・設定
$ cd ~/make/player-sqlite
$ vi define.pl
$TSConverter = '/usr/local/bin/TSConverter';
$MP4Box = '/usr/local/bin/MP4Box';
DtsEditは少し離れているので注意。
$startCmd = 'export DTSEDIT=/usr/local/bin/DtsEdit; ';
TSConverter のオプション。
$TSCO{22} = '-r -l'; # NHK総合・神戸
$TSCO{13} = '-r -l'; # NHKEテレ1・大阪
$TSCO{26} = '-r -l'; # サンテレビ
$TSCO{16} = '-r -l'; # MBS毎日放送
$TSCO{15} = '-r -l'; # ABCテレビ
$TSCO{18} = '-r -l'; # テレビ大阪
$TSCO{17} = '-r -l'; # 関西テレビ
$TSCO{14} = '-r -l'; # よみうりテレビ

$ sudo cp define.pl /var/www

番組再生ウィンドウ右下の「・PC用MP4作成」をクリックし、しばらく待つ。
自動的にリロードされリンクが「・PC用MP4 (???MB)」となり
そこからダウンロード可能か確認する。MP4 プレイヤーで再生が可能か確認する。


■12. 字幕対応

Rubber Duckie: アクセシビリティ、または24時間ワンセグ野郎字幕対応
http://r-duck.blogspot.com/2009/09/24.html
http://rduck.web.fc2.com/caption091002.tar.bz2

ぱぱネット(仮)様製作によるdumpeitにより、
TS ファイルから SUB ファイルを作る必要がある。
ということで、以下が紹介されている。

ぱぱネット(仮)(2008-12-24)
http://linux.papa.to/?date=20081224#p07
http://linux.papa.to/image/dumpeit_win32_20090106.zip

■12.1 字幕データ抽出 dumpeit 導入
$ wget -P ~/Downloads http://linux.papa.to/image/dumpeit_win32_20090106.zip
$ cd ~/make
$ unzip ~/Downloads/dumpeit_win32_20090106.zip
$ cd dumpeit
$ make
$ sudo cp dumpeit /usr/local/bin
$ cd /usr/local/oneseg24/ts
$ dumpeit *

■12.2 字幕表示 caption.pl 導入
$ wget -P ~/Downloads http://rduck.web.fc2.com/caption091002.tar.bz2
$ cd ~/make
$ mkdir caption091002
$ cd caption091002
$ tar xvf ~/Downloads/caption091002.tar.bz2
$ vi caption.091002.pl
my $TSFOLDER='/media/disk/one24';

my $TSFOLDER='/usr/local/oneseg24/ts';
$ cp caption.091002.pl caption.pl
$ sudo cp caption.pl unk.txt /var/www

$ cd ~/make/player-sqlite/
$ vi player.pl
request.flv を呼んでいる4箇所に、オプションとして以下を追記。
fullscreen=true

fullscreen=true&plugins=captions-1&captions.file=caption.pl?file=$request.xml
$ sudo cp player.pl /var/www

番組表から字幕番組を選んで再生し、
シークバー右に、これまでなかった字幕ボタン[CC](Closed Caption)が表示されているか確認。
[CC]が濃い表示(字幕オン状態)にて字幕が表示されるか確認する。
NHK の番組は字幕が多いので確認しやすい。
字幕をオフにしたいときは[CC]ボタンを押して薄い表示にする。

■12.3 字幕データ作成の自動処理
番組の TS ファイルごとに 字幕の SUB ファイルを生成するのだが、
TS ファイルは1時間ごとに分けられているので
ファイル作成完了直後に処理を走らせるのがよいかも。

毎時0分に TS ファイルの作成が完了するので、できたての TS ファイルを処理するには
毎時59分に日時覚えて、ちょっと待って(毎時0分を過ぎたら)実行したらよいんじゃなイカ?

# sudo -s
# cat > /usr/local/oneseg24/caption.sh
#!/bin/sh
export ymd=`/bin/date +"%y%m%d"`
export H=`/bin/date +"%H"`
/bin/sleep 120
/usr/local/bin/dumpeit /usr/local/oneseg24/ts/$ymd/$ymd$H"_Ch"??.ts
[Ctrl]+[D]
# chmod 755 /usr/local/oneseg24/caption.sh

# crontab -e
59 * * * * /bin/sh /usr/local/oneseg24/caption.sh


■13. Siano チューナーのハングアップ予防
■13.1 ハングアップしたチューナーの特定

Ubuntu で認識されたチューナーが、
USB ハブのどこに刺さっているか分かっていたほうが便利。
しょっちゅう熱暴走する個体を特定したりできるかもしれない。

/dev/dvb/adapter? を USB ハブポートの Siano チューナーに一対一で対応させるため、
以下製品を使う。
U2H-SW4S

節電USBハブ[セルフパワー/バスパワー共用モデル] - U2H-SW4Sシリーズ
http://www2.elecom.co.jp/cable/usb-hub/u2h-sw4s/

ちなみに、わたしの環境では Siano チューナがけっこう電気を喰うのか
ホスト PC の USB 電源供給が弱いのか
バスパワー専用モデル U2H-SW4B で安定しなかったのが
セルフパワー/バスパワー共用モデル U2H-SW4S で
AC アダプタにより電源を供給した状態では安定している。

節電USB・HUB(U2H-SW4)の制御ソフト |iteclubのブログ
http://www.iteclub.net/wordpress/2011/08/12/u2h-sw4x_control_software/
http://www.iteclub.net/downloads/sw4ctrl.tar.gz

$ wget -P ~/Downloads http://www.iteclub.net/downloads/sw4ctrl.tar.gz
$ cd ~/make
$ tar xvzf ~/Downloads/sw4ctrl.tar.gz
$ cd sw4ctrl
$ sudo -s
# cp ./sw4ctrl /usr/local/bin
# chmod u+s /usr/local/bin/sw4ctrl

起動時の Siano 認識を一本ずつ行うように、
1ポートずつ電源を入れるように変更する。

# cat > /usr/local/oneseg24/siano.sh
#!/bin/sh
/usr/local/bin/sw4ctrl -c 0 all off
/usr/local/bin/sw4ctrl -c 1 all off
/sbin/modprobe smsdvb
/usr/local/bin/sw4ctrl -c 0 1 on
/bin/sleep 1
/usr/local/bin/sw4ctrl -c 0 2 on
/bin/sleep 1
/usr/local/bin/sw4ctrl -c 0 3 on
/bin/sleep 1
/usr/local/bin/sw4ctrl -c 0 4 on
/bin/sleep 1
/usr/local/bin/sw4ctrl -c 1 1 on
/bin/sleep 1
/usr/local/bin/sw4ctrl -c 1 2 on
/bin/sleep 1
/usr/local/bin/sw4ctrl -c 1 3 on
/bin/sleep 1
/usr/local/bin/sw4ctrl -c 1 4 on
/bin/sleep 1
/bin/chmod 666 /dev/dvb/adapter?/*
[Ctrl]+[D]
# reboot

■13.2 Siano 熱暴走予防
殻割りして、チップにヒートシンクを付けるとよい。
2013年夏、35度超えの日に空調入れていない部屋で安定して稼動している。
殻割りしてヒートシンク

Ainex | HM-19A
http://www.ainex.jp/products/hm-19a.htm


■14. 日々の運用
特定のチャンネルが録れていない
1チャネル死んだ状態
画像の例だと、4番目のチャンネルが死んでいる。

節電 USB ハブの該当ポートの電源を切り/入りして復活させる。
# sw4ctrl -c 0 4 off
# sw4ctrl -c 0 4 on
対応する dvbstream のプロセス番号を得て、再起動させる。
# ps aux | grep dvbstream
# kill -HUP ?????


■15. トラブルシューティング
・dvbstream
電波状況が悪いと ts のファイルサイズが 0 のままだったりする。
電波状況がよくないと ts ができても再生できない場合がある。
電波状況については、dvbstream の stderr 出力から "Signal strength" や "SNR" を見る
アンテナ線をトライアンドエラーして苦労するよりアンテナブースターを入れるほうが改善する。

・TSダウンロード
NHK に顕著だが、番組の切り替わりに音声モードが変わる(二カ国語→普通など)場合に
再生画面では音声が聞こえるが、ダウンロードした TS では音声が聞こえない場合がある。
→ 再生時は、番組開始時刻の数秒前から読み込んでいるので、 音声モードの切り替わりがもろに入ってしまう。
再生画面の URL をコピーして編集し、数秒遅らせた URL で開いてみるとよい。
例:
http://192.168.254.50/player.pl?site=007&request=140106-193000-195800-22

http://192.168.254.50/player.pl?site=007&request=140106-193006-195800-22

・MP4作成
MP4 が作成されない場合
/var/www の log cache data が 777 になっているか?

・dumpeit
字幕取得を後日に手動でかけると、TS フォルダの mtime が変わってしまい
削除スクリプトの find で引っかからなくなり削除されず、ディスクを圧迫することがある。
touch -t MMDDhhmm などで各年日時フォルダの mtime を変更すると回避できる。

・caption
字幕放送と明記されており、sub ファイルにデータが EUC で作成されるにもかかわらず
再生画面に字幕が出ないケースを何度か確認した。
→ すいませんどうしたらいいか分かりません。あきらめてください。


■16. ToDo
Siano の死活監視、復活を自動で行わせる。
このあたりが参考になりそうなんですが私にはよく分かりません。
HA's memo: USBポートの電源制御
http://octais.blogspot.jp/2012/04/usb.html

→(2014/12/29追記)
やっつけ毎時死活監視復帰スクリプト。
要は TS ファイルができてないと死んだとみなして Siano の電源を切り入りする。
sleep の秒数は適当。kill が -HUP だとうまくいかなかったので -KILL にした。 一応ログ取ってます。
以下は兵庫県の例。誰かもっとスマートに書く方法あったら教えてください。

# cat > /usr/local/oneseg24/siano-off-on.sh #/bin/sh /bin/sleep 15 export ymd=`/bin/date +"%y%m%d"` export H=`/bin/date +"%H"` # NHK G export tsfile=/usr/local/oneseg24/ts/$ymd/$ymd$H"_Ch22.ts" if [ ! -e $tsfile ] ; then echo $tsfile not found >> /usr/local/oneseg24/log/siano-off-on.log 2>&1 /usr/local/bin/sw4ctrl -c 0 1 off /bin/sleep 10 /usr/local/bin/sw4ctrl -c 0 1 on /bin/sleep 5 kill -KILL `/bin/ps ax | /bin/grep dvbstream | /usr/bin/awk '$7==0{print $1}'` fi # NHK E export tsfile=/usr/local/oneseg24/ts/$ymd/$ymd$H"_Ch13.ts" if [ ! -e $tsfile ] ; then echo $tsfile not found >> /usr/local/oneseg24/log/siano-off-on.log 2>&1 /usr/local/bin/sw4ctrl -c 0 2 off /bin/sleep 10 /usr/local/bin/sw4ctrl -c 0 2 on /bin/sleep 5 kill -KILL `/bin/ps ax | /bin/grep dvbstream | /usr/bin/awk '$7==1{print $1}'` fi # SUN export tsfile=/usr/local/oneseg24/ts/$ymd/$ymd$H"_Ch26.ts" if [ ! -e $tsfile ] ; then echo $tsfile not found >> /usr/local/oneseg24/log/siano-off-on.log 2>&1 /usr/local/bin/sw4ctrl -c 0 3 off /bin/sleep 10 /usr/local/bin/sw4ctrl -c 0 3 on /bin/sleep 5 kill -KILL `/bin/ps ax | /bin/grep dvbstream | /usr/bin/awk '$7==2{print $1}'` fi # MBS export tsfile=/usr/local/oneseg24/ts/$ymd/$ymd$H"_Ch16.ts" if [ ! -e $tsfile ] ; then echo $tsfile not found >> /usr/local/oneseg24/log/siano-off-on.log 2>&1 /usr/local/bin/sw4ctrl -c 0 4 off /bin/sleep 10 /usr/local/bin/sw4ctrl -c 0 4 on /bin/sleep 5 kill -KILL `/bin/ps ax | /bin/grep dvbstream | /usr/bin/awk '$7==3{print $1}'` fi # ABC export tsfile=/usr/local/oneseg24/ts/$ymd/$ymd$H"_Ch15.ts" if [ ! -e $tsfile ] ; then echo $tsfile not found >> /usr/local/oneseg24/log/siano-off-on.log 2>&1 /usr/local/bin/sw4ctrl -c 1 1 off /bin/sleep 10 /usr/local/bin/sw4ctrl -c 1 1 on /bin/sleep 5 kill -KILL `/bin/ps ax | /bin/grep dvbstream | /usr/bin/awk '$7==4{print $1}'` fi # OSAKA export tsfile=/usr/local/oneseg24/ts/$ymd/$ymd$H"_Ch18.ts" if [ ! -e $tsfile ] ; then echo $tsfile not found >> /usr/local/oneseg24/log/siano-off-on.log 2>&1 /usr/local/bin/sw4ctrl -c 1 2 off /bin/sleep 10 /usr/local/bin/sw4ctrl -c 1 2 on /bin/sleep 5 kill -KILL `/bin/ps ax | /bin/grep dvbstream | /usr/bin/awk '$7==5{print $1}'` fi # KANTELE export tsfile=/usr/local/oneseg24/ts/$ymd/$ymd$H"_Ch17.ts" if [ ! -e $tsfile ] ; then echo $tsfile not found >> /usr/local/oneseg24/log/siano-off-on.log 2>&1 /usr/local/bin/sw4ctrl -c 1 3 off /bin/sleep 10 /usr/local/bin/sw4ctrl -c 1 3 on /bin/sleep 5 kill -KILL `/bin/ps ax | /bin/grep dvbstream | /usr/bin/awk '$7==6{print $1}'` fi # YOMIURI export tsfile=/usr/local/oneseg24/ts/$ymd/$ymd$H"_Ch14.ts" if [ ! -e $tsfile ] ; then echo $tsfile not found >> /usr/local/oneseg24/log/siano-off-on.log 2>&1 /usr/local/bin/sw4ctrl -c 1 4 off /bin/sleep 10 /usr/local/bin/sw4ctrl -c 1 4 on /bin/sleep 5 kill -KILL `/bin/ps ax | /bin/grep dvbstream | /usr/bin/awk '$7==7{print $1}'` fi [Ctrl]+[D] # chmod 755 /usr/local/oneseg24/siano-off-on.sh # crontab -e 0 * * * * /bin/sh /usr/local/oneseg24/siano-off-on.sh

第一部 完 第一部 完


■17. リファレンス
【UOT-100】24時間ワンセグ野郎 Part05【LOG-J200】
http://toro.2ch.net/test/read.cgi/avi/1298197262/l50

OneSeg24 for Linux
http://code.google.com/p/oneseg24/

CVOC-E121 - LinuxTVWiki
http://www.linuxtv.org/wiki/index.php/CVOC-E121

DVB tools | Free software downloads at SourceForge.net
http://sourceforge.net/projects/dvbtools/

perlrtmp - perl RTMP Server for MPEG2-TS/MP4(H264/AAC) Streaming
http://code.google.com/p/perlrtmp/

Rubber Duckie: player.pl差し替え版sqlite3対応版一応公開
http://r-duck.blogspot.com/2009/09/playerplsqlite3.html

segwrapper.zip - perlrtmp - 『24時間ワンセグ野郎』同梱 segwrapper.pm 改良版 - perl RTMP Server for MPEG2-TS/MP4(H264/AAC) Streaming - Google Project Hosting
http://code.google.com/p/perlrtmp/downloads/detail?name=segwrapper.zip&can=2&q=

Rubber Duckie: segwrapper.pm の脱 inverse_julian_day 化
http://r-duck.blogspot.com/2009/09/segwrapperpm-inversejulianday.html

数学ハカセの憂鬱: lenny で24時間ワンセグ野郎(その5)
http://blog.cane.jp/article/28857187.html

Linuxでワンセグ録画 その4 (TSストリームをMP4ファイルに変換) | ぷちのいず
http://petit-noise.net/blog/linux%e3%81%a7%e3%83%af%e3%83%b3%e3%82%bb%e3%82%b0%e9%8c%b2%e7%94%bb-%e3%81%9d%e3%81%ae4-ts%e3%82%b9%e3%83%88%e3%83%aa%e3%83%bc%e3%83%a0%e3%82%92mp4%e3%83%95%e3%82%a1%e3%82%a4%e3%83%ab%e3%81%ab%e5%a4/

Rubber Duckie: アクセシビリティ、または24時間ワンセグ野郎字幕対応
http://r-duck.blogspot.com/2009/09/24.html

ぱぱネット(仮)(2008-12-24)
http://linux.papa.to/?date=20081224#p07


■18. 謝辞
Many Thanks to スレの皆様!

y-katow web home
y-katow@iris.eonet.ne.jp