お名前検討中(仮)その2

なんか星を付けていただいた方がおられるようで、こんなチラ裏に恐縮です。
というわけで、まあ明日にはごっそり別の画面になってる可能性もあったりなかったりですが、こんな感じ。
トップに、ディスク容量、新番組、最近の録画と、これからの予約を並べてみた。
放送予定。予約の切り替えも。
録画一覧。ディスクがあっぷあっぷになったら、積み録画をばっさり消したりしたくなるのでグループ削除ボタンを置いてみた。視聴ボタンは、HLSにするか、DLNAレンダラ呼び出すか、UDPでだだ流すか、どうしよ。
予約してる番組の放送予定と予約の削除。それにしてもこの秋の予約数ときたら。

FreeBSD 10.0 Releaseインストール

いまだにお名前検討中(仮)の何か、のクリーンな環境を作ろうと、開発機に10.0-Releaseをmemstickからインストール。
いつ以来だろう。。。えらくシンプルなインストーラーになったのねえ。zfs-rootもできるようになってた。partition作成のところで、ahciのエラーを大量にはいてたけど、reboot後に問題なく動いてる。謎。
freebsd-updateして、p9に。そこから必要そうなpkgをぽろぽろ導入。
ptx-kmodが、pkgでさくっとインストールできてびびった。b25が無いのに、インストールされるrecptx.plから呼んでいるという微妙な状態やね。

ああそういえばOpenWRT

こっちも棚ざらしだったなあ。いったんビルドまで終わったんだけど、レンガ化する恐れもあって躊躇してたら、BB正式版が出ちゃったので、ビルドし直すかなあということで中断。
お名前検討中(仮)で、スマホ連動も強化しようかなあということで、いろいろ目論見中。まあ昔から目論見まではいろいろあるんだけど、なかなか実現しないという平常運転。

お名前検討中(仮)

さんざん手を付け散らかして(主にPHPの方)、わけわかんなくなってきたfoltiaを、perl部分含めてCakePHPで車輪再発明中なのです。お名前検討中。
機能縮小しとるし、安定動作確認まではしばらく並行稼働やねー。

  • しょぼかる連動録画のみ。EPGは使ってないし、面倒なので後で考える。
  • UIはCakePHPのscaffoldまんま。後でいじる。
  • SQLiteのみ。dbまわりはCakePHPがPDO経由で叩いてるので、別DBに差し替えるのはそんなに手間じゃないはず。日付判定でSQLiteの独自関数使ってるけど。
  • アナログ録画とかラジオ録音処理はばっさりカット。recpt1呼び出しのみ。
  • サムネイル作成、StarLightBreaker、トラコンもカット。録画終了hookを作ったのでそこにスクリプト書けばいける。

現行環境に残ってる最古の積み録画は、2009/10/06の「そらのおとしもの #1 ユウシャ世界に起つ!」だった。いろんなのを録っては消し、録っては消しだけど、いったん積むとなかなかまとめて見る機会が無くてにゃー。それにしてもfoltiaには5年以上お世話になってるのね。ありがたや。

OpenWRT for Nexx WT1520

目標は、WT1520に挿したUSBメモリに入ってる地デジTSを、Androidで快適に観ること。多少面倒で良ければ、そのままでもOKだけど、

  • SMBだと激遅
  • FTPだとFFW/RWDが今いち、また(プレイヤーのせいかもしれんが)途中で固まる
  • DLNAは動いてない(backdoorのtelnetでログインしてみたら、upnpdは動いてるがこれはたぶんポート解放絡み、minidlna.confはあるけどminidlnaバイナリが無い)

というわけで、いつものオレオレDLNAサーバを組み込んだfirmwareを作ってみたい。ひとまずは普通のHTTPサーバが動けばいいかな。

環境構築

VirtualBox上に、lubuntu-14.04.1_x86をインストール。特に工夫もなし。

Synapticで、make、git、subversion、openssh-serverを追加。
一度リブートして、puttyからsshして続き。

レポジトリ展開

勝手が判らんので、素直にWiKiの通り
http://wiki.openwrt.org/doc/howto/buildroot.exigence

$ sudo apt-get install git-core build-essential

$ git clone git://git.openwrt.org/openwrt.git

$ cd openwrt
$ ./scripts/feeds update -a
$ ./scripts/feeds install -a

WT1520向けのパッチをあてる。ただしpastebinにあるパッチは、何故か向きが逆。
パッチを眺めながら手で編集した。
https://forum.openwrt.org/viewtopic.php?pid=246678#p246678

オリジナルの方も参考に。
https://github.com/hackruu/nexx-wt1520-openwrt

ビルド準備の準備

さて

$ make defconfig
Checking 'working-make'... ok.
Checking 'case-sensitive-fs'... ok.
Checking 'getopt'... ok.
Checking 'fileutils'... ok.
Checking 'working-gcc'... ok.
Checking 'working-g++'... ok.
Checking 'ncurses'... failed.
Checking 'zlib'... failed.
Checking 'gawk'... failed.
Checking 'unzip'... ok.
Checking 'bzip2'... ok.
Checking 'perl'... ok.
Checking '/usr/bin/python2.7'... ok.
Checking 'wget'... ok.
Checking 'git'... ok.
Checking 'gnutar'... ok.
Checking 'svn'... ok.
Checking 'openssl'... ok.
Checking 'gnu-find'... ok.
Checking 'getopt-extended'... ok.
Checking 'file'... ok.
Checking 'non-root'... ok.

Build dependency: Please install ncurses. (Missing libncurses.so or ncurses.h)
Build dependency: Please install zlib. (Missing libz.so or zlib.h)
Build dependency: Please install GNU awk.

Prerequisite check failed. Use FORCE=1 to override.
make: *** [tmp/.prereq-build] エラー 1

無いものは、Synapticから適当に検索して、libncurses5-dev、zlib1g-dev、gawkを追加。
もう一度 defconfigして。。OK

$ make prereq
$ make menuconfig

う。Target Profileに、NEXX WT-1520が出てこない。。。Wikiの下の方に、

After add a new board, you may should clean the tmp folder first.

とあるので、tmpを消してmake menuconfigすると選択肢に出てきた。
http://wiki.openwrt.org/doc/devel/add.new.device

ビルド準備

Target System: Ralink RT288x/RT3xxx
Subtarget: RT3x5x/RT5350 base board
Target Profile: NEXX WT-1520

パッケージは下記を参考に適当に。
https://github.com/hackruu/nexx-wt1520-openwrt/blob/master/build.sh

ビルド

$ make kernel-menuconfig

良く分からんので、そのまま終了して保存。

https://github.com/hackruu/nexx-wt1520-openwrt
のFILES_1520の下を、openwrt/filesとしてコピー。

$ make defconfig
$ make V=99

EXT-X-BYTERANGE 続き

HDX8.9のSilkとNexus7のブラウザで実験。PT2で録画した地デジ.TSをそのまま使った。

HDX8.9

byte-rangeでGETしに来てるようだけど、途中で止まる。
そこまで音は出るけど、画が出ない。やっぱりMPEG4にしないとダメ?

Nexus7

音も画も出ない。。。

結論:いまいち

手元に、MPEG4をTSにつっこんだファイルがあれば、10秒ごとにファイルを個別に
切り刻まなくてもいける、ってことですかね。

EXT-X-BYTERANGE

え。いつの間にこんなの出来るようになってたの?

http live streaming - How to create byte-range m3u8 playlist for HLS? - Stack Overflow

かつて、無理矢理これをやるために

#EXTM3U
#EXTINF:10.0,
segment.php/TV.ts/0/75232/.ts
#EXTINF:10.0,
segment.php/TV.ts/75233/150466/.ts
#EXTINF:10.0,
segment.php/TV.ts/150467/225699/.ts

みたいな、部分を返すPHPかました形でplaylistを出してみたりしてたのだけど、そんなのなくても、
この形式で出力してやればクライアントが勝手にbyte-rangeでGETしてくれるってことだよね、たぶん。
試してみるか。