マニュアルがないと何もできない私が 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 >>製品情報 >>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
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
http://www.aurora-eos.co.jp/original/au-oneseg2/html/index.html
わたしが入手した個体は Siano Nova B Digital Receiver。
×独自コネクタ。一見して RCA と思ったが微妙に違う。
○高感度ロングアンテナ付属。
→アンテナに繋がっている同軸ケーブル途中で切ったら8本分結線できるのでは。
F 変換コネクタ付属。
・エスケイネット 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日分保持してました。
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]
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 は不要。
このへんを参考に。
$ 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
前者に後者の以下の行を末尾に追加。
ビルドの設定をする。
もしも上記設定が見つからなければ .config ファイルを編集し、
# make-kpkg clean
カーネルのビルドを行う。かなり時間がかかる。
$ sudo -s
Siano 用のファームウェアを入手する。
$ sudo cp ~/Downloads/isdbt_nova_12mhz_b0.inp /lib/firmware
$ sudo -s
Siano ワンセグチューナーを何本か挿す。
24時間ワンセグ野郎関連ディレクトリ作成。
起動時にsianoを認識するスクリプトを作成。
起動時にsianoを認識するよう設定。
# reboot
$ sudo -s
デバイス名確認。
パーティショニング。
フォーマット。
マウントポイント作成。
マウント実行確認。
マウントオプション確認。
オプションを fstab に追記。
ts ディレクトリ作成
起動時にマウントするスクリプトを作成
# reboot
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 のダウンロード。
$ wget -P ~/Downloads http://oneseg24.googlecode.com/files/OneSeg24forLinux_1.0.0.2.tar.gz
作業用ディレクトリに移り、展開
$ cd dvbstream-0.5
$ sudo -s
dvbstream はチャンネルの選局を周波数で行います。
ch は以下ページで調べることができます。
$ cd ~/make
できた test?.ts を ftp などで Windows機にコピーして再生できるか確認する。
万一、MPC-HC で再生できなくても、
電波状況が悪いと ts のファイルサイズが 0 のままだったりする。
~/make/OneSeg24forLinux_1.0.0.2/oneseg24/readme.txt を読むと、
ダウンロード
~/make/perlrtmp_1.0.1.1/readme.txt を見ると、
■6.1 Web サイト埋め込み式動画再生プレーヤ JW FLV MEDIA PLAYER の導入
ダウンロード
■6.2 Web サーバの設定
・静的 html の公開。
他端末から
CGI 設定。
# vi /etc/apache2/sites-available/default
その2.AllowOverride を All に。
変更を反映。
~/make/perlrtmp_1.0.1.1/readme.txt を参考に。
追加インストールが必要なライブラリを導入。
他端末から
確認できたら止める。
運用ディレクトリにコピー。
~/make/OneSeg24forLinux_1.0.0.2/oneseg24/readme.txt を参考に。
■8.1 ライブラリのインストール
$ cd ~/make/OneSeg24forLinux_1.0.0.2/oneseg24
以下に兵庫県の例を挙げる。
記述順はテレビのリモコンや新聞のテレビ欄にあわせればいいんじゃなイカ?
データベース作成
■8.2 録画スクリプトの起動
ts.pl 修正
作業ディレクトリから運用ディレクトリへコピー
録画スクリプト作成
番組表 CGI の設定
epg.cgi、setup.cgi 修正
player.cgi 修正
番組表 CGI のコピー
・チャンネル設定(一度だけ)
他端末から
・ストリームサーバの起動スクリプト作成
・視聴
各種起動スクリプトをシステム起動時に自動実行させる設定。
# reboot
ディスクの空き容量を把握しておく。
削除スクリプト作成
タイマー設定
毎日深夜0時10分に実行させている。
ちなみにわたしのところでは 1TB で運用していて 26 日分でいっぱいになり、
~/make/OneSeg24foriPhone/readme.txt を参考に。
2ファイル、保存ディレクトリパス設定変更
OneSeg24 for Linux の番組表をコピーして iPhone 用に変更
作業用ディレクトリから公開ディレクトリにコピー
iPhone から
※ここからはドキュメントが付属していないので導入はたいへんになる。
Rubber Duckie: player.pl差し替え版sqlite3対応版一応公開
リンクページは
player.pl差し替え版sqlite3対応版
■11.1 player.pl差し替え版sqlite3対応版の設定
$ wget -P ~/Downloads http://rduck.web.fc2.com/player-sqlite090926.tar.bz
~/make/player-sqlite/define.pl を参考に。
$ vi define.pl
define.pl を読むと、mp4 を作る場合、以下が必要とある。
$BaseDir = '/usr/local/www/apache22';
@iepg_chan = (
$RwIPOD = '_ipod';
$DBNAME = "/media/disk/oneseg24/epg.db";
define.pl の記述どおりの以下フォルダを作成する。
$ sudo -s
$ vi player.pl
player.pl を眺めていると、player45.swf が必要と分かった。
(2013/07/02時点 Google "player45.swf filetype:swf" 検索上位十件)
$ wget -P ~/Downloads http://どこか/swf/player45.swf
$ cd ~/make/player-sqlite
segwrapper 単体をインストールすることで問題なく動く。
segwrapper.zip - perlrtmp - 『24時間ワンセグ野郎』同梱 segwrapper.pm 改良版 - perl RTMP Server for MPEG2-TS/MP4(H264/AAC) Streaming - Google Project Hosting
$ wget -P ~/Downloads http://perlrtmp.googlecode.com/files/segwrapper.zip
ここでこのまま使うと、
以下ページより、segwrapper が JulianDay.pm を使わないようにするパッチを入手。
$ w3m -M http://r-duck.blogspot.com/2009/09/segwrapperpm-inversejulianday.html
$ cp ~/Downloads/segwrapper.pm.patch.txt ~/Downloads/segwrapper.pm.patch
$ vi segwrapper.pm
$ cd ~/make
$ cd ~/make/player-sqlite
$ sudo cp -r ./* /var/www
http://192.168.254.50/player.pl
http://192.168.254.50/player.pl
番組再生ウィンドウ右下の"・TS download"をクリックすると、
数学ハカセの憂鬱: lenny で24時間ワンセグ野郎(その5)
$ cd ~/make
番組再生ウィンドウ右下の"TS download"をクリックし、ダウンロード可能か確認する。
これで番組視聴画面から ts ファイルのダウンロードが可能となった。
現在のところ、
以下、MP4変換環境構築はけっこう面倒なので、
・TSConverter、MP4Box 導入
$ wget -P ~/Downloads http://theremin.hostoi.com/file/TSConverter_9_01.zip
$ cd ~/make
・TSConverterが必要としている MP4Box を導入
※プロキシ環境にいる場合は
$ cd gpac
2013/02/27 に構築した revision 4335 では問題なかったので、それを指定して使う。
・TSConverterが必要としている DtsEdit を導入
$ make
・TSConverter、MP4Box の動作確認。
$ cd ~/make/player-sqlite
・設定
$ sudo cp define.pl /var/www
番組再生ウィンドウ右下の「・PC用MP4作成」をクリックし、しばらく待つ。
Rubber Duckie: アクセシビリティ、または24時間ワンセグ野郎字幕対応
ぱぱネット(仮)様製作によるdumpeitにより、
ぱぱネット(仮)(2008-12-24)
■12.1 字幕データ抽出 dumpeit 導入
■12.2 字幕表示 caption.pl 導入
$ cd ~/make/player-sqlite/
番組表から字幕番組を選んで再生し、
■12.3 字幕データ作成の自動処理
毎時0分に TS ファイルの作成が完了するので、できたての TS ファイルを処理するには
# sudo -s
# crontab -e
Ubuntu で認識されたチューナーが、
/dev/dvb/adapter? を USB ハブポートの Siano チューナーに一対一で対応させるため、
節電USBハブ[セルフパワー/バスパワー共用モデル] - U2H-SW4Sシリーズ
ちなみに、わたしの環境では Siano チューナがけっこう電気を喰うのか
節電USB・HUB(U2H-SW4)の制御ソフト |iteclubのブログ
$ wget -P ~/Downloads http://www.iteclub.net/downloads/sw4ctrl.tar.gz
起動時の Siano 認識を一本ずつ行うように、
# cat > /usr/local/oneseg24/siano.sh
■13.2 Siano 熱暴走予防
Ainex | HM-19A
節電 USB ハブの該当ポートの電源を切り/入りして復活させる。
・TSダウンロード
・MP4作成
・dumpeit
・caption
→(2014/12/29追記)
第一部 完
OneSeg24 for Linux
CVOC-E121 - LinuxTVWiki
DVB tools | Free software downloads at SourceForge.net
perlrtmp - perl RTMP Server for MPEG2-TS/MP4(H264/AAC) Streaming
Rubber Duckie: player.pl差し替え版sqlite3対応版一応公開
segwrapper.zip - perlrtmp - 『24時間ワンセグ野郎』同梱 segwrapper.pm 改良版 - perl RTMP Server for MPEG2-TS/MP4(H264/AAC) Streaming - Google Project Hosting
Rubber Duckie: segwrapper.pm の脱 inverse_julian_day 化
数学ハカセの憂鬱: lenny で24時間ワンセグ野郎(その5)
Linuxでワンセグ録画 その4 (TSストリームをMP4ファイルに変換) | ぷちのいず
Rubber Duckie: アクセシビリティ、または24時間ワンセグ野郎字幕対応
ぱぱネット(仮)(2008-12-24)
# 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]
"
"[*] DVB/ATSC adapters --->" 選択して[Enter]
"
" Siano module components --->" 選択して[Enter]
"
[→]キーで"< 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]を押す。
# vi +/SIANO .config
CONFIG_SMS_SIANO_MDTV
↓
CONFIG_SMS_SIANO_MDTV=m
とし、再度 make menuconfig を実行する。
コンソールを開いて放置していて猫がキーボードを跳ねても困るし、
他端末からの 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時間半くらい。
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 付属 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 reboot
# modprobe smsdvb
# 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?/*
# mkdir /usr/local/oneseg24
# chmod 777 /usr/local/oneseg24
# 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
/etc/rc.local 末尾、"exit 0" の前に入れる。
# vi + /etc/rc.local
/bin/sh /usr/local/oneseg24/siano.sh
念のため再起動時に認識されているか確認する。
$ ls -d /dev/dvb/adapter?
■4. ディスクの増設
USB-HDD を接続。
ディスクまるごとワンパーティション
# 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
# vi + /etc/fstab
/dev/sdb1 /mnt/oneseg24 auto noauto 0 2
# 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
念のため再起動時にマウントされているか確認する。
$ mount
■5. 録画ツールのインストール、Siano動作確認の記録
http://sourceforge.net/projects/dvbtools/
http://downloads.sourceforge.net/project/dvbtools/dvbstream/dvbstream-0.5/dvbstream-0.5.tar.gz
これには dvbstream 用複数起動修正パッチが含まれている。
パッチのおかげで最大8本の同時録画が可能となる。
http://code.google.com/p/oneseg24/
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
dvbstream 用複数起動修正パッチを当てる。
$ patch < ~/make/OneSeg24forLinux_1.0.0.2/driver/dvbstream.patch
コンパイル。
$ make
make install が効かないので cp する。
# cp dvbstream /usr/local/bin
# chmod u+s /usr/local/bin/dvbstream
# exit
周波数の計算式は以下の通りです。
ch * 6000 + 395143 = 周波数
UHF 地上波デジタル放送周波数
http://www.max.hi-ho.ne.jp/mishima/mk/dezitaru/channel.html
$ for ch in 22 13 26 16 15 18 17 14; do echo `expr $ch \* 6000 + 395143`; done > ~/make/freq.txt
とかやって freq.txt を編集すればいいんじゃなイカ?
キャプチャテスト用スクリプトを作成。
$ 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
マニュアルがないと何もできないので何で再生すればよいか分からない場合
→ CCCP 付属の MPC-HC とかどうでしょう。
The Combined Community Codec Pack 付属の Media Player Classic Home Cinema で再生できるか確認する。
CCCP - Combined Community Codec Pack
http://www.cccp-project.net/
略称が昔のソビエト連邦の略称 "CCCP" と同じで
シャレで「鎌と槌」のロゴが入っているが、
別に政治的な関係はないので心配ない。たぶん。知らん。
以下 URL の TSConverter で MP4 に変換できる場合がある。
UOT-100/LOG-J200 用予約録画ソフト -24時間ワンセグ野郎派生ツール
http://theremin.hostoi.com/oneseg.htm
電波状況がよくないと ts ができても再生できない場合がある。
電波状況がよくないと MP4 に変換できない場合がある。
電波状況については、dvbstream の stderr 出力から "Signal strength" や "SNR" を見る
アンテナ結線をトライアンドエラーして苦労するよりは、
金にモノを言わせてアンテナブースター買ってやるとあっさり改善する。
Siano にはミニヒューズホルダーで取り付けると外れにくい。
■6. ストリームサーバ perlRTMP の導入
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
Flash プレーヤーが必要であり、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
~/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 を使う。
$ sudo -s
apache2 のインストール。
# apt-get -y install apache2
テストページのコピー。
# cp ~/make/mediaplayer/* /var/www
http://192.168.254.50/readme.html
を開いて"Player Example"が再生できていれば
Web サーバの設定はできている。
# vi +/cgi-script /etc/apache2/mods-available/mime.conf
cgi-script のコメントを外し、拡張子 .pl を追加する。
#AddHandler cgi-script .cgi
↓
AddHandler cgi-script .cgi .pl
<Directory /var/www/>ディレクティブを編集
その1.Indexes を削除、ExecCGI を追加。
Options Indexes FollowSymLinks MultiViews
↓
Options FollowSymLinks MultiViews ExecCGI
AllowOverride None
↓
AllowOverride All
# /etc/init.d/apache2 restart
http://192.168.254.50/first.pl
を開いて"Hello, World."が出れば CGI 設定はできている。
■7. ストリームサーバ(perlRTMP)のインストール
$ cd ~/make/perlrtmp_1.0.1.1
$ view readme.txt
# apt-get -y install libdigest-SHA-perl
$ 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
$ sudo -s
# apt-get -y install sqlite3
# apt-get -y install libdbi-perl
# apt-get -y install libdbd-sqlite3-perl
# exit
チャンネル部分を編集。
$ 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'
epg.pl 修正
$ vi +/epg.db epg.pl
my $dsn = 'DBI:SQLite:dbname=epg.db';
↓
my $dsn = 'DBI:SQLite:dbname=/usr/local/oneseg24/epg.db';
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
$ cd ~/make/OneSeg24forLinux_1.0.0.2/public_html
$ vi +/oneseg24 epg.cgi setup.cgi
my $dsn = 'DBI:SQLite:dbname=../oneseg24/epg.db';
↓
my $dsn = 'DBI:SQLite:dbname=/usr/local/oneseg24/epg.db';
$ vi +/xxx player.cgi
以下を修正
my $streamer = 'rtmp://192.168.xxx.xxx';
↓
my $streamer = 'rtmp://192.168.254.50';
$ 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
番組表が表示されますので、番組名をクリックするとプレーヤー画面に移動します。
# 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
再起動しても番組表ページが表示され(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
ディレクトリごと消したいので "-type d"、"rm -r" している。
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
$ vi +/ts m3u8.cgi ts.cgi
my $dir = '/ts';
↓
my $dir = '/usr/local/oneseg24/ts';
$ 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
http://192.168.254.50/iPhone.cgi
で PC 同様の番組表が見れて、録画が再生できることを確認。
■11. 「player.pl差し替え版sqlite3対応版」による、見やすく検索できる番組表と番組のMP4変換ダウンロード
http://r-duck.blogspot.com/2009/09/playerplsqlite3.html
Rubber Duckie
http://rduck.web.fc2.com/
http://rduck.web.fc2.com/player-sqlite090926.tar.bz
$ cd ~/make
$ tar xvf ~/Downloads/player-sqlite090926.tar.bz
$ cd player-sqlite
TSConverter、MP4Box、FFMpeg、neroAacEnc、neroAacDec
→ あとで余裕があったらやることにするる。
↓
$BaseDir = '/var/www';
"22:NHK総合・神戸",
"13:NHKEテレ1・大阪",
"26:サンテレビ",
"16:MBS毎日放送",
"15:ABCテレビ",
"18:テレビ大阪",
"17:関西テレビ",
"14:よみうりテレビ"
);
↓
#$RwIPOD = '_ipod';
↓
$DBNAME = "/usr/local/oneseg24/epg.db";
$log_folder = $BaseDir . '/log';
$CacheDir = $BaseDir . '/cache';
$ShotDir = $BaseDir . '/data/simg';
$mp4_folder = $BaseDir . '/data/mp4';
# cd /var/www
# mkdir -p log cache data/simg data/mp4
# chmod -R 777 log cache data
# exit
このバージョンのダウンロードページが見つからなかったので、
"player45.swf filetype:swf" で検索して
インストールしているページから適当に入手。
(いろいろ問題ありそうなので、ここには入手先を書かない。自分で探してください
.)
サーモンプレイヤー:字幕ボタン(後述)出ない。
Diaporama:レゲエっぽい。違う。
レスリング:字幕ボタン出る。
flashmp3:音楽プレーヤっぽい。違う。
Umcmedia:字幕ボタン出る。
hitparad:字幕ボタン出る。
ifactorystream:字幕ボタン出る。
DJ Tronic:音楽プレーヤっぽい。違う。
dropboxusercontent:字幕ボタン出る。
123:音楽プレーヤっぽい。違う。
$ sudo cp ~/Downloads/player45.swf /var/www
$ vi download.pl encode.pl player.pl
segwrapper の場所として perlrtmp のライブラリを定義する場所がある。
# segwrapperの場所
use lib '/opt/perlrtmp/lib';
http://code.google.com/p/perlrtmp/downloads/detail?name=segwrapper.zip&can=2&q=
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
というように出る。
Rubber Duckie: segwrapper.pm の脱 inverse_julian_day 化
http://r-duck.blogspot.com/2009/09/segwrapperpm-inversejulianday.html
(ページ保存)S、(ファイル名指定)~/Downloads/segwrapper.pm.patch.txt、(終了)q、(確認)y
$ vi ~/Downloads/segwrapper.pm.patch
$ patch -l < segwrapper.pm.patch (うまくいかない)
上記ページのコピペではタブ→スペース変換がうまくいってないみたいで
うまくパッチがあたらないので手パッチする。
(たいした量じゃないので見れば分かる
.)
$ vi segwrapper.pm.patch segwrapper.pm
my $TSFOLDER = "D:\\TS";
↓
my $TSFOLDER = "/usr/local/oneseg24/ts";
$ sudo cp -r ./segwrapper /usr/local/oneseg24
$ vi player.pl encode.pl download.pl
3ファイル、segwrapper の場所を定義
use lib '/opt/perlrtmp/lib';
↓
use lib '/usr/local/oneseg24/segwrapper';
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
ページ上方の「・時間別番組表から直接選択して抽出」カレンダー表示が動作することを確認。
番組名をクリックして別ウィンドウで番組が再生できることを確認。
ページ下方の「・時間を指定して番組抽出」が動作することを確認。
ページ下方の「・番組表から検索して抽出」の「キーワードで検索」が動作することを確認。
ページ下方の「・番組表から検索して抽出」の「ジャンルを抽出」が動作することを確認。
ダウンロードは一瞬で終わり
[WARN] No TS File
という内容の18バイトのファイルができてしまう。
以下ページを参考にして回避する。
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));
$ sudo cp -r ./segwrapper /usr/local/oneseg24
番組再生ウィンドウ左下の「・PC用MP4作成」をクリックすると
リロードされたうえに「■MP4作成に失敗しました」と出る。
Windows で視聴しているなら PC 用 MP4 はその端末で
ダウンロードした ts ファイルを TSConverter にかければよいでしょう。
http://192.168.254.50/player.pl で
PC 同様の番組表が見れて、
再生ウィンドウの「iPhone再生」を選択すると
録画が再生できることを確認。
■11.6 PC用MP4作成対応
端末が Windows じゃないから MP4 変換してダウンロードしたいという人、
Windows だけど MP4 変換できたら嬉しいよねという人に。
以下ページを参考に。
注意: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://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
$ 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
$ 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 = プロキシのポート
としてやりなおす。
$ ./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時点)→コンパイルエラー
だった。
$ 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
$ 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
$ sudo cp DtsEdit /usr/local/bin
$ cd ~/make/player-sqlite
$ grep TSConverter *.pl
ここに出てくる TSConverter を呼んでいる処理が動くか確認する。
$ cd ~/make
$ TSConverter test0.ts
test0.mp4 が生成されているか確認。
$ 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'; # よみうりテレビ
自動的にリロードされリンクが「・PC用MP4 (???MB)」となり
そこからダウンロード可能か確認する。MP4 プレイヤーで再生が可能か確認する。
■12. 字幕対応
http://r-duck.blogspot.com/2009/09/24.html
http://rduck.web.fc2.com/caption091002.tar.bz2
TS ファイルから SUB ファイルを作る必要がある。
ということで、以下が紹介されている。
http://linux.papa.to/?date=20081224#p07
http://linux.papa.to/image/dumpeit_win32_20090106.zip
$ 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 *
$ 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
$ 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]ボタンを押して薄い表示にする。
番組の TS ファイルごとに 字幕の SUB ファイルを生成するのだが、
TS ファイルは1時間ごとに分けられているので
ファイル作成完了直後に処理を走らせるのがよいかも。
毎時59分に日時覚えて、ちょっと待って(毎時0分を過ぎたら)実行したらよいんじゃなイカ?
# 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
59 * * * * /bin/sh /usr/local/oneseg24/caption.sh
■13. Siano チューナーのハングアップ予防
■13.1 ハングアップしたチューナーの特定
USB ハブのどこに刺さっているか分かっていたほうが便利。
しょっちゅう熱暴走する個体を特定したりできるかもしれない。
以下製品を使う。
http://www2.elecom.co.jp/cable/usb-hub/u2h-sw4s/
ホスト PC の USB 電源供給が弱いのか
バスパワー専用モデル U2H-SW4B で安定しなかったのが
セルフパワー/バスパワー共用モデル U2H-SW4S で
AC アダプタにより電源を供給した状態では安定している。
http://www.iteclub.net/wordpress/2011/08/12/u2h-sw4x_control_software/
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
1ポートずつ電源を入れるように変更する。
#!/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
殻割りして、チップにヒートシンクを付けるとよい。
2013年夏、35度超えの日に空調入れていない部屋で安定して稼動している。
http://www.ainex.jp/products/hm-19a.htm
■14. 日々の運用
特定のチャンネルが録れていない
画像の例だと、4番目のチャンネルが死んでいる。
# 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" を見る
アンテナ線をトライアンドエラーして苦労するよりアンテナブースターを入れるほうが改善する。
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 が作成されない場合
/var/www の log cache data が 777 になっているか?
字幕取得を後日に手動でかけると、TS フォルダの mtime が変わってしまい
削除スクリプトの find で引っかからなくなり削除されず、ディスクを圧迫することがある。
touch -t MMDDhhmm などで各年日時フォルダの mtime を変更すると回避できる。
字幕放送と明記されており、sub ファイルにデータが EUC で作成されるにもかかわらず
再生画面に字幕が出ないケースを何度か確認した。
→ すいませんどうしたらいいか分かりません。あきらめてください。
■16. ToDo
Siano の死活監視、復活を自動で行わせる。
このあたりが参考になりそうなんですが私にはよく分かりません。
HA's memo: USBポートの電源制御
http://octais.blogspot.jp/2012/04/usb.html
やっつけ毎時死活監視復帰スクリプト。
要は TS ファイルができてないと死んだとみなして Siano の電源を切り入りする。
sleep の秒数は適当。kill が -HUP だとうまくいかなかったので -KILL にした。
一応ログ取ってます。
以下は兵庫県の例。誰かもっとスマートに書く方法あったら教えてください。
■17. リファレンス
【UOT-100】24時間ワンセグ野郎 Part05【LOG-J200】
http://toro.2ch.net/test/read.cgi/avi/1298197262/l50
http://code.google.com/p/oneseg24/
http://www.linuxtv.org/wiki/index.php/CVOC-E121
http://sourceforge.net/projects/dvbtools/
http://code.google.com/p/perlrtmp/
http://r-duck.blogspot.com/2009/09/playerplsqlite3.html
http://code.google.com/p/perlrtmp/downloads/detail?name=segwrapper.zip&can=2&q=
http://r-duck.blogspot.com/2009/09/segwrapperpm-inversejulianday.html
http://blog.cane.jp/article/28857187.html
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/
http://r-duck.blogspot.com/2009/09/24.html
http://linux.papa.to/?date=20081224#p07
■18. 謝辞
Many Thanks to スレの皆様!
y-katow web home
y-katow@iris.eonet.ne.jp