このブログを検索

ラベル pt2 の投稿を表示しています。 すべての投稿を表示
ラベル pt2 の投稿を表示しています。 すべての投稿を表示

2012-08-08

epgdumprにパッチをあてる

以前pt2をインストール手順を記載した際、epgdumprは素のまま入れてパッチをあてませんでした。
今回はubuntuやrecpt1のアップグレードにあわせてパッチを当ててみようと思います。

参考:
http://mizupc8.bio.mie-u.ac.jp/pukiwiki/index.php?%E5%9C%B0%E3%83%87%E3%82%B8%2FKTV-FSUSB2

まずはパッチをダウンロードしてubuntuのワークフォルダにコピーします

http://www.honeyplanet.jp/epgdumpr2-utf8_segv.patch.gz
SEGV対策パッチ

http://www.mediafire.com/2sen
DTV→
up0246.zip
epgdump r2 184byte オーバーフロー修正パッチ (fix_overflow_184.patch)
up0248.zip
epgdump r2 セクション読み込みオーバーフロー修正&ファイルオープン状況確認パッチ
(fix_overflow_maxseclen.patch)



次にパッチを当ててからmake

$ wget "http://www.mda.or.jp/epgrec/index.php?plugin=attach&refer=%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E5%89%8D%E3%81%AE%E6%BA%96%E5%82%99&openfile=epgdumpr2-utf8.tar.gz" -O epgdumpr2-utf8.tar.gz
$ tar -zxvf epgdumpr2-utf8.tar.gz
$ wget http://www.honeyplanet.jp/epgdumpr2-utf8_segv.patch.gz
$ gunzip epgdumpr2-utf8_segv.patch.gz
$ unzip up0246.zip
$ unzip up0248.zip
$ cd epgdumpr2
$ patch -p1 < ../fix_overflow_184.patch
$ patch -p1 < ../fix_overflow_maxseclen.patch
$ patch -p1 < ../epgdumpr2-utf8_segv.patch
$ make

ここでエラーが出た
eit.c:295:31: error: array subscript is above array bounds [-Werror=array-bounds]
cc1: all warnings being treated as errors
make: *** [eit.o] エラー 1

http://baalzephon.dyndns.org/tech/index.php?Linux%2F%E3%83%86%E3%83%AC%E3%83%93%E9%96%A2%E9%80%A3%2Fepgrec
を参考にパッチを当てた
パッチを作りました→epgdumpr2-utf8_arraybounds.zip

ワークフォルダに移動して
$ wget --trust-server-names http://db.tt/iE8qfFka
$ unzip epgdumpr2-utf8_arraybounds.zip
$ cd epgdumpr2
$ patch -p1 < ../epgdumpr2-utf8_arraybounds.patch

リトライ
$ rm *.o
$ make
$ sudo make install
成功!

動作確認
$ recpt1 --b25 --strip 22 30 test.ts
$ epgdump test test.ts - | less


【アースソフト】地デジチューナー PT3 Rev.A
【アースソフト】地デジチューナー PT3 Rev.A
価格:13,860円(税込、送料別)

2012-08-06

12.04でpt2再インストール(httpサーバー版に変更)

Ubuntuを12.04にした関係でpt2周りがおかしくなったのを機に
最新版を入れなおしてみました。
また、今までとは違う派生パッケージを入れてみました。
今まではhttp://hg.honeyplanet.jp/pt1/の新本家を使っていたのですが
httpサーバーとしてリアルタイム視聴もできるhttpサーバー版を採用。
(例によってpt2周りはシミュレーションだったりb-casなしだったりの情報とします)

まずは既に入っていて邪魔しそうなものをアンインストール
arib25(方法が正しいかは不明)
$ sudo updatedb
$ locate arib25
にて表示されるarib25関連ファイルを削除する

pt1のdriver
$ rmmod /lib/modules/`uname -r`/kernel/drivers/video/pt1_drv.ko

Ubuntu10.10以降の場合、求めているchardev版ではなくdvb版のドライバがロードされてしまうらしいので
$ sudo vi /etc/modprobe.d/blacklist.conf
最後の行に
blacklist earth-pt1
を追記する

必要なパッケージを入手
$ sudo aptitude install build-essential

arib25同梱のパッケージをダウンロード
$ wget http://hg.honeyplanet.jp/pt1/archive/c44e16dbb0e2.zip

http://www.mediafire.com/2sen
から
up0319.zip (recpt1のhttpサーバー版RC4
up0307.zip (recpt1パッチ
up0340.zip (recpt1パッチ
をダウンロード

http://baalzephon.dyndns.org/tech/index.php?Linux%2F%E3%83%86%E3%83%AC%E3%83%93%E9%96%A2%E9%80%A3%2FPT2
からpt1_pci.c.tgz(パッチ適用済)をダウンロード (recpt1パッチ

http://d.hatena.ne.jp/katauna/20111225/1324810159
からrecpt1_epg_slim.tar.gzをダウンロード (recpt1パッチ

Ubuntu12.04標準パッケージだとpt2が動かないため古いパッケージを入れなおす
$ sudo aptitude install pcscd=1.5.5-3ubuntu2.1 libpcsclite1=1.5.5-3ubuntu2.1 libccid=1.3.11-1 pcsc-tools=1.4.16-1 libpcsclite-dev=1.5.5-3ubuntu2.1

古いパッケージを固定する
$ sudo aptitude install wajig
$ sudo wajig pcscd libpcsclite1 libccid pcsc-tools libpcsclite-dev

arib25インストール
$ cd
$ unzip pt1-c44e16dbb0e2.zip
$ cd pt1-c44e16dbb0e2/arib25
$ make
$ sudo make install

pt1driverインストール
$ cd
$ unzip up0319.zip
$ tar xvfz pt1_pci.c.tgz
$ cp pt1_pci.c ./pt1-http-rc4_fix/driver/.
$ cd pt1-http-rc4_fix/driver
$ make
$ sudo make install
$ sudo modprobe pt1_drv
一旦電源OFF→再起動した方が良いという説も

recpt1インストール
$ cd
$ unzip up0307.zip
$ cd pt1-http-rc4_fix/
$ patch -p1 < ../pt1-http-rc4-fix-pmt-scan.diff

$ cd
$ unzip up0340.zip
$ cd pt1-http-rc4_fix/recpt1/
$ patch -p0 < ../../patch/bs.patch

$ cd
$ tar xvzf recpt1_epg_slim.tar.gz
$ cd pt1-http-rc4_fix/recpt1/
$ patch -p0 < ../../recpt1_epg_slim/recpt1_epg_slim.patch

$ cd
$ cd pt1-http-rc4_fix/recpt1/
$ ./autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install

動作確認
$ recpt1 --b25 --strip --sid hd 25 30 test.ts
ここで--b25と--stripがunrecognizedと出る場合はarib25のインストールがうまくいっていない

httpサーバーとして動作させる場合は
$ recpt1 --b25 --strip --http 8888
とする。実際にデーモン起動の場合は
$ recpt1 --b25 --strip --http 8888 > /dev/null 2>&1
とする。
※チャンネルは受信側で指定する

epgrec動作確認
$ OUTPUT=test.ts CHANNEL=25 DURATION=30 TUNER=0 MODE=0 TYPE=GR /var/www/epgrec/do-record.sh
$ /var/www/epgrec/getepg.php

最後にhttpサーバーからの受信を行う

クライアントにはTVTestを用いる
http://tvtest.zzl.org/から最新版を入手。特に理由がなければx86版でいいらしい。

プラグインが必要で
http://www.mediafire.com/2senからup303(BonDriver_HTTP.dll)を入手。
TVTest.exeと同じフォルダに入れる。
BonDriver_HTTP.iniにチャンネル設定を行う
中身を見れば設定方法はだいたいわかる。
pathのallは帯域が厳しければhdにすると少しはマシになるかもしれない。

TVTest.exeを実行
初期設定では
ドライバ:BonDriver_HTTP.dll

これで受信ができるはず。
なお、vlcなどの通常のストリームクライアントから受信する場合は、
URLとして
http://ホスト名orIP:8888/チャンネル/SID
例:
http://192.168.1.123:8888/25/all
で受信可能。
all, hd, sd1, sd2, sd3, 1segなどが使用できるらしい。


参考:
http://kopemon.wordpress.com/2010/12/24/recpt1-http%E3%82%B5%E3%83%BC%E3%83%90%E3%83%BC%E7%89%88%E3%81%AB%E3%81%A4%E3%81%84%E3%81%A6/
http://www.castanet.homeip.net/~tos/wiki/index.php?FreeBSD%A4%C7%C3%CF%A5%C7%A5%B8%A5%D3%A5%C7%A5%AA%A5%B5%A1%BC%A5%D0
http://webcache.googleusercontent.com/search?q=cache:eG_WdU3uJ6IJ:asakaryo777.blog39.fc2.com/blog-entry-192.html+&cd=3&hl=ja&ct=clnk&gl=jp


【送料無料】Ubuntu Magazine Japan(vol.05)
【送料無料】Ubuntu Magazine Japan(vol.05)
価格:1,155円(税込、送料別)
Ubuntu上級活用マニュアル/阿久津良和
Ubuntu上級活用マニュアル/阿久津良和
価格:3,129円(税込、送料別)

Ubuntu10.04 -> 12.04(2/2)

12.04へのアップグレードについて、part1の状態でいくつか問題がありました。
・ubuntu起動スプラッシュが10.04のまま
・結構な数のパッケージが依存エラー
・(b-casなしで試しに入れてる)pt2やmysqlなんかが動かない

試行錯誤の結果なんとか復旧した模様ではあるのですが、直接の原因は不明。
個人的な感触としては原因は
「12.04へのアップグレード時にmediaubuntuの最新パッケージリポジトリが参照できなくて依存関係が破壊された」です。

というわけで、この段階で同様のエラーが起きている人は今後のアクション方針を定めた方が良いです。
1.このブログを無視する
2.「今思えばこうすればよかったかも」を実施
3.このブログ通りに試行錯誤する
4.アップグレードを諦めてバックアップをリカバリする

2.「今思えばこうすればよかったかも」について
エラーが起きる前に対策できれば良さそうですがよくわからない。しかしきっとこれが原因。
エラーが起こって再起動した後、、、mediabuntuの最新リポジトリを登録する。
$ sudo wget --output-document=/etc/apt/sources.list.d/medibuntu.list
http://www.medibuntu.org/sources.list.d/$(lsb_release -cs).list
$ sudo aptitude update
$ sudo aptitude install medibuntu-keyring
$ sudo aptitude update
$ sudo aptitude upgrade

これをしておけばエラー解決も早い・・・はず

以降、試行錯誤の記録。

12.04アップグレード後、pt2を実行してみたところ。。。
$ recpt1 --b25 --strip 22 30 test.ts
using B25...
enable B25 strip
pid = 12319
Cannot tune to the specified channel
エラーが出ることに気づく。

さらに、
$ sudo apt-get install -s
としてみたところ
以下の問題を解決するために 'apt-get -f install' を実行する必要があるかもしれません:
以下のパッケージには満たせない依存関係があります:
gnome-keyring: 依存: libgtk-3-0 (>= 3.0.0) しかし、インストールされようとしていません
依存: libcap2-bin しかし、インストールされようとしていません
libgcr-3-1: 依存: libgtk-3-0 (>= 3.1.4) しかし、インストールされようとしていません
依存: libgcr-3-common しかし、インストールされようとしていません
libgnome-keyring0: 依存: libgnome-keyring-common (= 3.2.2-2) しかし、インストールされようとしていません
libgtk2.0-0: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libx11-dev: 依存: libx11-6 (= 2:1.4.99.1-0ubuntu2) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
推奨: libx11-doc しかし、インストールされようとしていません
libxcomposite1: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libxdamage1: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libxext6: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libxfixes3: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libxi6: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libxinerama1: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
libxrender1: 依存: libx11-6 (>= 2:1.4.99.1) しかし、2:1.3.2-1ubuntu3 はインストールされようとしています
python-gconf: 依存: python2.7 しかし、インストールされようとしていません
依存: python (>= 2.7) しかし、2.6.5-0ubuntu1 はインストールされようとしています
依存: python-gobject-2 (>= 2.17.0) しかし、インストールされようとしていません
python-gi: 依存: python2.7 しかし、インストールされようとしていません
依存: python (>= 2.7.1-0ubuntu2) しかし、2.6.5-0ubuntu1 はインストールされようとしています
python-gnome2: 依存: python2.7 しかし、インストールされようとしていません
依存: python (>= 2.7.1-0ubuntu2) しかし、2.6.5-0ubuntu1 はインストールされようとしています
依存: python-gobject-2 (>= 2.17.0) しかし、インストールされようとしていません
python-gobject: 依存: python-gobject-2 しかし、インストールされようとしていません
python-gtk2: 依存: python2.7 しかし、インストールされようとしていません
依存: python (>= 2.7.1-0ubuntu2) しかし、2.6.5-0ubuntu1 はインストールされようとしています
依存: python-gobject-2 (>= 2.21.3) しかし、インストールされようとしていません
python-gtksourceview2: 依存: python2.7 しかし、インストールされようとしていません
依存: python (>= 2.7) しかし、2.6.5-0ubuntu1 はインストールされようとしています
E: 未解決の依存関係です。'apt-get -f install' を実行してみてください (または解法を明示してください)。

と大量にエラーが。
初めてのエラーだったのでよくわからず、大量にパッケージを削除してみたり強制インストールしてみたりしたがどうにもならず。(というかかなりコアなパッケージまで削除しはじめることになり途中で断念)
他にも古いバージョン指定でインストールとかも試みたけど無理。
最終的にはうまくいき、結局何がよかったのかは不明だけど、次の3つが重要だったと思う。

$ sudo aptitude safe-upgrade
これで12.04になりきれていないパッケージをアップグレードしていく。
スプラッシュもこれで更新された。

確かaptitudeだったと思うが以下のエラーメッセージがでたのでそのディレクトリを手動で削除しておいた。
rmdir: `/var/lib/defoma/fontconfig.d/' を削除できません: ディレクトリは空ではありません

以下のエラーメッセージがapt-getやaptitudeの度に出ていた
E: 'python2.7-minimal' の即時設定は動作しません。詳細については man 5 apt.conf の APT::Immediate-Configure の項を参照してください。(2)
何とかするために
$ sudo aptitude safe-upgrade -o APT::Immediate-Configure=0
というコマンドを実行することで解消できた。

この3つをやってからはとんとん拍子に依存関係が回復していった。


上記にてまずは12.04へのアップグレードが完了し、次にpt2周りを復旧させた。

$ sudo aptitude install libccid pcsc-tools libpcsclite-dev
などをしていると
SCardEstablishContext: Service not available.
というエラーメッセージが出てしまった。
これは
$ sudo aptitude install pcscd
にて復旧した。

次にpcsc_scanをしたがWaitingから進まなくなっていた
$ pcsc_scan
PC/SC device scanner
V 1.4.18 (c) 2001-2011, Ludovic Rousseau <ludovic.rousseau@free.fr>
Compiled with PC/SC lite version: 1.7.4
Using reader plug'n play mechanism
Scanning present readers...
Waiting for the first reader...
USBとしては認識はしているのに・・・
$ lsusb

Bus 003 Device 002: ID 04e6:511a SCM Microsystems, Inc.

これはどうやら最新パッケージを使用しているとだめらしく、古いパッケージをインストールすることで対処した。

$ sudo aptitude install pcscd=1.5.5-3ubuntu2.1 libpcsclite1=1.5.5-3ubuntu2.1 libccid=1.3.11-1 pcsc-tools=1.4.16-1

うちのSCR3310-NTTComの場合、ランプが点滅したら成功らしい。確かに点灯していたのが点滅に変わった。

参考:
http://aqua-linux.blog.so-net.ne.jp/2012-03-25
http://desktoplinuxhowto.blogspot.jp/2012/04/ubuntu-1204-lts-pt21110.html


次に、どうやらarib25がうまく動かなくなっていたようなので入れなおした。
アンインストール方法がわからなかったので無理矢理削除
$ sudo updatedb
$ locate arib25
これで表示されたarib25関係らしきものをすべて削除

次に、recpt1を再ビルドしたらエラーメッセージが出た
decoder.h:26:5: エラー: 不明な型名 ‘uint8_t’ です
これも古いパッケージをインストールすることで対処した。
$ sudo aptitude install libpcsclite-dev=1.5.5-3ubuntu2.1

次に、mysqlがいつものエラーを出して動かなくなっていた
$ sudo service mysql stop
stop: Unknown instance:
$ sudo service mysql start
start: Job failed to start
以前の対処(http://xelalko.blogspot.jp/2011/09/mysql.html)を試みるも復旧せず。
これはどうやら最新mysqlでは設定項目が変わったみたいで、古い設定項目があるせいで動かなかったらしい。(ログを見ればすぐに分かったかもしれない)

$ sudo vi /etc/mysql/my.conf
[mysqld]セクションのdefault-character-setをcharacter-set-serverに名前変更する。
さらにこれらは最近は使わないほうがいいらしい
skip-character-set-client-handshake
init-connect = SET NAMES utf8
またこれはどうやら初期値っぽいのであえて設定する必要はないらしい
collation-server = utf8_general_ci
さいごに
$ sudo /etc/init.d/mysql restart


次に、apache2周りでエラメッセージが出ていた
Could not reliably determine the server's fully qualified domain name, using 127.0.0.1 for ServerName
これはどうやらapache.confにサーバー名を書いていないことが問題らしく
$ sudo vi /etc/apache2/apache.conf
ServerName ホスト名:ポート番号
と記載して
$ sudo /etc/init.d/apache2 restart


こんな感じで12.04へのアップグレードが完了した。
その後は特に問題は出ていない。大変なアップグレード作業であった・・・。


【送料無料】Ubuntu Magazine Japan(vol.05)
【送料無料】Ubuntu Magazine Japan(vol.05)
価格:1,155円(税込、送料別)
Ubuntu上級活用マニュアル/阿久津良和
Ubuntu上級活用マニュアル/阿久津良和
価格:3,129円(税込、送料別)

Ubuntu10.04 -> 12.04(1/2)

現在私はUbuntu10.04(LTS)を入れているのですが
同じくLTSである12.04がリリースされています。
時間があったのでアップグレードしてみました。

結論としては
・エラーが出たがアップグレード自体は成功したっぽい
・pt2が動かなくなったけどなんとか復旧
です。
恐らくエラーが出たのはpt2やmediabomb周りのパッケージからだと思います。
とりあえずはアップグレード手順を記録します。
これまで9から10へアップグレードもしているし他のサイトを参考にしているので手順に間違いは無いと思うのですが、エラーが出ているのであくまで参考程度にした方が良いと思われます。
もし同じくエラーが出ている場合はpart2の記事も併せてどうぞ。

基本的には以前の9.10->10.04と同じです。

メモ帳: Ubuntu9.10 -> 10.04.1

まずは現バージョンを確認
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 10.04.4 LTS
Release: 10.04
Codename: lucid
以前は10.04.1でしたがいつの間にか上がっていたようです。

リリースを上げる前にパッケージを最新に上げます。
$ sudo apt-get update
$ sudo apt-get upgrade

保留されたパッケージのうち、削除されるものがないか確認
$ apt-get -s dist-upgrade

保留をインストール
$ sudo apt-get -u dist-upgrade

念の為再度アップグレード
$ sudo apt-get update
$ sudo apt-get upgrade

アップデータのインストール
$ sudo apt-get install update-manager-core
これは前回入れたので既にあった

今回はLTSである12.04を入れたいので
/etc/update-manager-release-upgrades
の中が
Prompt=lts
になっていることを確認、もしnormalになっていたならltsに変更する

ようやくアップグレード開始
sshよりはコンソールの方が推奨されているのでそうする。
私は最初sshでやってたらsshアプリケーションの問題か、
選択肢をカーソルで選ぶ画面で先に進めなくなってしまってやり直した。
$ sudo do-release-upgrade --devel-release
LTSからは通常リリースを更新できないらしいので--devel-releaseオプションを付ける

いつものようにsambaやmysqlのconfigファイルが競合するので解決する

競合が発生したファイル
/etc/sysctl.conf
/etc/mysql/my.conf
/etc/samba/smb.conf
/etc/apparmor.d/usr.sbin.mysqld
競合があった場合は[Z]でシェルに戻れる
なのでバックアップをとって新規ファイルをとりあえずインストールした。
そしてあとで差分を比較して修正した。


途中でA fatal errorが発生した
Errors were encountered while processing:
fontconfig-config
libfontconfig1
Error in function:
らしい
どうしようもないので[C]でキャンセルした。

何度か質問に答えながらようやく完了メッセージ
The upgrade has completed but there were errors during the upgrade process.
で完了した。

で、エラーをどないせいと・・・今回は無かったことにします。



結果確認
$ lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 12.04 LTS
Release: 12.04
Codename: precise
ちゃんとアップグレードできました
今度のcodenameはpreciseというみたいです

先程競合が発生したファイルを確認してみたところ・・・

/etc/sysctl.conf
=>以前入れたiptablesのスクリプトで自動追記されるものっぽいので新規confを採用
/etc/mysq./my.conf
=>日本語設定がなくなったのでそこだけマージ
/etc/samba/smb.conf
=>特に新変数があるわけでもないので旧confを採用
/etc/apparmor.d/usr.sbin.mysqld
=>mysqlのディレクトリを移動した際の変更がなくなったのでそこだけマージ


ここで一旦リブートする
$ sudo shutdown -r now

再起動中、
なぜかスプラッシュのバージョンが10.04・・・

最後に/etc/sysctl.confをリフレッシュするために以前作ったiptablesスクリプトを実行する
cd /home/root/iptables_register/
sudo iptables.sh
数分後に処理完了

$ more /etc/sysctl.conf
にて末尾に
net.ipv4.tcp_syncookies=1
net.ipv4.icmp_echo_ignore_broadcasts=1
net.ipv4.conf.all.accept_redirects=0
net.ipv4.conf.default.accept_redirects=0
net.ipv4.conf.eth0.accept_redirects=0
net.ipv4.conf.lo.accept_redirects=0
net.ipv4.conf.all.accept_source_route=0
net.ipv4.conf.default.accept_source_route=0
net.ipv4.conf.eth0.accept_source_route=0
net.ipv4.conf.lo.accept_source_route=0
がつけばOK



参考:
https://wiki.ubuntu.com/PrecisePangolin/ReleaseNotes/ja/UbuntuServer https://wiki.ubuntulinux.jp/UbuntuTips/Install/UpgradeLucid
http://webcache.googleusercontent.com/search?q=cache:Fa4WYXcr1kIJ:d.hatena.ne.jp/takuya_1st/20090527/1243391239+&cd=6&hl=ja&ct=clnk&gl=jp

続く
【送料無料】Ubuntu Magazine Japan(vol.05)

【送料無料】Ubuntu Magazine Japan(vol.05)
価格:1,155円(税込、送料別)

Ubuntu上級活用マニュアル/阿久津良和

Ubuntu上級活用マニュアル/阿久津良和
価格:3,129円(税込、送料別)

2012-01-26

tsをmp4に変換する(pt2編)

以前、ts->mp4をwindowsで変換する方法を紹介しましたが、
今回はそれをUbuntuで、しかもpt2で録画したあとそのまま変換する方法です。

例によってpt2絡みはシミュレーションにつき、間違いがあったらすみません。
ffmpegの使い方は大丈夫だと思いますが。


変換の流れはこうです。

1. do-record.sh(epgrec)によってpt2が録画を行う
2. do-record.shがそのままffmpegで録画ファイルを変換する

1.で一旦tsファイルが作成されるので、リアルタイムにmp4に変換できるわけではありません。
今回は圧縮率をあまり考慮せず、とにかくそのままmp4へ変換することを主眼においたのですが、ウチの環境で30分番組が変換に2時間以上ってところでしょうか。

録画と変換が同時に走るとあまりよくないかなと思い、時間はあまりかけない方針です。
高性能なマシンであればもっと画質を上げ、圧縮率もあげられると思います。

参考:

ffmpegをインストール
mp4変換にはffmpegを使います。
これについてはmediatombで書いた記事を参照
http://xelalko.blogspot.com/2011/08/ubuntudlna3.html

ffmpegの設定ファイルを作成
ts->m4の変換に使う設定ファイルを作成します。
もともといくつか用意されてあり、それらが
/usr/share/ffmpeg/* に格納されています。
今回は「時間優先」「サイズは30分1G未満であればとりあえず」ということで
一番画質が悪くて速そうなlibx264-fastfirstpass.ffpresetを使います。
※ libx264-lossless_fast.ffpreset も速そうな感じだからまた試そう

高画質なものならhqや下記サイトを参考
http://d.hatena.ne.jp/munepi/20091227/1261941397


カスタマイズする場合は下記サイトなど、色々検索しないと情報見つからない・・・
http://mobilehackerz.jp/archive/wiki/index.php?%BA%C7%BF%B7ffmpeg%2F%A5%D3%A5%C7%A5%AA%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3
http://mobilehackerz.jp/archive/wiki/index.php?%BA%C7%BF%B7ffmpeg%2F%B9%E2%C5%D9%A4%CA%A5%AA%A5%D7%A5%B7%A5%E7%A5%F3

ts->mp4スクリプトを作成
ffmpegを呼び出して変換を行うスクリプトを作成します。
変換には引数が多いのでほぼ必須。
$ sudo touch /usr/local/bin/ts2mp4.sh
$ sudo vim /usr/local/bin/ts2mp4.sh
$ sudo chmod 755 /usr/local/bin/ts2mp4.sh
中身は次のとおりにする
#!/bin/bash

TS=$1 
FFPRESET=/usr/share/ffmpeg/libx264-fastfirstpass.ffpreset
#FFPRESET=/usr/share/ffmpeg/libx264-hq.ffpreset
#FFPRESET=/usr/share/ffmpeg/libx264-hq-ts.ffpreset
#FFPRESET=/usr/share/ffmpeg/libx264-lossless_fast.ffpreset

#RESIZE=1440x1080
#RESIZE=960x540
#RESIZE=720x480
RESIZE=512x288
ASPECT=16:9
#ASPECT=3:2

FILEDIR=${TS%/*}
FILENAME=${TS##*/}
FILENAMEBODY=${FILENAME%.*}
FILENAMEEXTENTION=${FILENAME##*.}

#BASE=$(basename ${TS} .ts)
#[ "${FILENAMEBODY}.ts" = "${FILENAME}" ] || exit 1

#CPU_CORES=0
CPU_CORES=$(/usr/bin/getconf _NPROCESSORS_ONLN)

X264_HIGH_HDTV="-f mp4 -vcodec libx264 \
    -vpre ${FFPRESET} -flags +ilme+ildct -top -1 \
    -r 30000/1001 -aspect ${ASPECT} -s ${RESIZE} -bufsize 20000k -maxrate 25000k \
    -acodec libfaac -ac 2 -ar 48000 -ab 128k -threads ${CPU_CORES} \
    -cqp 25 -vsync 1"

ffmpeg -y -i $TS ${X264_HIGH_HDTV} ${FILEDIR}/${FILENAMEBODY}.mp4

exit
あんまりよくわかってないのですが、とりあえずこれで使えています。
bashスクリプトのチェック
$ /bin/bash -n ts2mp4.sh
場合によってはUTF8にしたらエラーがなくなったケースもあります

試しに変換してみる
$ ts4mp4.sh ~/test.ts
これで~/test.mp4ができているはず。ちゃんと再生できるかも要チェック。

ffmpeg引数の-sと-aspectについては
http://aquaspread.g.ribbon.to/index.phpの映像サイズ(アスペクト比)という欄の数値を入れればよさそう?
とりあえずKindle Fireでうまく表示できる設定で示します。
Kindle FIreとGOM Playerが同じみたい。
VLCは違うっぽい?VLCの時だけ手動でアスペクト比を調整して下さい。


do-record.shを複数録画モード対応にする
do-record.shをカスタマイズし、通常のTS録画以外に圧縮録画モードを追加します。
今回は更に圧縮&録画フォルダ変更モードも追加します。
※録画一覧からの録画ファイル削除には恐らく対応しません

$ sudo vim /var/www/epgrec/do-record.sh
中身を次のようにする

#!/bin/bash
# $ OUTPUT=test.ts CHANNEL=22 DURATION=30 TUNER=0 MODE=0 TYPE=GR /var/www/epgrec/do-record.sh
# define tools
RECORDER=/usr/local/bin/recpt1
B25=/usr/local/bin/b25
TS2MP4=/usr/local/bin/ts2mp4.sh
# echo arguments
echo "CHANNEL : $CHANNEL"
echo "DURATION: $DURATION"
echo "OUTPUT  : $OUTPUT"
echo "TUNER : $TUNER"
echo "TYPE : $TYPE"
echo "MODE : $MODE"
# check path
RECDIR=${OUTPUT%/*}
RECNAME=${OUTPUT##*/}
RECNAMEB=${RECNAME%.*}
RECNAMEE=${RECNAME##*.}
# fix directory
if [ "${RECDIR}" = "${RECNAME}" ]; then
    RECDIR=`pwd`
    OUTPUT=${RECDIR}/${RECNAME}
fi
# set recording directory of each mode
OUTPUTDIR0=${RECDIR}
OUTPUTDIR1=${RECDIR}
OUTPUTDIR2=/var/www/epgrec/video/mode2
#    case ${TYPE} in
#        BS)
#        ;;
#        GR)
#        ;;
#    esac
## do-record [output]
do-record ()
{
    local output=$1
    $RECORDER --b25 --strip $CHANNEL $DURATION --sid hd "${output}" >/dev/null 2>&1
    return 0
}
## move-file [beforepath] [afterpath]
move-file ()
{
    local beforepath=$1
    local afterpath=$2
    mv "${beforepath}" "${afterpath}"
    echo "${afterpath}"
    return 0
}
## conv-mp4 [ts2path]
conv-mp4(){
    local ts2=$1
    local ts2path=${ts2%/*}
    local ts2name=${ts2##*/}
    local ts2nameb=${ts2name%.*}
    local mp4="${ts2path}/${ts2nameb}.mp4"
    "${TS2MP4}" "${ts2}" >/dev/null 2>&1
#    if [ -s "${mp4}" ]; then
#        rm "${ts2}"
#    else
#        # failed to convert mp4
#    fi
    echo "${mp4}"
    return 0
}
## main
case ${MODE} in
    0)
        $RECORDER --b25 --strip $CHANNEL $DURATION "${OUTPUT}" >/dev/null 2>&1
    ;;
    1)
        do-record "${OUTPUT}"
    ;;
    2)
        do-record "${OUTPUT}"
#        OUTPUT=`move-file "${OUTPUT}" "${OUTPUTDIR1}/${RECNAME}"`
        OUTPUT="${OUTPUTDIR1}/${RECNAME}"
        OUTPUT=`conv-mp4 "${OUTPUT}"`
        ;;
    3)
        do-record "${OUTPUT}"
        OUTPUT=`move-file "${OUTPUT}" "${OUTPUTDIR2}/${RECNAME}"`
        OUTPUT=`conv-mp4 "${OUTPUT}"`
        ;;
esac

MODE=0は今まで通りTS録画(epgrecとして必須)、MODE=1はHDのみ録画、MODE=2はmp4録画、MODE=3はディレクトリ移動した上でmp4録画。
mp4録画モードは変換後にtsを消してもいいけど、今回は残してある。
※ffmpegは本当に毎回変換できるのか心配・・・

試しに動作させてみる

$ mkdir /var/www/epgrec/video/mode2
※パーミッションはvideoと同じにする
$ OUTPUT=test_0.ts CHANNEL=22 DURATION=5 TUNER=0 MODE=0 TYPE=GR /var/www/epgrec/do-record.sh
$ OUTPUT=test_1.ts CHANNEL=22 DURATION=5 TUNER=0 MODE=1 TYPE=GR /var/www/epgrec/do-record.sh
$ OUTPUT=test_2.ts CHANNEL=22 DURATION=5 TUNER=0 MODE=2 TYPE=GR /var/www/epgrec/do-record.sh
$ OUTPUT=test_2.ts CHANNEL=22 DURATION=5 TUNER=0 MODE=3 TYPE=GR /var/www/epgrec/do-record.sh

これで3つのtsと2つのmp4が作成されるはず。


epgrecのモードを増やす
$ sudo vim /var/www/epgrec/config.php
$RECORD_MODE = array(
というところを次のようにする

$RECORD_MODE = array(
        // ※ 0は必須で、変更不可です。
0 => array(
        'name' => 'Full TS',
        'suffix' => '.ts',
),
1 => array(
        'name' => 'hd only',
        'suffix' => '.ts',
),
2 => array(
        'name' => 'mode 2',
        'suffix' => '.ts',
),
3 => array(
        'name' => 'mode 3',
        'suffix' => '.ts',
),
);

念の為apache再起動
$ sudo /etc/init.d/apache2 restart

以上で設定完了。
epgrecで選択できるモードが増え、mp4変換ができるようになっているはず。
うまくいかない場合はパーミッションの問題が多いかも。
shの最初を
#!/bin/bash -x
にしてデバッグモードにしてみたり、 >>を使ってログを吐いたりしてみて確認しましょう。


ちなみにいくつかのffpresetをtsファイルを用意して試してみました。
hq-tsは先に紹介したサイトのffpresetです。

元データ 約30分のアニメ.ts 2.72G

解像度720x480
fastpass 変換時間2:30 変換後455M
hq 変換時間4:00 変換後364M
hq-ts 変換時間3:40 変換後282M


解像度512x288
fastpass 変換時間2:10 変換後261M
hq 変換時間2:40 変換後215M
hq-ts 変換時間2:30 変換後165M


画質についてははっきり言って誤差の範囲でした。
サイズでいうと時間15%増しで40%くらい下がるみたいだから場合によってはいいかも。
とりあえずはfastpassでhq-tsも視野にってかんじで。

問題は、mp4変換中に他番組の録画が来たら負荷がすごそうだということ。場合によっては3,4番組のmp4変換が重なるかも。他の人だと順に処理するような仕組み作ってる人もいるので、後日取り入れてみるかな・・・。

(2012/1/29追記)
do-record.shやconfig.phpについて、mode=0でsidフラグを指定してはいけないらしいので修正。
番組情報が取得できなくなっていた。。。

2012-01-21

pt2ドライバのバージョンアップ

(20120808追記)
最新版インストール方法を更新しました
こちら→12.04でpt2再インストール(httpサーバー版に変更)

以前pt2を紹介した時、どうやらかなり古いドライバをインストールする手順だったようです。
バージョンアップする場合の手順をまとめてみました。

参考:
http://baalzephon.dyndns.org/tech/index.php?Linux%2F%E3%83%86%E3%83%AC%E3%83%93%E9%96%A2%E9%80%A3%2FPT2
http://d.hatena.ne.jp/sona-zip/20110201/p1
http://linux900.blog.fc2.com/blog-entry-32.html

pt2ドライバはもともと改造版(pt1.oyama)というものがあったようですが、
たぶん今は正式側に統合されている・・・?
更に、以前はOoops問題やKernel2.6.36対応がパッチとして公開されていたようですが、
それも統合されている・・・?
というわけで、今回も正式版をターゲットに手順を。

※あくまで想定手順でうまくいかないかもしれないので注意

すでにインストール済みのものを削除
$ rmmod /lib/modules/`uname -r`/kernel/drivers/video/pt1_drv.ko

Ubuntu10.10以降へ上げている場合は(?)
そのままだとchardev版ではなくdvb版のドライバがロードされてしまうらしい
$ sudo vim /etc/modprobe.d/blacklist.conf
最後の行に
blacklist earth-pt1
を追記すればDVB版ドライバはロードされなくなるらしい


最新版ダウンロード
pt1とrecpt1のソースをダウンロードしてくる
$ cd
$ hg clone http://hg.honeyplanet.jp/pt1/ PT2

pt1の導入
$ cd ~/PT2/driver
$ make
$ sudo make install

ドライバロード
$ sudo modprobe pt1_drv

※もしかしたら再起動した方がいいかも?

recpt1の導入
$ cd ~/PT2/recpt1
$ sh autogen.sh
$ ./configure --enable-b25
$ make
$ sudo make install

動作確認
$ recpt1 --b25 --strip --device /dev/pt1video2 25 30 ~/pt2/ch25.ts

さらに、メインの放送だけを録画する新機能の確認
$ recpt1 --b25 --strip --device /dev/pt1video2 --sid hd 25 30 ~/pt2/ch25.ts

※これでワンセグデータ等を除去できるらしい

あとは/epgrec/do-record.shでrecpt1の呼び出し部分に --sid hd を記入すれば、
普段の録画でも新機能が使えるはず。






2重シールド5C同軸ケーブル S5CFB(C)BK
2重シールド5C同軸ケーブル S5CFB(C)BK
価格:105円(税込、送料別)

2012-01-04

tsをmp4に変換する

tsファイルのアニメがあるのですが
それをKFで見るためにmp4に変換する方法を調べました(windows)

参考:http://blog.ebifunyai.com/archives/2011/02/_tsaviutl.php

1.準備
aviutil ダウンロード→aviutl99j2
適当な場所へ解凍

x264 ダウンロード→x264-r2120_win64_gpac
適当な場所へ解凍

BonTsDemux ダウンロード→up1091.zip
適当な場所へ解凍

FakeAacWav ダウンロード→up1009.zip
適当な場所へ解凍

tc2mp4Mod ダウンロード→tc2mp4Mod20080617.7z
適当な場所へ解凍

2.準備(aviutilプラグイン)
x264guiEx ダウンロード→x264guiEx_1.23.zip
次のファイルをaviutil.exeと同じフォルダに入れる
x264guiEx.auo、x264guiEx.ini、x264guiEx_stg

MPEG2 VIDEO VFAPI Plug-In ダウンロード→m2v_vfp-0.7.5a.lzh
次のファイルをaviutil.exeと同じフォルダに入れる
m2vconf.exe、m2v.vfp
m2v.vfpをm2v.auiにリネームする
m2vconf.exeを実行し
アスペクト比→無視
フィールド順→ソースフレームを維持
CPU拡張→MMX,SSE2,SSE

自動フィールドシフト インタレース解除プラグイン →afs_75a.lzh
次のファイルをaviutil.exeと同じフォルダに入れる
afs.auf

aviutl/avisynth用 AACをFAW化して読み込むプラグイン ぷれびうばん をダウンロード→up0556.zip
次のファイルをaviutil.exeと同じフォルダに入れる
aacfaw.aui

3.aviutil基本設定
aviutilを起動する
※win7等で挙動がおかしい場合は管理者実行する

ファイル→環境設定→システムの設定
最大画像サイズ:2048x2048
最大フレーム数:3200000
リサイズ設定の解像度リスト:1280x720,960x540,640x480,352x240,320x240

ファイル→環境設定→ショートカットキーの設定
[編集][選択範囲のフレーム削除]:Delete

設定→色変換の設定
入力:自動
出力:自動

設定→インターレースの解除
自動フィールドシフトをON
自動フィールドシフトの設定
解除Lv0(HD)をクリックしてから解除Lvを2に変更

設定→サイズの変更
今回は960x540を選択
iPadの限界を考慮した16:9の最大値

aviutilを一旦終了する

4.変換
BonTsDemuxでΤSからAAC音声を取り出す
BonTsDemux.exeを起動し、入力にTSを指定し
エンコード方式を"Demux(aac)にして実行する

aviutilを起動する

ファイル→開くで元のtsを指定する
GOPリスト作成とやらで少し時間がかかる

ファイル→音声読み込みでAAC音声.tsを指定する
画像とその下に波が表示されたらOK

aviutlでCMをカット編集、自動フィールドシフトを有効にする
←と→で移動、[と]で開始終了を指定、Delで指定したフレームを削除
これを使ってCMをカットする

出力する準備をする
ファイル→プラグイン出力→拡張x264出力(GUI)Ex
ビデオ圧縮に"拡張 x264 出力(GUI) Ex"をクリック
プロファイル→アニメ(高画質)
x264.exeの指定→x264.r2120_win64g.exe
FAWCheck→ON
音声エンコーダ→FakeAacWav(FAW)
fawcl.exeの指定→fawcl.exe
mp4box.exeの指定→MP4Box.exe
tc2mp4mod.exeの指定→tc2mp4Mod.exe
OKをクリック
ファイル名を指定して保存をクリック

以上でts→mp4の完成。


CMカットを省いたものをバッチファイル化できないかと思い試しに作って見ました
これから動作確認しますがとりあえず置いておきます
今後使ってみてダメそうなら改善か削除します
最初のset部分を環境にあわせて、tsファイルをbatにドロップすると変換できるはずです
画質に拘らないため、x264の画質指定のところをultrafastにしてあります。デフォルトはslowerなので画質に拘る方はslowerに変更した方がよいでしょう。ちなみにslowerだと30分アニメで45分かかりました。

pt2で録画したファイルもtsなので、以前ご紹介したソフトで録画したものでも対応できる・・・?

(20120108追記)
どうやらtsエンコについてはHandbrakeが最新版0.9.5(2011/1/3)の時点で対応していたらしい。しかしうちの環境だと3つくらい試したうち1つも成功しませんでした。ts(電波)、チャンネル、何かが悪いのか不安定なのか・・・。

(20120108追記)
ts2mp4_ultrafast.batについては現在調整中です。
リサイズオプションだと思っていたものが違っていたのでその辺を確認中。
また、ファイル名に大文字スペースがあるとBonTsDemuxがダメなようです。どうすればよいか検討中。

(20120114追記)
とりあえず良さそうなコードになった→ts2mp4_ultrafast.bat
スペース問題は面倒なので諦めw
そこそこ悪いオプションを使っているはずだけど
これ以上下げるのであれば・・・
--preset、resize、methodあたりを変更かな
※GUIでは他にも色々な処理をかけていると思われるため、とりあえずmp4化したいだけのバッチになります

補足:sarの求め方
求めたいSAR指定値⇒ x:y
ソース映像の解像度⇒ W×H
映像のアスペクト比⇒ a:b
x : y = a×H : b×W

参考:
http://pc-parts.cocolog-nifty.com/blog/2008/12/x264sar-76ab.html
http://pgkiss.web.fc2.com/tools/x264-aspect.html


2011-09-16

アンテナケーブル加工

UbuntuでPT2(1/5)にて紹介したS-5C-FBアンテナケーブルとF型コネクタですが、
実際買ってみると素人には加工がなかなか難しかったのでコツをメモしておきます。
相当数失敗しました・・・。なれると確かに簡単なのですが。


作業の詳細な説明は、ネット上に動画や解説がたくさん転がっているので割愛。
ここでは、アサヒデンキで購入した
ケーブル"S5CFB(C)BK"とF型コネクタ"FP5E"
に特化したことをメモします。

1本作るのに30分以内といったところでしょうか?


2重シールド5C同軸ケーブル S5CFB(C)BK
2重シールド5C同軸ケーブル S5CFB(C)BK
価格:105円(税込、送料別)

まず準備物
  • ケーブル
  • F型コネクタx2 (両端子につける必要があるため)
  • カッターナイフ
  • できればラジオペンチ、なければハサミ
  • 作業台としてのダンボール紙など
  • タオル (端子をはめ込む際の滑り止め)

FP5Eは特殊な加工道具は不要なので、一般家庭にありそうなものだけで足ります。
一番重要なのは慣れ(力加減)でした。

まずはさらっと説明書を読みましょう。
楽天の商品ページにFP5Eの取付説明書というリンクがあるのでそれを確認します。

ではケーブルの構造をおさらい。
S5CFBケーブルは4層の膜と銅線で成り立っています。

1層 表面の黒い膜、柔らかい
2層 銀色の金属の線で編まれた膜、結構硬い
3層 アルミ箔の膜、紙の薄さ
4層 白色の絶縁体、柔らかい
そして銅線、それなりに硬いが曲がりやすいので注意

先端近くは銅線を残して除去、端子の胴部分はアルミ箔までを残して除去します。


では順を追ってポイント解説
1. 端から7mmのところと、そこから6mmのところにカッターナイフで切れ目を入れる
説明書通りのサイズです。7mmに関しては最後にカットで調整できるため、長い分には困らないと思います。

2. 7mmのところの黒い膜をカッターナイフで除去する
台にケーブルをおきカッターナイフを当てる、その状態で力を入れてケーブルを回転させるといい感じに黒い膜に切れ目を入れることができます。
この際、力を入れすぎると銀色の膜どころか銅線まで傷つけてしまいますが、銀色の膜は結構硬いのでそうそうそこまでいきません。
最後は回したりしながら引き抜くと良いです。多少切れ目が足りなくても綺麗に引きちぎれます。

3. 白い絶縁体を切らないように、銀色の膜をカッターナイフで除去する
黒い膜と同様の切り方で基本的にはOKです。但しそれなりに力を入れないと切れません。
切れるときはプツンプツンと感触があるので、切れた瞬間に力を弱めないと絶縁体まで逝ってしまいます。(絶縁体はいいけどその奥の銅線が傷ついてしまう)
多少銀色の線が残った状態で辞めるのが吉です。
それ以上やると銅線が傷つくおそれがあり、この先はラジオペンチで除去します。


4. 残った銀色の線をラジオペンチで除去する
一本残さずラジオペンチで根元から切り取ります。
銀色の線を摘む際、アルミ箔をうっかり剥がしたりしないように注意します。

5. 白い絶縁体をカッターナイフで除去する
やはり黒い膜と同じような方法で切れ目を入れます。
絶縁体はかなりヤワいので、ケーブルを手で持ちながらカッターナイフを動かして切ってもいいと思います。
銅線を切らないように注意。
黒い膜と同じように、多少切り残しがあっても回しながら引けば綺麗に引きちぎれます。

6. 7mmのあとの6mmのところの黒い膜をカッターナイフで除去する
7mm箇所の除去と同じです。
但し、銀色の線を傷つけてはいけないので力を加減します。


7. 銀色の線を折り返す
詳しくは各種サイトの絵や動画を参照です。
調べてみたのですが、なぜ折り返す必要があるかはどこでも触れられていませんでした。
ただ、すべてのサイトで折り返すように言われているので、折り返すのが無難でしょう。
この時、綺麗に折り返すのではなく、折り返した先の黒い膜との角度が45度くらい開いた状態で止めておくと成功率が高かったです。

8. FP5Eを先端にとりあえず装着する
内部の枠を通す時にアルミ箔を折らないように、ちょっとずつ慎重に穴を通します。
通す前にアルミ箔が剥がれかけていた場合は指でペタペタ貼りつけておきます。
通すとき、上から見ながらゆっくり通せばまず折れません。
とにかく確実に通すことが重要です。
軽く引っかかって、手を離しても落ちないくらいまで挿したら一旦力を緩めます。

9. FP5Eを注意深く、深く装着する
こっから成否が分かれます。正念場です。
軽く刺した状態の端子を、ゆっくり力強くハメていきます。
ケーブルの絶縁体が、端子の表側の中の縁まで刺されば成功です。
失敗した場合は、軽く刺した状態のところからそれ以上刺さりません。
これでも一応テレビはみられるようですが、個人的には失敗扱いとしました。
また、力をいれる際に銅線を曲げないように注意です。
どうしても入らないとき、タオルを使って力いっぱいさしてみるのもいいかもしれません。


10. FP5Eの外側を上にずらした状態で、銅線が1mm出た状態までラジオペンチで切断する
この時、銅線の切り口が斜めになるのがよいそうです。
あまり短いと失敗したときにどうにもならないきがするので、
短いよりかは長いほうが調整がきいて良いと思います。

以上です。
1mで200円くらいなのはお得でした。
ついでに、端子をL型に曲げる端子もいくつか持っておくと便利でした。
S5CFBのケーブルは太くて取り回しがしづらいですからね。





次に失敗したときに端子を外す方法について。
レビューを見ている限りは一度つけたら外せなかったようなコメントがありましたが、
頑張れば外せたのでその記録もメモしておきます。
まぁかなり力と根気。

準備物
  • 失敗ケーブルF型端子付き
  • 精密ドライバ (マイナスが良さそう)、まぁ細ければ良いです
  • ラジオペンチ
  • カッターナイフ
  • タオル (端子をはめ込む際の滑り止め) 
 1 ラジオペンチで端子から出ているケーブルの長さを2~3cmくらいまで切る
長いと次の工程で力が必要です。逆に短すぎるとその先の工程で力と時間が必要です。

2. 端子の先から精密ドライバを銅線沿いに刺し、銅線+絶縁体+アルミ箔だけをケーブルから抜く
ドライバを先から刺すと、いい感じに絶縁体が抜けます。端子には銀色の膜から上が残った状態になります。
うまく抜けないときはケーブルの切った側を短くしたり引っ張ったりして、なんとか抜きます。
(5本くらいやりましたが、つまり10回くらいは困難はあってもすべて成功しています)

3. ケーブルの切った側の黒い膜をカッターナイフで縦に長く割く
端子のギリギリから一直線に割きます


4. 割いた切れ目から精密ドライバを銀色の網目に刺し、銀色の網目を引っ張り出す
こっからは殆ど力作業です。網目の間にドライバを引っ掛けて、力で端子とケーブルを離します。
方向を調整したり、ドライバを引っ掛ける位置などを変えていくと、いい感じに網目が抜けます。たいていは黒い幕の筒が残りますので、最後にその筒を端子からスポッと抜きます。


以上が、失敗したケーブルから端子を除去し、再度使えるようにするための手順です。


この方法で作ったケーブルですが、全く問題ありませんでした。
信号強度も、数千円で買ったケーブルと遜色ありません。
ただ一本だけ、角度によっては信号が途絶えてしまうモノができてしまいました。失敗原因は不明です。

注意:本来ケーブルを自作する場合は、テスター(数万円?)でケーブルがショートしていないかなど調べる必要があるそうです。火事を気にする方は大人しく加工済みのケーブルを購入したほうが良いかもしれません。





2重シールド5C同軸ケーブル S5CFB(C)BK
2重シールド5C同軸ケーブル S5CFB(C)BK
価格:105円(税込、送料別)

2011-09-10

UbuntuでPT2(携帯用)

PT2のIF、epgrecを外部公開する際、普通にやるとiモード携帯からはうまく録画できないようです。
スタイルシートが使えない・・・?他のキャリアのは不明。

で、iモード携帯からも使えるようにした入り口を作った方がいました
http://sarami.pv.s-labo.com/blog/zatta.php?itemid=104&catid=24

ここにある「iモード用のepgrec」をインストールするシミュレーションをしてみます。

Downloadからモジュールをダウンロードする
iepgrec_20101001.tar.gz

$ tar -xvzpf epgrec-20100322.tar.gz
中にあるファイルを.../epgrec/直下に置く。
./epgrec/に3ファイル、./epgrec/templates/に2ファイル入ります。

そのままだとphpにエラーが出ている?ようなので少し修正します。
$ sudo vi /var/www/epgrec/iprogramTable.php
下の方の153行目くらい?にある
$ch_options .= "where skiop!='1' ORDER BY id"
という行の上に1行挿入して
$ch_options = ""
$ch_options .= "where skiop!='1' ORDER BY id"
このようにします。
どうやら初期化されてないのに.を使っているのがだめなよう・・・?
もしかしたら対処しなくても動くかもしれないけど念のため。


あとは携帯からiprogramTable.phpに接続すればOK。
これで外部公開していれば、外出先から携帯を使って録画もできますね。
ただ、前回紹介した外部公開用セキュリティを施していると、
携帯からだと毎回パスワードをきかれてやっかいかもです。
定型文にパスワード入れるなりして対応するしかないかなぁ。






2重シールド5C同軸ケーブル S5CFB(C)BK

2重シールド5C同軸ケーブル S5CFB(C)BK
価格:105円(税込、送料別)

UbuntuでPT2(5/5)

おまけ
間違えている可能性が高いので参考程度に・・・

キーワードのバックアップ・リストア
$ sudo mysqldump -u root -p epg Recorder_keywordTbl > Recorder_keywordTbl_`date +%Y%m%d-%H%M%S`.sql
$ sudo mysql -u root -p epg < ダンプファイル名
 
局の追加
$ sudo /etc/init.d/apache2 stop
$ sudo /etc/init.d/cron stop
$ sudo vi /var/www/epgrec/config.php
ここでちゃんねるを開放する
逆にちゃんねるをコメントアウトするのはまずいかも?
$ /var/www/epgrec/getepg.php
$ sudo /etc/init.d/apache2 start
$ sudo /etc/init.d/cron start



epgrec番組表が壊れたとき
$ mysql -u root -p
mysql>use epg;
mysql>delete from Recorder_channelTbl;
mysql>delete from Recorder_programTbl;
mysql>delete from Recorder_reserveTbl;
mysql>exit;
↓を実行
http://ホスト名/epgrec/install/step1.php

epgrecのDBが壊れたとき
$ mysql -u -root -p
mysql>drop database epg;
mysql>create database epg;
mysql>grant all privileges on *.* to [username]@localhost identified by '[Password]';
mysql>exit;
↓を実行
http://ホスト名/epgrec/install/step1.php

epgrec再インストール
$ cd
$ sudo rm -r /var/www/epgrec/settings
$ mkdir /var/www/epgrec/settings
$ chmod 777 /var/www/epgrec/settings
↓を実行
http://ホスト名/epgrec/

epgrec完全再インストール
$ cd
$ sudo rm -r /var/www/epgrec/
$ sudo tar -xvzpf epgrec-20100322.tar.gz -C /var/www/
→インストール手順へ戻る

(以下、2012/1/21追記)
Ubuntuを10.10以上に上げると、使われるドライバが変わってしまう
(→動かない?)
"/etc/modprobe.d/blacklist.conf"に
blacklist earth-pt1
を追記すればDVB版ドライバはロードされなくなり、問題なくなる。(?)
その後再起動が必要だが、うまくいかない場合は電源OFF→ONすると良いらしい。
参考:http://team2ch.org/blog/?p=1103


Ubuntuを11.10に上げるとスマートカード周りのバグで動作しない
よくわからないがこの辺参照
※うちはまだ10.04
参考:http://team2ch.org/blog/?p=1103


予約済み番組の予約モード変更
$ mysql -u root -p
> use epg;
> select id,keyword,autorec_mode from Recorder_keywordTbl;
ここで該当するキーワードのidを調べて
> update Recorder_keywordTbl set autorec_mode=1 where id='調べたID';
> update Recorder_reserveTbl set mode=1 where title like "%キーワード%";


録画予約一覧に古い予約が残った場合の削除
まず録画予約一覧で古い予約のidを調べる。
$ mysql -u root -p
> use epg;
> update Recorder_reserveTbl set complete=1 where id='調べたID';





2重シールド5C同軸ケーブル S5CFB(C)BK
2重シールド5C同軸ケーブル S5CFB(C)BK
価格:105円(税込、送料別)


2011-09-09

UbuntuでPT2(4/5)

UbuntuでPT2たぶんラスト
最後に、保存領域を外付けUSBに変更します。
epgrecの保存領域はapacheで公開している範囲に限られるそうなので、
シンボリックリンクで対応したいと思います。

まずデバイスの認識から

$ sudo parted -l
モデル: ST310005 20AS (scsi)
ディスク /dev/sdc: 1000GB
というのが外付けHDDです

$ sudo parted /dev/sdc
(parted) mklabel gpt
(parted) print
→サイズを知る、1000GBだった
(parted) unit GB
(parted) mkpart video ext4 0 1000GB
(parted) unit MiB
(parted) mkpart video xfs 1 -1
(parted) quit
第一引数(video)はラベルなので何でもいい
3つ目の1は、MiBなら1から始めたほうが良いらしい?
最後の-1は終端の意味


$ sudo apt-get install xfsprogs
$ sudo mkfs.xfs /dev/sdc -f
$ sudo mkfs.xfs -f -b size=4k -i size=512 -l size=128m,version=2 /dev/sdc1


meta-data=/dev/sdc isize=512 agcount=4, agsize=7630917 blks
= sectsz=512 attr=2
data = bsize=65536 blocks=30523665, imaxpct=5
= sunit=0 swidth=0 blks
naming =version 2 bsize=65536 ascii-ci=0
log =internal log bsize=65536 blocks=2048, version=2
= sectsz=512 sunit=0 blks, lazy-count=1
realtime =none extsz=65536 blocks=0, rtextents=0

デバイスにはパーティションを指定するので注意-> sdc1
-b sizeはブロックサイズでデフォルト4kだけどわかりやすいように明示的にした
本当は64kくらいは指定できたはずだけど、4kを超えるとなぜかマウントできなかった
-iと-lの指定は速くなるらしいので一応つけてみた(ファイルコピー試してみても差はわからなかった)


マウントポイント作成
$ sudo mkdir /home/media/pt2
$ sudo chown www-data:www-data /home/media/pt2
$ sudo chmod 777 /home/media/pt2
試しにマウント
$ sudo mount -t xfs /dev/sdc1 /home/media/pt2
再起動時にマウントするようにする
$ sudo vi /etc/fstab
/dev/sdc1        /home/media/pt2 xfs defaults 0 0

シンボリックリンク作成
$ sudo ln -s /home/media/pt2 /var/www/epgrec/video
$ sudo mkdir /home/media/pt2/thumbs
$ sudo chmod 777 /home/media/pt2/thumbs
$ sudo chown www-data:www-data /home/media/pt2/thumbs
$ sudo ln -s /home/media/pt2/thumbs /var/www/epgrec/thumbs


※今回はまっさらの状態でやったけど
もし録画データがあったらだめかも。
その場合はデータベースを再作成して再セットアップか?



次にクオータを設定します。
epgrecはディスク残量を管理しないので自分でやる必要があります。
今回はソフトリミットを超えたらメール通知されるようにしてみます。

メールアドレスの設定
$ sudo vi /etc/aliases
$ sudo postalias /etc/aliases
www-data: メールアドレス
を記述する

quotaをONにする
$ sudo vi /etc/fstab
/dev/sdcの
defaults

defaults,usrquota
に変更する
※pt2の録画先

$ sudo umount /dev/sdc1
$ sudo mount /dev/sdc1
$ cat /proc/mounts | grep pt2
/dev/sdc1にusrquotaがついていればOK
※remountではダメだった
※xfsファイルシステムの場合はquotacheck不要らしい

$ quotaon -v /home/media/pt2
quotaon: Enable XFS group quota accounting during mount
quotaon: Enforcing user quota already on /dev/sdc1
こんな感じで出ればOK

xfs用quotaコマンド"xfs_quota"を管理モード(-x)で起動
$ sudo xfs_quota -x

とりあえずレポートを見てみる
xfs_quota>report -u -h /dev/sdc1

quota対象のファイルシステム一覧を表示 xfs_quota>path

対象となるファイルシステムをカレントにセット xfs_quota>path 000
www-dataユーザにソフトリミット750GB, ハードリミット800GBを設定
xfs_quota> limit bsoft=750g bhard=800g www-data
解除する場合は0に指定すればよいようだ。ちゃんとコマンドありそうだが未確認。
抜ける
xfs_quota> q


リミットが来ているユーザにメールを送信する仕組み
"warnquota"の準備をする。

デバイス情報を記述する
$ sudo vi /etc/quotatab
/dev/sdc: Your home directory
/dev/sdc1: Your home directory


以上で設定完了。
対象のファイルシステムにソフトリミットを超えたユーザファイルをおいてみる。

そして下記コマンドでメール送信。
$ sudo warnquota -s
※ちなみにメールは/etc/aliasesで設定する

メールが通知されたら、あとはwarnquotaをcronで実行するようにする。
$ sudo vi /etc/cron.daily/do-warnquota.cron
#!/bin/sh
warnquota -s


以上でquotaつき録画領域の完成です!


参考:
http://hinode.nao.ac.jp/~tonooka/SBSC/open/parted_howto.html http://ameblo.jp/kupok/entry-10792760992.html http://xoops.fens.net/modules/wiki/?Linux%2FMemo%2Fxfs%2F%E6%93%8D%E4%BD%9C%E6%96%B9%E6%B3%95 http://www.ftnk.jp/~fumi/cl/2005-11-18-8.html http://blog.stud.vg/2008/12/xfs-2tb.html http://sea-mew.jp/nox/modules/xpwiki/587.html

(追記2012/8/2) mkpartの引数間違い修正
(追記2012/8/2) mkfs.xfsコマンドの引数を変更
(追記2012/8/2) xfs_quota limitでコメントと引数が不一致だったのを修正
(追記2012/8/2)
デバイス名を/dev/sdc1ではなく/dev/sdcと記載していたのを全体的に修正
今までそれで問題なかったけど恐らく良くない状態だった
今回HDDを入れ替えるにあたりミスに気づいた



2重シールド5C同軸ケーブル S5CFB(C)BK
2重シールド5C同軸ケーブル S5CFB(C)BK
価格:105円(税込、送料別)

mysql再インストール

mysqlが起動しなくなってしまいました。
ある日、PCを再起動するとmysqlに繋がらなくなって、
サービスを起動することもできない。
mysqld_safeも無理。

↓こんな感じになります。
$ sudo service mysql start
start: Job failed to start


で、再インストールを試みたのですが、通常、
$ sudo apt-get remove php5-mysql mysql-server*
でアンインストールすれば問題なく次にインストールできるらしいんですけど、
それじゃ何度やっても解消されない。

この辺の問題?
https://bugs.launchpad.net/ubuntu/+source/mysql-dfsg-5.1/+bug/573318


超いろいろ思考錯誤した結果解決しましたので
記録を残しておきます。

結論としては、mysql-commonを再インストール。が必要でした。


影響が大きいのでまずはシミュレーション
$ sudo apt-get -s remove --purge php5-mysql mysql-server* mysql-common
削除候補にmediatombが含まれてしまうTT


設定ファイルを退避させます
$ sudo cp -r -p /etc/mysql /etc/mysql.bak
$ sudo cp -r -p /etc/mediatomb /etc/mediatomb.bak

アンインストール
$ sudo apt-get remove --purge php5-mysql mysql-server* mysql-common
未使用パッケージがあったので一応削除
$ sudo apt-get autoremove --purge
フォルダが残っているので削除
$ sudo rm -r /etc/mysql
$ sudo rm -r /var/lib/mysql

インストール
$ sudo apt-get install php5-mysql mysql-server
起動確認
$ ps ax | grep mysql
5456 ? Ssl 0:00 /usr/sbin/mysqld
mysqldが起動していたら成功

設定ファイル戻す
$ sudo cp -p /etc/mysql.bak/my.cnf /etc/mysql/.
$ sudo service mysql restart

ここまでくるのに10時間はかかったような・・・
なんにせよ解決してよかったよかった。

あとは削除されてしまったmediatomb再インストール
$ sudo apt-get install mediatomb
起動確認
$ sudo ps ax | grep meditabom
5983 ? Ssl 0:00 /usr/bin/mediatomb -c /etc/mediatomb/config.xml -d -u mediatomb -g mediatomb -P /var/run/mediatomb.pid -l /var/log/mediatomb.log
mediatombが起動していたら成功

設定ファイル戻す
$ sudo cp -p /etc/mediatomb.bak/config.xml /etc/mediatomb/.
$ sudo /etc/init.d/mediatomb restart


めでたしめでたしでした。