TV録画&エンコードサーバ構築(エンジニアリング禁断症状)
私事ですが、、育児休暇を取得して1ヶ月程エンジニアリングから離れております。
しかし性なのか、2週間もすると『Linux触りて〜!!』的な禁断症状が現れてきて
気付くと(これからは子供番組の録画が必要だよね!!)って事でこの辺り(コピペでできる録画サーバー on Linux with PT2)を参考に録画サーバを立てていました。
意外と大変だったのでメモを残しとこうかと。。
問題
AFT HDD(AFT3TB)
いまどきの最初の難関。
直接CentOS6を入れようとすると大変なだけで、OSは小容量SSDに入れて、後から追加するなら問題は無い。
- CentOS6インストーラのパーティションツールはfdisk。
- fdiskはGPTには対応してない。(よって2.2TB程度までしか扱えない)
- 普通にインストールするとfdiskでパーティション切る事にになりMBRになってしまう。
- MBRからGPTに変更する事はできない。(データが消える)
という事で、インストールDVDから普通にインストールすると詰みます。(ましたorz...)
用意するもの
- CentOS-6.2-x86_64-LiveCD
- 落としてきて焼く
- CentOS-6.2-x86_64-bin-DVD1.iso
- 同じく焼く。2は要らない模様。
手順
1.LiveCDからブート
2.terminalを起動(そのままinit 3しても良いかも)
3.parted起動
$ parted
以降partedのinteractive-mode
4.状況を確認
(parted) print free
5.パーティションテーブルを作る
(parted) mklabel gpt
6.ATFの論理セクタと物理セクタのアラインアンマッチを避ける※ここが肝!!
この辺りが詳しいです。
セクタ指定で8の倍数を指定するのが本当ですが、、サイズを計算するのが面倒なので代替案です
(parted) unit MiB
7.各パーティションを切る
# BOOT (parted) mkpart primary ext4 64s 1000 # SWAP (parted) mkpart primary linux-swap 1000 3000 # SYSTEM (parted) mkpart primary ext4 3000 43000 # DATA (-1s 最後までの意) (parted) mkpart primary ext4 43000 -1s
8.後は普通にLVM切るだけ。(省略)
faac
普通にこれでよい。
./configure --with-mp4v2
libx264
この辺りを追加した。
--extra-cflags="O4" --extra-ldflags="O4"
ffmpeg
yum版のffmepg-develを入れて--formatsでビルドオプションを確かめ、削除されたオプションを消した。(依存ライブラリをインストールする意味もある)
これらは独自ビルドしているのでyum removeしておく。
- libx264-devel
- faac-devel
speexは色々面倒だし使わないので外した。
./configure --prefix=/usr/local --disable-avisynth --extra-cflags='-O4 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -fPIC' --enable-avfilter --enable-libdc1394 --enable-libfaac --enable-libgsm --enable-libmp3lame --enable-libopencore-amrnb --enable-libopencore-amrwb --enable-librtmp --enable-libschroedinger --enable-libtheora --enable-libx264 --enable-gpl --enable-nonfree --enable-postproc --enable-pthreads --enable-shared --enable-swscale --enable-vdpau --enable-version3 --enable-x11grab --enable-pic
CS番組は4チャンネル混合?
TSは巨大過ぎるのでエンコードする事にした。
ただE-450(BIOS省電力設定)は非力なので爆速エンコ設定(低画質)しかない。
この設定でやっと30fps位出る。画質的には我慢できる程度(見て終わりの番組はこれでいい)。
更に再生も同じマシンで行うのでエンコードと重なる再生に支障が出る。
なのであえてepgrecと連携せずにcronでキックする。
地デジTSにはワンセグが混じってるし、CSチャンネルは複数の番組が混じってるのでエンコード時に対象を選択しなきゃならない。
エンコテストも含めてffmepgのオプションを手書きするのは苦痛なのでスクリプト化した。
mencode.pl(github)
こんな感じで使う。
$ ./mencode.pl -f ~/video/ディスカバリ/怪しい伝説??.ts [Program 308] - 0:3 : , yuv420p, 720x480 [SAR 32:27 DAR 16:9], 2000 kb/s, 33.91 fps, 29.97 tbr, 90k tbn, 59.94 tbc - 0:7 : , 48000 Hz, stereo, s16, 222 kb/s [Program 340] - 0:0 : , yuv420p, 720x480 [SAR 8:9 DAR 4:3], 2000 kb/s, 37.68 fps, 29.97 tbr, 90k tbn, 59.94 tbc - 0:1 : , 48000 Hz, stereo, s16, 143 kb/s [Program 307] - 0:5 : , yuv420p, 720x480 [SAR 32:27 DAR 16:9], 2000 kb/s, 48.41 fps, 29.97 tbr, 90k tbn, 59.94 tbc - 0:6 : , 48000 Hz, stereo, s16, 182 kb/s [Program 341] - 0:4 : , yuv420p, 720x480 [SAR 32:27 DAR 16:9], 2000 kb/s, 44.96 fps, 29.97 tbr, 90k tbn, 59.94 tbc - 0:2 : , 48000 Hz, stereo, s16, 139 kb/s Please select program : -p ??? or -p auto
Program:340がディスカバリチャンネルなので、これでエンコード
$ ./mencode.pl -f ~/video/ディスカバリ/怪しい伝説.ts -p 340
地デジなどは(FullHigh , ワンセグ)の順で入っているようなので、autoを指定しても大丈夫かと(auto="最初のProgram")
$ ./mencode.pl -d ~/video/地デジ -p auto
仕様
ToDo
- CMカッター
メモ
まだなんか気付いたり気が向いたら追記する。