かつて、米国にLinuxのホームサーバを構築した。これは、NAS (Network Storage, samba), SSH login, ftp, Web server (apache), Proxy server (squid), video streaming (apache), Firewall (iptables), DDNS (DiCE)などを実装した。詳細は以下にある。
2013年1月5日土曜日: 自宅にLinuxサーバを構築した
ついで、静音型の薄型Desktop Lenovo H520sが安かったので、これとビデオボードを用いて、今度は、日本の自宅においたサーバで、テレビ放送を録画して、海外や出先から試聴できる録画サーバを構築した。大変快適である。以下、それについて記載する。
嬉しさ)
嬉しさ)
- 1万円弱のボードを使うと地上波2番組、BS/CS 2番組同時録画が可能
- ソフトはLinuxなど全部Open sourceを利用。windowsすらも不要。
- 1週間分の番組表を地デジ波から取ってくる。この番組表は、java scriptで書かれており、マウスオーバすると、解説が画面上部に表示されて大変快適。局が指定した番組種別(ドラマ、バラエティ、等)で色分けされている。
- 予約も出先からできて、視聴もGoogle Chromeでストリーミング再生可能(PCのSafari/IE/Firefoxでは不可能) やiOSのchromeでは再生不能だが、Nexus 7で確認したところAndroidなら再生可能。
- 再生画質は、ハイビジョンのモニタを使い、Chromeで全画面再生にしたとき、地上波アナログ以上に綺麗。
- ファイルをダウンロードして、転送すればスマホでも見られる。
- 3TBのハードディスクに30分番組5000本は入る
- PHP (+Smarty) MySQL, Java (+jquery), シェルスクリプト, perl等でスッキリ書かれているので、簡単にカスタマイズできる。
主力はsmarty: http://www.php-labo.net/tutorial/class/smarty.html#install とPHP。 - ffmpegという変換ツールが強力で、これもカスタマイズできる。
と、家電メーカの使いにくいハードディスレコーダよりも断然良い。安く、大容量で、高機能で、遠隔視聴やダウンロードもできて使い安い。その分、自分でいろいろ調整しないとならないところもあるが、むしろそれで使いにくさが改善されていく。
その後の更新)以下にその後の更新を投稿した。
その後の更新)以下にその後の更新を投稿した。
- 2016年1月1日金曜日 ビデオサーバプログラムのその後の更新
- 2017年12月 タイトル中の半角文字がエラーになる .. 修正済み。bug fixしたか確認中だが。問題なさそうなので、そのうち投稿する。
Google Chromeで遠隔地から操作している画像)
海外や出先から予約・予約変更・再生・消去ができる。
海外や出先から予約・予約変更・再生・消去ができる。
地デジ電波に乗った情報から自動的に作り出す番組表。約1週間先まで出る。標準では8時間分だが、設定ファイルを変えて24時間分を一画面に出すようにしてある。 |
予約一覧表。時間の早い純にソートされ表示される。色は番組表から受け継ぐ。 時々、mysqlの予約テーブル (RESERVE_STRUCT)の録画完了フラグ "complete'が1にならないことがあり、すると項番1の様に、録画済みなのに、予約テーブルに残る。が、このテーブルは、録画済みテーブルからも参照されているので、エントリを消すと、録画データがディスクにあっても、録画済み一覧から見えなくなる。 |
録画済み番組の一覧。 |
掲載項目一覧)
後日、スクリーンショット等を追加して完成させるが、まずは覚え書き。
後日、スクリーンショット等を追加して完成させるが、まずは覚え書き。
- ハードウェア構成
- Linux (CentOS6.4 Intel x86 64bit)のインストール
- 3TB HDDの認識:はまりやすいポイント1
- 自宅外アクセスの設定:ファイアウォールの設定、BBrouterの穴あけ 等
- PX-W3PEを用いた構築 ⇒ 結局上手くいかず
やり方: http://www2.filewo.net/wordpress/2014/02/05/centos6-4とpx-w3peで作る録画サーバ/ PCSCカードリーダは、ここにあるものを用い、インストールもこれに従った。 - アースソフト PT3 revAを用いて現環境を構築 ⇒ 基本
は http://namakemono345.com/kichijitsu/centos/default/pt3.html のやりかた。はまったポイント等は以下。 - DDNS (miniDNS)経由でのアクセス試験 ⇒ 米国のproxyを用いて実験
- selinuxの無効化: これをやらないと、マウントした/homeが見えない
- mysqlの構築
- mysqlにdatabaseの管理者権限で入って、間違ってuserを格納するtableを消してしまった。顛末を別記。
- 録画結果がみられない ⇒ tsからmpeg4 (h.264)への変換。640x360の解像度でHDのディスプレイで十分美しく見られる。ファイルサイズも15分番組で80MB前後、転送レートも40~80KB/s (300kbps~600kbps)程度なので、モバイルルータでのnon LTE (3G)接続でも十分見られる。
- TSファイルをffmpegでmp4にエンコード が参考になる。
- http://d.hatena.ne.jp/munepi/20091227/1261941397 にpresetファイルの説明
- http://tech.ckme.co.jp/ffmpeg.shtml に使い方がある
- epgrec/templates/recordedTable.html と対応するrecordedTable.phpを変更して、直接リンクを読むようにした。mp4でgoogle Chromeならこれで視聴できる。
- http://dambo.mydns.jp/pwiki/index.php?TS%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%82%92ffmpeg%E3%81%A7mp4%E3%81%AB%E3%82%A8%E3%83%B3%E3%82%B3%E3%83%BC%E3%83%89 にコマンドオプション等の説明
- その後、PHP, templates/epgrec/ の下のファイルをカスタマイズして機能追加した
- 各画面から別の画面に飛ぶ
- Disk容量(録画数、使用容量、利用可能容量、平均録画容量、それから割り出した録画可能本数) --- 3TBのHDDでは2.5TBほど使えているので、平均して30分~1時間番組が多い状況では、5000本以上保存可能である。
- 録画済み画面での終了時間の表示、件数の表示
- 予約画面での件数の表示
- 今後:予約画面での時間変更、時間をマウスだけで変更できるように。等の改造を考えている。
- .htaccess / .htpasswd での保護。これをしなかったら、不正なアクセスが... 解析もしたが、隣国のプロバイダからのアクセス。別記する。
- ffmpegの設定を最適化
- <解説> 付きの音声ストリームがある番組(NHK朝ドラ)では、音ズレがおきる。ため、一個目の主音声ストリームだけを変換する
- 高速化するために1パス変換しているが、大体番組時間と同じ変換時間がかかる。録画ツール recptl (普通は/usr/local/binに置かれる)では、ストリームに出力をはき出すこともできるらしいので、ffmpegにて実時間変換ができるか試してみたい。
- ダウンロード視聴
- 録画済みテーブルで右クリックし、番組データをmp4ファイルとしてダウンロードする。
- .mp4サフィックスを.m4vサフィックスに変換して、iTunesに転送
- iPhoneでも問題無く見られる。
- 1時間半の特番で、ファイルサイズは400MB弱なので、DVDをリッピングしたものとファイルサイズはあまりかわらないが、画質は断然良い
- BCASカードを認識しなくなった
- PCカードリーダのLEDは緑で点滅していないとならないのが、緑の点灯らしい。
- とりあえず、ワンセグをffmpegして、閲覧
- rootになって、service pcscd restartしても、
service pcscd stoppcscd -a -d -finit 6で再起動してもだめ。とりあえず、他の環境はrebootでも立ち上がるのを確認。
で、デバッグモードで立ち上げてもカードリーダを認識しない。
a. 今のもの: NTTコミュニケーションズ 接触型ICカードリーダー・ライタ e-Tax Win&Mac対応 SCR3310-NTTCom 4,900円
b. 新しいreader: CLOUD2700-NTTCom CLOUD2700 のほうが安い。2,300円、おまけにamazon prime。ドライバがあるかどうか....
c. Gemalto ジェムアルト ICカードリーダ・ライタ 電子申告(e-Tax)対応住基カード用PC USB-TR HWP119316 -- 1,746円 -- 本章冒頭のPT3を使った設定で使っているリーダ
readerの設定: http://baalzephon.no-ip.org/tech/index.php?Linux%2F%E3%83%86%E3%83%AC%E3%83%93%E9%96%A2%E9%80%A3%2Flibccid - 遠隔で調べてもらった。本体背面に6つあるUSBポートのうち、2つに刺せばpcsc_scanが正常に動いた。USBポートが壊れたかも。実機を見る機会があったら確認する。予備のカードリーダとして上記b, c を発注してしまったので、それでも動くかを実験する。
- ffmpegを1.2から2.5にあげてこれが壊れた。
http://tech.ckme.co.jp/ffmpeg.shtml にあるwindowsのやり方を使ったのが敗因。fdk-aac がエラーを出す。
http://blog.code-life.net/blog/2013/04/14/how-to-install-ffmpeg-on-centos6-x86-64/ のやり方で1.2を再インストール。古いtsファイルを変換できることを確認。 - しかし録画できず。カードリーダがまた無効になっている。カードリーダが壊れ、USBポートを破壊していく可能性がある。やはり予備のリーダを試す必要がありそう。。
以下詳細)
1. ハードウェア構成)
2. CentOS6.4のインストール)
- 3TB HDD Driveにはinstallできず
- 32GB SSDでlinuxが起動
1. 本体には500GB HDDにwindows7がインストールされているものを購入。録画領域を増やすため、3TBのHDDに換装することにした。CentOS6.3をインストールしたが、リブートしても起動しない。3TB HDDのMBRへLinuxの GRUBをうまく認識させられていないようである。
2. 薄型であるため本体にもスペースはないが、パーティションツールを購入して500GBのHDDをパーティション分けして、そこにLinuxもインストールしてみたが、これでもうまくいかない。
3. 有休品の2.5in SSD (Silicon Power製)なら本体におさまる。まず、これだけを繋いでLinux (CentOS 6.4 x86 64bit)をインストール。ブートに成功。
4. つぎに3TB HDDを繋いでbootこれも認識したが、最初のインストールでLVMができていて、うまくマウントできないので、これをdirectなext4にすることにした。これは次節を参照。
3. 3TB HDDを認識させる)
関連リンク)
- LVMと操作法) http://pantora.net/pages/lvm/3/
- 2TBの壁を越えたHDDをformat)
- http://d.hatena.ne.jp/y___u/20120502/1335957595
- マウント等も含めた紹介 (CentOS5.5だが) http://bit.ly/1cqEhIO