事象の水平線

個人的ブックマーク代わりなメモ書きブログ。 地球は丸いよ。↓このへん。

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop
参考先だけ見れば事足りるので、ほとんどブックマーク的自分用メモ。

TSには色々な情報(ワンセグ、EPGとかとか)が含まれているので必要なものだけ抜き出すツール。
Windowsにはtssplitterなるものがあるらしい。
それのlinux版を誰かが作ってくれたらしい。 ありがたや。

そして、recpt1にも既に組み込まれているらしい。 ありがたや。
けど録画後に、分離するなら必要ね。ということで、インストール。


[root@NAS ~]# cd /usr/local/src
[root@NAS src]# wget http://hp.vector.co.jp/authors/VA038175/download/tssplitter_lite.zip
--2012-10-03 18:40:29-- http://hp.vector.co.jp/authors/VA038175/download/tssplitter_lite.zip
Resolving hp.vector.co.jp... 210.155.146.5
Connecting to hp.vector.co.jp|210.155.146.5|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8296 (8.1K) [application/zip]
Saving to: “tssplitter_lite.zip”

100%[======================================>] 8,296 --.-K/s in 0.004s

2012-10-03 18:40:29 (1.86 MB/s) - “tssplitter_lite.zip” saved [8296/8296]

[root@NAS src]# unzip tssplitter_lite.zip
Archive: tssplitter_lite.zip
creating: tssplitter_lite/
inflating: tssplitter_lite/Makefile
inflating: tssplitter_lite/readme.txt
creating: tssplitter_lite/tssplitter_lite/
inflating: tssplitter_lite/tssplitter_lite/Makefile
inflating: tssplitter_lite/tssplitter_lite/portable.h
inflating: tssplitter_lite/tssplitter_lite/tssplitter_lite.c
inflating: tssplitter_lite/tssplitter_lite/tssplitter_lite.vcproj
inflating: tssplitter_lite/tssplitter_lite.sln
[root@NAS src]# cd tssplitter_lite
[root@NAS tssplitter_lite]# make
cd tssplitter_lite; make all
make[1]: Entering directory `/usr/local/src/tssplitter_lite/tssplitter_lite'
gcc -Wall -O2 -g -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -c -o tssplitter_lite.o tssplitter_lite.c
tssplitter_lite.c: In function ‘ReadTs’:
tssplitter_lite.c:223: warning: pointer targets in passing argument 5 of ‘AnalyzePat’ differ in signedness
tssplitter_lite.c:53: note: expected ‘int *’ but argument is of type ‘unsigned int *’
gcc -o tssplitter_lite tssplitter_lite.o
make[1]: Leaving directory `/usr/local/src/tssplitter_lite/tssplitter_lite'
[root@NAS tssplitter_lite]# cp tssplitter_lite/tssplitter_lite /usr/local/bin

で、使い方は、
$ tssplitter_lite source.ts output.ts SID


以上!

参考:
PT2で録画したMPEG2-TSファイルをsplitしたりトランスコードをする

Debianでrecpt1によるBS/CS放送の録画

スポンサーサイト

PageTop
CentOS6.0の時も同じ様なことをしたのだけれど、ちょっと調べたらいいのがあったので参考にというか、頂いちゃいました。

参考
『ネオジェネシスふれんどり』さんの『地デジ録画サーバ(epgrec)自動起動・終了設定できたお

基本的には同じですが、多少手を入れてます。 無駄に長くなったようですが・・・

[root@NAS ~]# vi /usr/local/bin/autosuspend.sh
#!/bin/sh

# log setting
log="/var/log/autosuspend.log"
loglength="20000"

# sort works well when LANG=C
LANG=C

# if log line is ovar loglength
if [ `wc -l < $log` -gt $loglength ]; then
# cut start 10 lines
filelength=`wc -l < $log`
length=`expr $filelength - 10`
tail -n $length < $log > /dev/shm/autosuspendlogtmp
cat /dev/shm/autosuspendlogtmp > $log
rm -f /dev/shm/autosuspendlogtmp
fi

# putout a date in log
echo "====== autosuspend.sh "`date`" ======" >> $log

lsofVNC=`sudo lsof -i :5901`
echo "VNC_LISTEN:"`echo "$lsofVNC" | grep LISTEN` >> $log
echo "VNC_ESTAB.:"`echo "$lsofVNC" | grep ESTABLISHED` >> $log
# if vnc server live ,but vnc client doesn't log in.
if [ `expr "$lsofVNC" : '.*LISTEN'` -gt 0 -a `expr "$lsofVNC" : '.*ESTABLISHED'` -eq 0 ]; then
# kill vncserver
sudo vncserver -kill :1
sleep 10
echo "(vncserver was killed)" >> $log
fi

whoislogged=`who | wc -l`
usingsamba=`smbstatus -L | wc -l`
runningjob=`atq | grep = | wc -l`
recpt1=`ps -el | grep recpt1`
lsofESTAB=`sudo lsof -i :22,80,5901,8200 | grep ESTABLISHED`
##### log #####
echo "who,0 :"$whoislogged >> $log
echo "smb,2 :"$usingsamba >> $log
echo "atq,0 :"$runningjob >> $log
echo "recpt1:"$recpt1 >> $log
echo "lsof ESTABLISHED:"$lsofESTAB >> $log

# if nobody logged in.
if [ 0 -eq "$whoislogged" ] ; then
# if nobody are using samba.
if [ 2 -eq "$usingsamba" ]; then
# if no at jobs are runnning.
if [ 0 -eq "$runningjob" ]; then
# if recpt1 is not runnning.
if [ -z "$recpt1" ]; then
# if no user on ssh,www,vnc,dlna (port22,80,5901,8200 isn't ESTABLISHED).
if [ -z "$lsofESTAB" ]; then

# get nearest time which at scheduled.
nearest=`atq | awk '{print $2,$3}' |\
sort -n | head -1 | awk '{print $1,$2}'`
# transform timestamp to seconds.
wkuptime=`date -d "$nearest" +%s`
# set secs to 3 minutes before.
wkuptime=`expr $wkuptime - 180`
##### log #####
echo "atq.time :"`date --date "@$wkuptime"` >> $log

# get present time.
now=`date`

# getepgtime is scheduled for 29min at midnight.
getepgtime=`expr $(date -d "$now 1day" +%Y-%m-%d)" 00:27:00"`
# getepgtime in sec.
getepgtime=`date -d "$getepgtime" +%s`
# if getepgtime will start before next atq.
if [ $wkuptime -gt $getepgtime ]; then
# set wkuptime at getepgtime.
wkuptime=$getepgtime
fi
##### log #####
echo "wkup.time :"`date --date "@$wkuptime"` >> $log

# present time in sec.
now=`date -d "$now" +%s`
# if there is more than 30 minutes to get up the next time.
if [ `expr $wkuptime - $now` -gt 1800 ]; then
# initialize wakealarm.
echo 0 > /sys/class/rtc/rtc0/wakealarm
# set wakealarm.
echo $wkuptime > /sys/class/rtc/rtc0/wakealarm
##### log #####
cat /proc/driver/rtc >> $log
# suspend
sudo pm-suspend --quirk-dpms-on
fi
fi
fi
fi
fi
fi

『ネオジェネシスふれんどり』さんみたく見易く色分けしたらいいんでしょうけど、手作業になっちゃうんですみません・・・

えーと。$logは実際に思ったとおりの動作をしてるかを知るために、吐かせてます。
当初は仮で入れてたんですが結構色々なところでハマッタので、入れとくことにしました。
で、2万行超えたら頭の10行を捨てるような処理をしてます。いいやり方かはわかりませんが・・・ logrotateとかしらんす。そっちの方が楽なんでしょうけど・・・・
あ、それと、cat /proc/driver/rtcで出てくる時間はJSTじゃないので+9時間して読んでください。
(ロケールで変わるのかも・・・)

自動終了する流れとしては
1:whoが0行ターミナルでログインしているユーザーがいない
2:smbstatusでロックされたファイル一覧が2行サンバでファイルロックをしている人がいない
3:atqで『=』の付いた行がないatのjobが走っていない(録画中ではない)
4:文字列『recpt1』が含まれたプロセスが走っていない録画中orEPG更新中ではない
5:22、80、5901、8200のポートが使われてないssh、www、vnc、minidlnaで使ってるユーザーがいない
1~5で使っている人がいない場合、次回の録画予約を調べて、それと夜中の0:29(epgの更新時間)のどちらか早いほうが現在の時間より30分以上あいてるなら、サスペンドする。
という感じです。

『ネオジェネシスふれんどり』さんはの録画中判定をatq=があるか(3)だけで判定してますが、環境の違い(Debian系とRedHat系の違いですかね)のせいか、うちではだめだったのでpsも追加しました。
atqを調べると確かにmanページに「The special queue "=" is reserved for jobs which are currently running.」と書いてあるんですが、何故かうちの環境ではjobが走っているにもかかわらず、録画開始から1時間くらいたつと=が消えてしまってうまくいかなかったです。
最初は2時間番組が途中までしか録画されないのでEPGRECか、ハードウェアの問題か、HDDのスピンダウンの設定か、と色々疑ったのですが、実際の録画中にターミナルでatqを打っていたら急に消えたにもかかわらず、win機から見てるサンバのフォルダでファイルの容量が増えていくのでこれだとわかりました。

また、『ネオジェネシスふれんどり』さんはsortするのにatqの結果がdateコマンドの結果に近いものを想定しているっぽいけど、うちの環境では、
[root@NAS ~]# atq
38 2012-10-03 20:57 a apache

こんな感じなので、単にsort -nで大丈夫でした。
参考:ソートの分かりやすい解説→『あらびき日記』さんの『sortコマンドで複数キーによるソート

頭のほうのvncserver -kill :1してる部分はUltraVNCを使った後、killを忘れて、UltraVNC上でターミナルを開いたままUltraVNCのウィンドウを閉じてしまうので、そうなると、whoで常に誰かつながっていることになって、終われないのでvncサーバーが立ち上がってるにもかかわらず、クライアントがEstablishしてない場合サーバーをkillするというものです。
sleep10はたんにkillの時間を待ってるだけです。(killされたか判定が面倒だっただけ)

シャットダウンでもうまくいったけど、サスペンドの方がNASとして使うには理想的なので、サスペンドにしました。
SSDではないためか、CentOSだからか、DN2800MTだからか、復帰には20秒弱かかるけど、まぁ仕方ないか・・・・(サスペンドだからSSDは関係ないか・・・)

で、クロン登録 20分毎(0分、20分、40分)に実行。
最低気温が10度を下回るような寒い11月~4月はHDDを24時間動かしていたほうがいいのではないかということで、5月~10月のみ実行。
消費電力が約20wなので、30日でも約320円(22円/1kwh換算)なので、まぁ、保険料ということで・・・

[root@NAS ~]# crontab -e
*/20 * * 5-10 * /usr/local/bin/autosuspend.sh


それと、lsof,vncserver,pm-suspend ではsudoが必要なので
visudoで「Defaults requiretty」をコメントアウトです。

HP上からphpでサスペンドできるようにしようかとも思って途中まで作ったけど、port80が判定できなくなるし、まぁいっか。と思ってやめました。

『ネオジェネシスふれんどり』さんも書いてますけど、BIOSのRTC Timerとか使うのかと思ってたのにACPIすごいす。


<<追記>>
サスペンドにしてるから次の起動までの間に電源断があると、以前、起動時にメモリに読み込んだ情報が消えて次の予約時間が到達しても起動できずに予約録画が失敗するんだろうな、と思っていた。
ところが、電源を数秒抜いて停電を試してみたら、次の予約時間にはきちんとブートして予約録画が実行されていた。
当然メモリの内容は消えて起動しなおしてるようでuptimeは再度カウントを始めていた。
スクリプト的に自動でサスペンドへ移行したときは、誰もログインしていない状態=メモリが消えても特に作業内容が消えない状態なので、(vnc上で何かしててvncクライアントを終了した場合はvncのリモート上での作業状態はもともとスクリプトでkillされるが)メモリがクリアされて一からブートがかかっても何も問題はない。
ということで、この運用状態だと、シャットダウンやハイバネートを使う必要すらなくサスペンドで完璧に希望の動作が行われることがわかった。しかも、サスペンド状態の消費電力をワットチェッカーでみても0W(小数点以下測定不能)なので、ほとんど電気も食われていない。ほんとACPIすごいわ~~どうなってんの?

PageTop
たまにチェックしたくなったときに忘れるので自分用メモ

地デジ
# checksignal 13 --device /dev/pt3video2

BS
# checksignal 101 --device /dev/pt3video1


C/Nわかるのいいなぁ。
今度からこれでアンテナ調整しよう。

ついでに、epgrecのdo-record.shのテスト
# OUTPUT=/media/sdb/share/Video/pttest.ts CHANNEL=13 DURATION=15 TUNER=0 MODE=0 TYPE=GR /var/www/epgrec/do-record.sh

recpt1のテスト
# recpt1 --b25 --strip 13 10 /media/sdb/share/Video/recpt1test.ts

ついでに手動でのepgの取得
# /var/www/epgrec/getepg.php

PageTop
うちの環境(DN2800MT + CentOS6.3)ではコールドスタートが遅いです。

NASとして使うので、使用者側から見れば常時起動が理想的ですが、電気代からするとクライアントがいないときは電源を切っているほうが理想的です。(300円/月くらいでしょうけど)
で、M/BをSocket 478のP4i65GからDN2800MTに変えたことで、CentOSのGUI上にサスペンドの文字が加わりました。
コールドスタートでクライアントからマジックパケット投げて2分後にやっと使えるとか、かなり悲しいので、出来るもんならサスペンドを使います。
(P4i65GではWin2kとかでもサスペンドは試したけどだめだったような・・・)

で、安直にこれを試すと、復帰時に画面真っ暗、でもワットチェッカーの消費電力は稼動時の数字を示してる。

でググルと、『r271-635』さんの『CentOS 5.2でのスリープ実現』にまんまずばりなことが書いてある。
で、試すけど、結局はどれもだめ。
なにやらオプションの組み合わせも色々あるみたいだけど、全部の組み合わせなんて12の階乗ですか?
絶対やりません・・・・・

ただ、『--quirk-s3-bios』と『--quirk-s3-mode』以外は、VGAが出なくなるけど、sshとvncは生きているので、まぁ、それでもいっか、と思い、サスペンドを使い出すと、今度はPT3が「checksignal 13 --device /dev/pt3video2」で『Cannot tune to the specified channel』となる。
最初はPT3を構築している最中だったので、そちらばかり疑ってたけど、ふとサスペンドが原因と気づく。

で、色々調べた結果『SUZZ Blog』さんの『夏休みの自由研究は PT2 と Linux で地デジ録画サーバー』を参考に
/etc/pm/config.d/00sleep_module に (ディレクトリはあったがファイルはなかった)
SUSPEND_MODULES="pt3_drv"    と入れて
(ドライバの名前は一応lsmodで確認)

[root@NAS ~]# pm-suspend --quirk-dpms-on
  とすると復帰時にはちゃんと信号を受信できていた。

モニタのほうは
SUSPEND_MODULES="video"
SUSPEND_MODULES="output"

と試したけど、だめだった。/sbin/modinfo [Module](ドライバ名)と片っ端からやったけど、どれがドライバ名かよく分からない。まぁ、押入れサーバーだから直接触らないんでひとまず放置か・・・

参考
CentOS 5.2でのスリープ実現
夏休みの自由研究は PT2 と Linux で地デジ録画サーバー
pm-suspend (8) manual page
openSUSE 12.2: 第23章 電源管理

LinuxノートPCのサスペンドとハイバネーション』   上手くはいかなかったが好学のためメモ

PT3のスリープからの復帰失敗をなんとかする』   試すに至らなかったが参考に
acpid を使ってサスペンド
Linuxカーネルモジュールの管理について

PageTop
PT3 導入  CentOS6.3_64bit epgrec  (前半)』 のつづき
予約録画システムを入れて完成します。
※ほとんど参照元と同じだったりします;;;

6:epgdumpr2のインストール
参照 (詳細な説明はそちらで・・・)
『GeekなNooblog』さんの『コピペでできる録画サーバー on Linux with PT2 (epgrec 番組表編)

epgdumpr2のダウンロード先
http://sourceforge.jp/projects/epgrec/releases/?package_id=12517 (sourceforge)
ダウンロードファイルは/usr/local/src/pt3に入れます。

[root@NAS ~]# cd /usr/local/src/pt3
[root@NAS pt3]# tar zxvf epgdumpr2_20111001.tar.gz
epgdumpr2/
epgdumpr2/ts.o
epgdumpr2/util.h
epgdumpr2/Makefile
epgdumpr2/ts.c
epgdumpr2/ts.h
epgdumpr2/epgdump.o
epgdumpr2/aribstr.h
epgdumpr2/eit.h
epgdumpr2/epgdump.c
epgdumpr2/sdt.c
epgdumpr2/util.c
epgdumpr2/ts_ctl.h
epgdumpr2/util.o
epgdumpr2/aribstr.c
epgdumpr2/epgdump
epgdumpr2/sdt.o
epgdumpr2/readme.txt
epgdumpr2/eit.o
epgdumpr2/aribstr.o
epgdumpr2/xmldata.c
epgdumpr2/tags
epgdumpr2/eit.c
epgdumpr2/sdt.h
[root@NAS pt3]# cd epgdumpr2
[root@NAS epgdumpr2]# make
make: Nothing to be done for `all'.    ←あら? なんか既に出来てました。
[root@NAS epgdumpr2]# make  ←既にあった『epgdump』をいったん削除してmakeしてみました。
gcc -std=c99 -O2 -Wall -g epgdump.o aribstr.o eit.o ts.o util.o sdt.o -o epgdump
epgdump.o: could not read symbols: File in wrong format
collect2: ld returned 1 exit status
make: *** [epgdump] Error 1  ←あっそ。
[root@NAS epgdumpr2]# make clean
rm -f core epgdump *.o
[root@NAS epgdumpr2]# make
gcc -std=c99 -O2 -Wall -g -c epgdump.c
epgdump.c: In function 'xmlspecialchars':
epgdump.c:173: warning: implicit declaration of function 'strrep'
gcc -std=c99 -O2 -Wall -g -c aribstr.c
aribstr.c: In function 'PutKanjiChar':
aribstr.c:321: warning: passing argument 2 of 'iconv' from incompatible pointer type
/usr/include/iconv.h:43: note: expected 'char ** restrict' but argument is of type 'const char **'
aribstr.c: In function 'LockingShiftGL':
aribstr.c:625: warning: array subscript has type 'char'
aribstr.c: In function 'LockingShiftGR':
aribstr.c:631: warning: array subscript has type 'char'
aribstr.c: In function 'SingleShiftGL':
aribstr.c:637: warning: array subscript has type 'char'
aribstr.c: In function 'DesignationGSET':
aribstr.c:644: warning: array subscript has type 'char'
aribstr.c:645: warning: array subscript has type 'char'
aribstr.c:646: warning: array subscript has type 'char'
aribstr.c:647: warning: array subscript has type 'char'
aribstr.c:648: warning: array subscript has type 'char'
aribstr.c:649: warning: array subscript has type 'char'
aribstr.c:650: warning: array subscript has type 'char'
aribstr.c:651: warning: array subscript has type 'char'
aribstr.c:652: warning: array subscript has type 'char'
aribstr.c:653: warning: array subscript has type 'char'
aribstr.c:654: warning: array subscript has type 'char'
aribstr.c:655: warning: array subscript has type 'char'
aribstr.c:656: warning: array subscript has type 'char'
aribstr.c:657: warning: array subscript has type 'char'
aribstr.c:658: warning: array subscript has type 'char'
aribstr.c: In function 'DesignationDRCS':
aribstr.c:667: warning: array subscript has type 'char'
aribstr.c:668: warning: array subscript has type 'char'
aribstr.c:669: warning: array subscript has type 'char'
aribstr.c:670: warning: array subscript has type 'char'
aribstr.c:671: warning: array subscript has type 'char'
aribstr.c:672: warning: array subscript has type 'char'
aribstr.c:673: warning: array subscript has type 'char'
aribstr.c:674: warning: array subscript has type 'char'
aribstr.c:675: warning: array subscript has type 'char'
aribstr.c:676: warning: array subscript has type 'char'
aribstr.c:677: warning: array subscript has type 'char'
aribstr.c:678: warning: array subscript has type 'char'
aribstr.c:679: warning: array subscript has type 'char'
aribstr.c:680: warning: array subscript has type 'char'
aribstr.c:681: warning: array subscript has type 'char'
aribstr.c:682: warning: array subscript has type 'char'
aribstr.c:683: warning: array subscript has type 'char'
gcc -std=c99 -O2 -Wall -g -c eit.c
gcc -std=c99 -O2 -Wall -g -c ts.c
gcc -std=c99 -O2 -Wall -g -c util.c
gcc -std=c99 -O2 -Wall -g -c sdt.c
gcc -std=c99 -O2 -Wall -g epgdump.o aribstr.o eit.o ts.o util.o sdt.o -o epgdump
まあ当然ですけど、元から入ってた『epgdump』と出来上がったものは同じでした。
[root@NAS epgdumpr2]# cp epgdump /usr/local/bin


7:apache、php関連のインストール
参照 (詳細な説明はそちらで・・・)
『GeekなNooblog』さんの『コピペでできる録画サーバー on Linux with PT2 (epgrec 番組表編)


[root@NAS epgdumpr2]# yum -y install httpd
~~~途中でMRTG入れた関係上apacheは既に入っているのでログは省略~~
[root@NAS epgdumpr2]# yum -y install php php-cli php-sql php-mysql php-mbstring php-process  ←必要なパッケージ入れます。mysql使うのか。
Loaded plugins: fastestmirror, priorities, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
Setting up Install Process
Package php-5.3.3-14.el6_3.x86_64 already installed and latest version
Package php-cli-5.3.3-14.el6_3.x86_64 already installed and latest version
No package php-sql available.
Resolving Dependencies
--> Running transaction check
---> Package php-mbstring.x86_64 0:5.3.3-14.el6_3 will be installed
---> Package php-mysql.x86_64 0:5.3.3-14.el6_3 will be installed
--> Processing Dependency: php-pdo for package: php-mysql-5.3.3-14.el6_3.x86_64
---> Package php-process.x86_64 0:5.3.3-14.el6_3 will be installed
--> Running transaction check
---> Package php-pdo.x86_64 0:5.3.3-14.el6_3 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
php-mbstring x86_64 5.3.3-14.el6_3 updates 453 k
php-mysql x86_64 5.3.3-14.el6_3 updates 79 k
php-process x86_64 5.3.3-14.el6_3 updates 37 k
Installing for dependencies:
php-pdo x86_64 5.3.3-14.el6_3 updates 73 k

Transaction Summary
================================================================================
Install 4 Package(s)

Total download size: 643 k
Installed size: 2.5 M
Downloading Packages:
(1/4): php-mbstring-5.3.3-14.el6_3.x86_64.rpm | 453 kB 00:00
(2/4): php-mysql-5.3.3-14.el6_3.x86_64.rpm | 79 kB 00:00
(3/4): php-pdo-5.3.3-14.el6_3.x86_64.rpm | 73 kB 00:00
(4/4): php-process-5.3.3-14.el6_3.x86_64.rpm | 37 kB 00:00
--------------------------------------------------------------------------------
Total 408 kB/s | 643 kB 00:01
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : php-pdo-5.3.3-14.el6_3.x86_64 1/4
Installing : php-mysql-5.3.3-14.el6_3.x86_64 2/4
Installing : php-mbstring-5.3.3-14.el6_3.x86_64 3/4
Installing : php-process-5.3.3-14.el6_3.x86_64 4/4
Verifying : php-process-5.3.3-14.el6_3.x86_64 1/4
Verifying : php-mysql-5.3.3-14.el6_3.x86_64 2/4
Verifying : php-mbstring-5.3.3-14.el6_3.x86_64 3/4
Verifying : php-pdo-5.3.3-14.el6_3.x86_64 4/4

Installed:
php-mbstring.x86_64 0:5.3.3-14.el6_3 php-mysql.x86_64 0:5.3.3-14.el6_3
php-process.x86_64 0:5.3.3-14.el6_3

Dependency Installed:
php-pdo.x86_64 0:5.3.3-14.el6_3

Complete!
[root@NAS epgdumpr2]# vi /etc/httpd/conf/httpd.conf ←アパッチの設定です。まねました。
ServerTokens Prod
ServerRoot "/etc/httpd"
PidFile run/httpd.pid
Timeout 120
KeepAlive On
MaxKeepAliveRequests 10
KeepAliveTimeout 15
Listen 80

<IfModule prefork.c>
StartServers 3
MinSpareServers 1
MaxSpareServers 5
ServerLimit 10
MaxClients 10
MaxRequestsPerChild 100
</IfModule>


LoadModule auth_digest_module modules/mod_auth_digest.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule include_module modules/mod_include.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule logio_module modules/mod_logio.so
LoadModule env_module modules/mod_env.so
LoadModule mime_magic_module modules/mod_mime_magic.so
LoadModule deflate_module modules/mod_deflate.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule mime_module modules/mod_mime.so
LoadModule dav_module modules/mod_dav.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule dir_module modules/mod_dir.so
LoadModule actions_module modules/mod_actions.so
LoadModule speling_module modules/mod_speling.so
LoadModule cache_module modules/mod_cache.so
LoadModule suexec_module modules/mod_suexec.so
LoadModule disk_cache_module modules/mod_disk_cache.so
#LoadModule file_cache_module modules/mod_file_cache.so  ←何か足りないらしく立ち上がらないのでコメントアウト
#LoadModule mem_cache_module modules/mod_mem_cache.so  ←何か足りないらしく立ち上がらないのでコメントアウト
LoadModule cgi_module modules/mod_cgi.so
LoadModule php5_module modules/libphp5.so

User apache
Group apache
ServerAdmin address@email.com
ServerName 192.168.0.101:80   ←自分の環境に合わせてね
DocumentRoot "/var/www"

<Directory />
Options FollowSymLinks
AllowOverride None
</Directory>

<Directory "/var/www/html">
AllowOverride None
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>

<Directory "/var/www/cgi-bin">
Options ExecCGI
</Directory>

<Directory "/var/www/epgrec">
AllowOverride None
Options FollowSymLinks
Order allow,deny
Allow from all
</Directory>

DirectoryIndex index.html index.htm index.shtml index.shtm index.php  ←URIが『/』で終わってるとき探しに行く順
AccessFileName .htaccess
<Files ~ "^\.ht">
Order allow,deny
Deny from all
</Files>

TypesConfig /etc/mime.types
DefaultType text/plain
<IfModule mod_mime_magic.c>
MIMEMagicFile conf/magic
</IfModule>

ErrorLog "/var/log/httpd/error_log"
LogLevel warn
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
LogFormat "%{Referer}i -> %U" referer
LogFormat "%{User-agent}i" agent
CustomLog logs/access_log combined
ServerSignature Off

AddDefaultCharset UTF-8
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
AddType application/x-httpd-php .php
AddHandler cgi-script .cgi .pl

[root@NAS epgdumpr2]# chkconfig httpd on  ←自動起動設定on
[root@NAS epgdumpr2]# /etc/init.d/httpd start
Starting httpd:


8:MySQLのインストール
参照 (詳細な説明はそちらで・・・)
『GeekなNooblog』さんの『コピペでできる録画サーバー on Linux with PT2 (epgrec 番組表編)


[root@NAS epgdumpr2]# yum -y install mysql-server  ←mysql入れます
Loaded plugins: fastestmirror, priorities, refresh-packagekit, security
Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
Setting up Install Process
Resolving Dependencies
--> Running transaction check
---> Package mysql-server.x86_64 0:5.1.61-4.el6 will be installed
--> Processing Dependency: mysql = 5.1.61-4.el6 for package: mysql-server-5.1.61-4.el6.x86_64
--> Processing Dependency: perl-DBI for package: mysql-server-5.1.61-4.el6.x86_64
--> Processing Dependency: perl-DBD-MySQL for package: mysql-server-5.1.61-4.el6.x86_64
--> Processing Dependency: perl(DBI) for package: mysql-server-5.1.61-4.el6.x86_64
--> Running transaction check
---> Package mysql.x86_64 0:5.1.61-4.el6 will be installed
---> Package perl-DBD-MySQL.x86_64 0:4.013-3.el6 will be installed
---> Package perl-DBI.x86_64 0:1.609-4.el6 will be installed
--> Finished Dependency Resolution

Dependencies Resolved

================================================================================
Package Arch Version Repository Size
================================================================================
Installing:
mysql-server x86_64 5.1.61-4.el6 base 8.6 M
Installing for dependencies:
mysql x86_64 5.1.61-4.el6 base 882 k
perl-DBD-MySQL x86_64 4.013-3.el6 base 134 k
perl-DBI x86_64 1.609-4.el6 base 705 k

Transaction Summary
================================================================================
Install 4 Package(s)

Total download size: 10 M
Installed size: 29 M
Downloading Packages:
(1/4): mysql-5.1.61-4.el6.x86_64.rpm | 882 kB 00:01
(2/4): mysql-server-5.1.61-4.el6.x86_64.rpm | 8.6 MB 00:12
(3/4): perl-DBD-MySQL-4.013-3.el6.x86_64.rpm | 134 kB 00:00
(4/4): perl-DBI-1.609-4.el6.x86_64.rpm | 705 kB 00:00
--------------------------------------------------------------------------------
Total 667 kB/s | 10 MB 00:15
Running rpm_check_debug
Running Transaction Test
Transaction Test Succeeded
Running Transaction
Installing : perl-DBI-1.609-4.el6.x86_64 1/4
Installing : perl-DBD-MySQL-4.013-3.el6.x86_64 2/4
Installing : mysql-5.1.61-4.el6.x86_64 3/4
Installing : mysql-server-5.1.61-4.el6.x86_64 4/4
Verifying : perl-DBD-MySQL-4.013-3.el6.x86_64 1/4
Verifying : perl-DBI-1.609-4.el6.x86_64 2/4
Verifying : mysql-server-5.1.61-4.el6.x86_64 3/4
Verifying : mysql-5.1.61-4.el6.x86_64 4/4

Installed:
mysql-server.x86_64 0:5.1.61-4.el6

Dependency Installed:
mysql.x86_64 0:5.1.61-4.el6 perl-DBD-MySQL.x86_64 0:4.013-3.el6
perl-DBI.x86_64 0:1.609-4.el6

Complete!
[root@NAS epgdumpr2]# /etc/init.d/mysqld start  ←mysql始動
Initializing MySQL database: WARNING: The host 'NAS.localdomain' could not be looked up with resolveip.
This probably means that your libc libraries are not 100 % compatible
with this binary MySQL version. The MySQL daemon, mysqld, should work
normally with the exception that host name resolving will not work.
This means that you should use IP addresses instead of hostnames
when specifying MySQL privileges !
Installing MySQL system tables...
OK
Filling help tables...
OK

To start mysqld at boot time you have to copy
support-files/mysql.server to the right place for your system

PLEASE REMEMBER TO SET A PASSWORD FOR THE MySQL root USER !
To do so, start the server, then issue the following commands:

/usr/bin/mysqladmin -u root password 'new-password'
/usr/bin/mysqladmin -u root -h NAS.localdomain password 'new-password'

Alternatively you can run:
/usr/bin/mysql_secure_installation

which will also give you the option of removing the test
databases and anonymous user created by default. This is
strongly recommended for production servers.

See the manual for more instructions.

You can start the MySQL daemon with:
cd /usr ; /usr/bin/mysqld_safe &

You can test the MySQL daemon with mysql-test-run.pl
cd /usr/mysql-test ; perl mysql-test-run.pl

Please report any problems with the /usr/bin/mysqlbug script!

[ OK ]
Starting mysqld: [ OK ]
[root@NAS epgdumpr2]# chkconfig mysqld on
[root@NAS epgdumpr2]# mysql  ←mysqlにはいるのかな
Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.1.61 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> grant all privileges on PT3.*to username@localhost identified by 'password';  ←全権限のあるユーザーを作ります おすきな usernamepasswordでどぞ。
Query OK, 0 rows affected (0.00 sec)

mysql> exit
Bye
[root@NAS epgdumpr2]# mysql -u username -p  ←テーブル作ります
Enter password:   さっきのぱすわーど

Welcome to the MySQL monitor. Commands end with ; or \g.
Your MySQL connection id is 3
Server version: 5.1.61 Source distribution

Copyright (c) 2000, 2011, Oracle and/or its affiliates. All rights reserved.

Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.

Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.

mysql> create database PT3;   ←データベース作ります
Query OK, 1 row affected (0.00 sec)

mysql> show databases;
+--------------------+
| Database |
+--------------------+
| information_schema |
| PT3 |   ←できてますね。
| test |
+--------------------+

3 rows in set (0.01 sec)

mysql> exit
Bye

9:epgrecのインストール
参照 (詳細な説明はそちらで・・・)
『GeekなNooblog』さんの『コピペでできる録画サーバー on Linux with PT2 (epgrec 番組表編)


システム管理関係らしい atd よくわかりません;;;
<<追記>>
cronとは違い、一回こっきりのプログラムを実行するためのデーモンらしい。
atコマンドで登録するらしい

[root@NAS epgdumpr2]# usermod -s /bin/bash apache
[root@NAS epgdumpr2]# /etc/init.d/atd start
[root@NAS epgdumpr2]# chkconfig atd on

gitは前半戦で入っているのでインストールは省略
gitを使ってepgrecをインストール
gitってなんか開発者にとっては便利らしい・・・・よくわからん。。

[root@NAS epgdumpr2]# cd /var/www
[root@NAS www]# git clone git://git.sourceforge.jp/gitroot/epgrec/epgrec.git
Initialized empty Git repository in /var/www/epgrec/.git/
remote: Counting objects: 984, done.
remote: Compressing objects: 100% (359/359), done.
remote: Total 984 (delta 611), reused 984 (delta 611)
Receiving objects: 100% (984/984), 475.71 KiB | 803 KiB/s, done.
Resolving deltas: 100% (611/611), done.
[root@NAS www]# cd /var/www/epgrec
[root@NAS epgrec]# mv config.php.sample config.php



10:epgrecの設定
参照 (詳細な説明はそちらで・・・)
『GeekなNooblog』さんの『コピペでできる録画サーバー on Linux with PT2 (epgrec 番組表編)


/var/www/epgrec/config.phpをお住まいの地域の地デジチャンネルに合わせて設定。
→epgrecのHPのこのへんみてね。

録画用スクリプト作ります。
[root@NAS epgrec]# vi /var/www/epgrec/do-record.sh
#!/bin/sh
echo "CHANNEL : $CHANNEL"
echo "DURATION: $DURATION"
echo "OUTPUT : $OUTPUT"
echo "TUNER : $TUNER"
echo "TYPE : $TYPE"
echo "MODE : $MODE"
echo "SID : $SID"

RECORDER=/usr/local/bin/recpt1

# fail safe
case $CHANNEL in
101|102|191|192|193)
if [ $SID = 'hd' ]; then
SID=$CHANNEL
fi ;;
esac
if [ -z $SID ]; then
SID='hd'
fi

if [ ${MODE} = 0 ]; then
# MODE=0では必ず無加工のTSを吐き出すこと
$RECORDER --b25 --strip $CHANNEL $DURATION ${OUTPUT} >/dev/null
elif [ ${MODE} = 1 ]; then
if [ ${CHANNEL} = "23" ] || [ ${CHANNEL} = "24" ]; then  ←ん?これもさっきの同様変えないとだめかな?
# テレビ朝日とテレビ東京はFullTS
$RECORDER --b25 --strip $CHANNEL $DURATION ${OUTPUT} >/dev/null
else
# 目的のSIDのみ残す
$RECORDER --b25 --strip --sid $SID $CHANNEL $DURATION ${OUTPUT} >/dev/null
fi
fi

パーミッションの設定
[root@NAS epgrec]# chown -R apache.apache /var/www/epgrec
[root@NAS epgrec]# chmod 777 /var/www/epgrec/templates_c
[root@NAS epgrec]# chmod 777 /var/www/epgrec/video
[root@NAS epgrec]# chmod 777 /var/www/epgrec/thumbs
[root@NAS epgrec]# chmod 777 /var/www/epgrec/settings
[root@NAS epgrec]# chmod 777 /var/www/epgrec/cache
[root@NAS epgrec]# chmod 755 /var/www/epgrec/do-record.sh

端末から
http://サーバーアドレス/epgrec/index.phpにアクセス
初回設定に入ります。 (後からも変更できます。)

・MySQLホスト名		: localhost
・MySQL 接続ユーザー名 : username
・MySQL接続パスワード : password
・使用データベース名 : PT3
・インストールURL : http://サーバーアドレス/epgrec

       ↓
    設定を保存する

・地デジチューナーの台数 : 2
・BSチューナーの台数   : 2
・録画ファイル名の形式  : %TYPE%%CH%-%TITLE%_%YEAR%-%MONTH%-%DAY%-%HOUR%%MIN%
                     (自分の場合 ※半角スペースはだめなのかな?『 _ 』になるっぽい
       ↓
    設定を保存する
       ↓
    番組表更新はクロン登録するので、とりあえず今は更新せずに放置

番組表更新のクロン登録

[root@NAS ~]# vi /etc/cron.d/getepg
SHELL=/bin/bash
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin

29 */2 * * * apache /var/www/epgrec/getepg.php

[root@NAS ~]# chmod 644 /etc/cron.d/getepg

初回の番組表取得 BSはそこそこ速いけど、地デジは時間かかります。
[root@NAS ~]# /var/www/epgrec/getepg.php

基本的に おしまい。

でも、予約録画をしようとしたら
get:無効なid』とか言われます。ググル先生も教えてくれません。
ちょっと悩みます。まぁ、こんなときはたいてい、パーミッションかFireWallかSELinuxです。

で、一時的にSELinuxを切ってみると、動いたので、SELinuxを何とかしようと、/val/log/messagesを見てみますがSELinuxは大して何も言わないので、もうめんどくさくなって、とうとうSELinuxには永遠に寝てもらうことにしました。


[root@NAS ~]# vi /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - SELinux is fully disabled.
SELINUX=disabled
# SELINUXTYPE= type of policy in use. Possible values are:
# targeted - Only targeted network daemons are protected.
# strict - Full SELinux protection.
SELINUXTYPE=targeted
[root@NAS ~]#


おしまい。

<<関連情報>>
再生環境について
PCをメディアプレーヤーにするHTPC
WoooXP05でみる          (既に古い機種)
miniDlnaでの配信CentOS6.0    (古いエントリー)
miniDlnaでの配信Ubuntu11.04    (古いエントリー)

<<追記>>
録画されるファイルはデフォルトでは/var/www/epgrec/videoの中。
/var/www/epgrec の下以外に設定することは出来ないらしい。
OSと別のHDDに保存したいようなときは、その保存したいディレクトリ(フォルダ)から/var/www/epgrec/videoにシンボリックリンクを張ればいいらしい。
たとえば、データ用HDDを/etc/fstabで/media/sdbにマウントするとして、
その中にVideoフォルダを作りそこに保存したい場合
コマンド的には、
# mkdir /media/sdb/Video     ←Videoフォルダを作る
# chmod 777 /media/sdb/Video   ←パーミッションあげる
# mv /var/www/epgrec/video/* /media/sdb/Video  ←中身があるなら移動する
# rm -rf /var/www/epgrec/video         ←消す
#
ln -s /media/sdb/Video /var/www/epgrec/video  ←リンクを張る
こんな感じ。
で、同じことをGUI上でやっていて、/media/sdbのリンクを作ってそれをデスクトップにおいて、それをダブルクリックして開き、Videoのリンクを作って/var/www/epgrec/に持っていって名前をvideoにすると、パーミッションではじかれる。なんだかよく分からないけど、そういうもんぽい。相対パスの相対パスで訳わからなくなってる感じ。ちょっと不思議な仕様。いや・・訳わからなくなってるのは自分ですが・・・

PageTop
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。