CentOS5.4録画サーバ機にEPG対応録画フロントエンド(epgrec)を入れる
このエントリーの続きです.
今回はlinux用TV録画フロントエンドプログラムのインストールに関しての記録.EPG(Electronic Program Guide:電子番組ガイド)を利用して,簡単に録画予約を行えるようにするプログラムをインストールします.
右の図は,webブラウザで録画サーバにアクセスし,番組表を見ながら録画予約を入れたりしている画面です.(このシステムでは)EPGの番組表は放送データから自動的にアップデートされるし,何と言っても非常に使いやすい直感的なインターフェイスを採用しているのがポイント.一度セットアップしてしまえば,コンピュータにあまり詳しくない人(嫁さんとか子供とか :-))にでも使わせることが出来ます.
今回インストールしたのは,米田氏が開発したepgrecというプログラム.PT1/2の他,friioでも利用可能.同様のソフトの有名所としては,foltiaもあります.foltiaの方はアナログ録画の頃から存在するソフトで,多機能で有名なソフト.この他にも沢山のソフトが開発・公開されているので,何を使用するかはお好みで.
ivtvのときは自分で簡単なプログラムを作ったけど(*),今回は既成で手軽に使えるソフトを利用することにしました.
(*)ディスカバリーチャンネル専用に近い仕様に改造し,今もCATVの録画用に使用しています.
○epgrecインストールの前準備
基本的にこのページの手順に沿って作業します.
まずは同ページから,epgdumpr2-utf8.tar.gzを落とし,次のように展開・ビルド・インストールをします.
tar xvzf epgdumpr2-utf8.tar.gz
cd epgdumpr2
make
cp epgdump /usr/local/bin
atはデフォルト状態で利用可能に設定されていました.
次に/etc/passwd内のapacheのエントリを書き換え,ログインシェルを変更します.
apache:x:48:48:Apache:/var/www:/bin/sh
後,CentOS5.4にインストールされているapacheのデフォルト設定では,epgrecの設定/利用時にいくつか問題があったので,/etc/httpd/conf/httpd.confを編集し,DocumentRootに.Indexesを追加しました.
本当は,epgrecをインストールした所だけにIndexesを設定した方がセキュリティ上好ましいです.安直過ぎる対処法のようにも思うので,また時間のあるときにでも見てみます.
<Directory />
Options Indexes FollowSymLinks
AllowOverride None
</Directory>
変更後はapacheの再起動/リロードを忘れずに.
○epgrecのインストール
次にこのページから,最新のepgrecを落します.私が落したのは,epgrec-090814.tar.gz(2009年8月14日版)でした.
ここから先はドキュメントと少し手順が違う所がありますが,以下のようにインストールを行いました.
tar xvzpf epgrec-090814.tar.gz -C /var/www/html
cd /var/www/epgrec
chown -R apache.apache ./
(→ここでドキュメント通り,パーミッションをチェック)
mv /var/www/epgrec/config.php.sample /var/www/epgrec/config.php
cp --archive /var/www/epgrec/do-record.sh.pt1 /var/www/epgrec/do-record.sh
/var/www/epgrec/do-record.shにコピーするテンプレートは,friio用とpt1/2用と異なるので注意.上記の例は,pt1/2用です.
次に/var/www/epgrec/config.phpをemacs等で編集します.具体的には,$GR_CHANNEL_MAPの所にチャンネル設定を行います.使用するデバイスがfriio用か否かによって他にも数カ所変更する必要がある場所があります.詳しくはドキュメント参照.
なお,『どのチャンネルが使えるか分からない』という人は,先のエントリーの一番下のスクリプトを動かしてみて下さい.ベタな方法ですが,どのチャンネルに信号が来ているか確認出来ます.なお,ここで言うチャンネルとは,TVのリモコンで押す番号とは異なりますので注意して下さい.
そしてどのチャンネルが生きているか分かったら,$GR_CHANNEL_MAPに
"GR14" => "14",
のような形式で書き込んでいって下さい.各チャンネルが何放送であるかは確認しなくても問題ありません.
設定が終わったら,/etc/httpd/conf/httpd.confを見て,DocumentRootが何処になっているかを確認します.
デフォルトでは,/var/www/htmlです.epgrecをインストールした所から,DocumentRootに対してシンボリックリンクを張ります.なお,apacheの設定でFollowSymLinksを有効にしていない場合はシンボリックリンクが追えませんので,epgrecのインストール先を変更してepgrec内のいくつかのファイルを書き換えるか,ハードリンクしておきましょう.
ln -s /var/www/epgrec /var/www/html
次にMySQLの設定を行います.MySQLは予めyumでインストールしておき,サーバを自動起動するようにしておいて下さい.
以下の例は,MySQLにlocalhostからのみ接続可能な全機能を持った"epgrec"というアカウントを作成し,また,epgrecというDBを作成する方法です.ボールドの部分が実際に入力する文字列です.『パスワード』の部分には任意の文字列を入れて下さい.この文字列は後で再び使用しますので,控えておいて下さい.
# mysql --user=root mysql
mysql> GRANT RELOAD,PROCESS ON *.* TO epgrec@localhost IDENTIFIED BY 'パスワード';
Query OK, 0 rows affected (0.00 sec)
mysql> create database epgrec;
Query OK, 1 row affected (0.00 sec)
mysql> exit
Bye
ここまで来たら,後は『http://epgrecをインストールしたホスト名/epgrec』でアクセスすることにより,初期設定を行えます.step2.phpの所では,先に設定した情報を入力して下さい.上記のように作成した場合は,
MySQLホスト名:localhost
MySQL接続ユーザー名:epgrec
MySQL接続パスワード:<設定したパスワード>
使用データベース名:epgrec
でOKです.
step3.phpに飛んだ後で白ページになる場合は,前述のようにhttpd.confの設定を確認して下さい.また,何か問題が発生した場合は,/var/log/httpd/access.logや/var/log/httpd/error_logを確認すると,手掛かりが得られるでしょう.
後,PT2を使用する際に変更する点は,チューナーの数を2に設定することくらいでしょうか.step3.phpに飛んだ時点で設定ファイルは出来ていますので,このページを参考にしながら,/var/www/epgrec/settings/config.xmlを直接編集しても良いと思います.
その他の細かなパラメータ(サムネイル画像を作成するかや,保存ファイル名の設定,mediatombとの連携など)は任意で設定変更するようにして下さい.
最後にEPG自動取得のための設定です.
cp /var/www/epgrec/cron.d/getepg /etc/cron.d/
chmod 755 /etc/cron.d/getepg
をし,/etc/cron.d/getepgを以下の内容に編集して下さい.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
29 */2 * * * apache /var/www/epgrec/getepg.php
編集後は,『/etc/init.d/crond restart』を実行し,crondを再起動しておきましょう.
これで放っておいても2時間おきにEPGで番組表を自動取得するするのですが,一発目は手動で取得しましょう.
/var/www/epgrec/getepg.php
○使う
前述のEPG取得ですが,1発目は30分くらいかかるときがあります.1週間分のデータ取得が完了し,コマンドプロンプトで制御が戻って来るのを待って下さい.その後,webブラウザで『http://epgrecをインストールしたホスト名/epgrec』にアクセスしてみて下さい.下図のように,EPGの番組表が表示されている筈です.
詳しい使い方は本家のページを参照して下さい.任意のチャンネル/時間にスクロールし,見たい番組にカーソルを合わせると番組の詳細情報が表示されるので内容を確認し,予約する場合はクリックして予約という感じです.
番組表はDB管理されているので,当然検索も出来ますし,「実験的な実装」という但し書きが付いていますが,キーワードに一致した番組を自動録画する機能も付いています.実に素晴らしい.
気を付けないといけない点としては,保存ファイル名に番組タイトルを付けるように設定していると,サムネイルの表示をONに設定している場合でも,録画済番組一覧表でサムネイルが表示されない場合があります.
上図は録画済番組一覧表の表示例ですが,1番組だけ,サムネイルが表示されているのが分かると思います.
状況としては,ファイル名に日本語が含まれている場合,サムネイルが表示されません.致命的な問題ではないのですが,この他にも問題が出る所がありますので,%TITLE%を保存ファイル名に付加する際には注意して下さい.そのうちコードを見て&直してみようかな…
あ,ちなみに上記のページで番組をクリックすることにより,VLCを起動してストリーミング再生可能ですので,PCベースであれば予約から視聴までまでほぼバッチリのシステムがこれで完成です.また,前述のmediatomb連携機能もありますので,設定を行えば,DLNAクライアントで再生することも可能になります.
ただ,私は再生に際してこれらは使用していません.詳しくは,再生環境についてのエントリーにて.
この他気をつける点としては,epgrecのページ上のリンクの大部分は絶対パスになっていますので,(セキュリティ強化などを目的として)リバースプロキシーを介してアクセスするように設定されている方は,設定を変更するようにして下さい.
« CentOS5.4サーバ機にPT2を入れて地デジ録画サーバにする | トップページ | PT2で録画したMPEG2-TSファイルの再生環境について&録画鯖の話 »
「Linux」カテゴリの記事
- 家の中のネットワークを2.5GbEに置き換えて快適・高速化を試してみる&HeroBoxをNAS化(2022.09.20)
- 家のサーバやNW環境を停電に強い構成にするためにPoE化を考える:CHUWI HeroBox(2)(2022.08.29)
- 無音,ハイパフォーマンスなミニPCをLinuxサーバにする:CHUWI HeroBox(1)(2022.08.16)
- 【Linux】SoftRAIDを構成するディスクの交換(2014.09.02)
- 【Linux】出来るだけ簡単に行うブートディスクの換装(2014.09.01)
「PC」カテゴリの記事
- 小型で1万mAh,30W出力可能なモバイルバッテリで出張セットのアップデート:CIO SMARTCOBY PRO-30W(2023.08.31)
- 家の中のネットワークを2.5GbEに置き換えて快適・高速化を試してみる&HeroBoxをNAS化(2022.09.20)
- 家のサーバやNW環境を停電に強い構成にするためにPoE化を考える:CHUWI HeroBox(2)(2022.08.29)
- 無音,ハイパフォーマンスなミニPCをLinuxサーバにする:CHUWI HeroBox(1)(2022.08.16)
- 在宅勤務で便利に使える省スペースキーボード:ELECOM TK-FDM105TXBK と TK-FDM109TXBK(2020.04.30)
コメント
« CentOS5.4サーバ機にPT2を入れて地デジ録画サーバにする | トップページ | PT2で録画したMPEG2-TSファイルの再生環境について&録画鯖の話 »
$filename = str_replace("%ET%","", $filename );
こんな感じでやってるのですが番組名によっては拡張子tsが付かなかったり勝手にディレクトリーを作ってその下にファイルを作ってしまったりと散々です。(笑)
投稿: くま | 2010年1月31日 (日) 20時02分
$filename = str_replace("%ET%","", $filename );
こんな感じでやってるのですが番組名によっては拡張子tsが付かなかったり勝手にディレクトリーを作ってその下にファイルを作ってしまったりと散々です。(笑)
投稿: くま | 2010年1月31日 (日) 23時49分
それはかなり難儀ですね…
うちでは幸いなことに,類似のトラブルはまだ出ていないのですが,日本語が入り,ファイル名として扱われる所のコードは見直した方が良いかもですね…
CentOS環境以外(ex. ubuntu)では出ていないのかなぁ.
投稿: tadachi | 2010年2月 1日 (月) 00時01分
以前にもお世話になりました、ノリハルと申します。
今回epgrec/config.phpを編集しようと開いたところ、文字化けが起こっていました。
自分でも原因を調べたのですが、よくわかりません。
よろしければアドバイスなどお願いできないでしょうか?
投稿: ノリハル | 2010年3月16日 (火) 18時36分
ノリハルさん.
編集の際には,どのようなソフトを使用していますか?
当該のファイルはUTF-8という漢字コードで書かれていますので,表示できる環境+対応したエディタで開かないと文字化けします.
私はteratermでwindowsからログインし,UTF8が利用出来るようにした状態で,emacsで編集しています.
投稿: tadachi | 2010年3月16日 (火) 19時34分
「UTF-8」をキーワードとして自分でも検索を行ってみた結果、なんとか解決できました。
アドバイスありがとうございました。
投稿: ノリハル | 2010年3月17日 (水) 10時38分
たびたび失礼します。
四苦八苦しながら「http://ip/epgrec/install/step1~5.php」までやり終えることができました。
しかし「/var/www/epgrec/getepg.php」を実行したところ、epgrecのトップページにて「construct:無効な行」と表示されます。
Googleなどでも調べたのですが、あまり参考になるものが見つかりませんでした。
「http://ip/epgrec/install/step1~5.php」での設定はほとんどいじっていません。
まったくどこを修正すればよいか分かりません。
毎度毎度すいませんが、本当に時間のありますときに何かアドバイスなどあればお願いしたいです。
よろしくお願いします。長文失礼しました。
投稿: ノリハル | 2010年3月17日 (水) 17時33分
本文にも書いたのですが,一発目のgetepg.phpの実行は,かなり時間がかかります(30分くらい).実行後すぐにトップページにアクセスしたということはないですか?
あと,ソフトの配布元の方に,全く同じ症状の方が居られました.config.phpに存在しない局を登録していたそうです.
http://www.mda.or.jp/epgrec/index.php/%E3%83%80%E3%82%A6%E3%83%B3%E3%83%AD%E3%83%BC%E3%83%89
この辺りもご確認下さい.
投稿: tadachi | 2010年3月17日 (水) 18時57分
時間は1時間以上経っていますのでないと思われます。
またconfig.phpの設定におきましてもrecpt1により、録画できた局を登録しているのでこちらのほうもないと思います。
一度tadachiさんのサイトを見直しましたところ、tadachiさんの設定と少し異なる点が部分が見つかりましたので記述します。
1.「tar xvzpf epgrec-090814.tar.gz -C /var/www/html」
→「tar xvzpf epgrec-090814.tar.gz -C /var/www」を実行しました。
2./etc/httpd/conf/httpd.confを編集し,DocumentRootに.Indexesを追加しました.
→具体的にどうすればいいのか分からずしていません。
3.「なお,apacheの設定でFollowSymLinksを有効にしていない場合はシンボリックリンクが追えませんので,epgrecのインストール先を変更してepgrec内のいくつかのファイルを書き換えるか,ハードリンクしておきましょう.」
→知識不足により言っていることが分からなかったのですが記述通り「ln -s /var/www/epgrec /var/www/html」を実行しました。
なにか今回の「construct:無効な行」と関係がありますでしょうか?
本当にこのような長文ごめんなさい。できたら返答をお願いします。
投稿: ノリハル | 2010年3月17日 (水) 19時28分
正直ちょっと厳しいですね….運用後に問題が発生した際に解決できない可能性が高いので,Windowsで動かされた方が問題が少ないように思います…
うまく動かない原因は,パス設定かapacheの設定がおかしいんだと思います.諸々のデフォルト設定は,同じLinuxでも,ディストリビューションによって異なります.この辺りの設定を調べて解決できないと厳しいものがあります.
このページはCentOS5.4をベースにまとめていますので,ノリハルさんが使われているのと同じ環境で,epgrecを運用されている方のページを探した方が早いかもしれません.
デフォルトのDocumentRootが/var/wwwに設定されていたようですので,epgrecのオリジナルドキュメントで解説されている環境に近いと思います.
下記のページで解説されている手順でインストールを行っても,うまく行きませんか?
http://www.mda.or.jp/epgrec/index.php/epgrec%E3%81%AE%E3%82%A4%E3%83%B3%E3%82%B9%E3%83%88%E3%83%BC%E3%83%AB%E3%81%A8%E8%A8%AD%E5%AE%9A
投稿: tadachi | 2010年3月17日 (水) 21時50分
自己解決できました。
チャンネルの設定を
"GR27" => "C17",
"GR12" => "C19",
"GR11" => "C20",
"GR10" => "C21",
と設定すると大丈夫でした。
本当にお手数をおかけしました。また親切に質問にも答えていただきありがとうございました。
投稿: ノリハル | 2010年3月22日 (月) 15時19分
ノリハルさん
無事に動いたようで何よりです。
設定ファイルの問題でgetepg.phpがきちんと動作せず、その結果、トップ画面が生成出来ない状態だったようですね。
投稿: tadachi | 2010年3月22日 (月) 19時18分
お世話になります。ご教授ください。
録画予約のダイアログで予約ボタンを押すと「job番号の取得に失敗」が表示され予約ができません。
ソースを追っかけると
// ATで予約する
$process = proc_open( $cmdline , $descriptor, $pipes, INSTALL_PATH.$settings->spool, $env );
の実行にて$rstringに、"sh: /usr/bin/at: Permission denied"が返ってきており、atの実行で失敗しているようです。
# su - apache
-bash-3.2$ at
Garbled time
-bash-3.2$ atq
-bash-3.2$ ls -l /etc/at.deny
-rwxrwxrwx 1 root root 0 5月 5 19:45 /etc/at.deny
-bash-3.2$ ps -ef | grep atd
root 2459 1 0 16:23 ? 00:00:00 rpc.statd
root 2919 1 0 16:23 ? 00:00:00 /usr/sbin/atd
apache 19875 19840 0 19:47 pts/2 00:00:00 grep atd
以上のとおりコマンドラインではapacheにてatは使えるようです。
何かUNIXの環境がまずいのでしょうか?
投稿: Tom | 2010年5月 5日 (水) 19時53分
すみません。Tomです。
いろいろググッたのですが設定中は解決策を見つけることができませんでした。しかし、もう諦めたと思い、デスクトップに散在させたURLを確認しながら削除していく過程で解決策をみつけました。
SELinuxのセキュリティー設定により、atコマンドが実行できないようになっているようです。
GNOMEにて、システム→管理→セキュリティーレベルとファイヤーウォールの設定→SELinuxを無効に設定
で解決しました。
お手数をおかけしました。
投稿: Tom | 2010年5月 5日 (水) 20時45分
Tomさん
apacheがnobodyユーザ権限等で動いていて,その権限ではatが使えないということはないでしょうか?
実行ユーザは,httpd.confのUser行で指定したような覚えがあります.これに"apache"ユーザを指定して立ち上げ直すことで,解決するような気がします.
投稿: tadachi | 2010年5月 5日 (水) 20時46分
Tomさん
丁度入れ違いでコメントを書いてしまいましたが,解決して何よりです.
セキュリティ関係の設定は,意外な所でハマることが多いですよね.
私もググってみたら,以下のようなページを見付けました.
http://blogs.yahoo.co.jp/ido_mili/23184379.html
投稿: tadachi | 2010年5月 5日 (水) 20時52分
こんにちは、当家でも、CentOS5.5を稼動しており、運良くPT2も入手出来たので、録画サーバを構築したいと思います。
当家では、外部公開用に既にApacheが動作して居るのですが、こういった環境での構築の場合、外部公開用のhttpデーモンを他のソフトに置き換え、Apacheはイントラネット専用にポートも変えて設定し、構築しないと無理でしょうか?
投稿: サワッディーカップ | 2010年6月15日 (火) 12時45分
外部公開用サービス側にセキュリティ上の問題が出ないのであれば,既存の環境上で運用しても良いと思いますよ.もしも設定を分ける必要がある場合は,apacheのバーチャルホストで分けると良いかもしれません.
また,epgrecへのアクセスに対してIP認証やbasic認証をかけるようにし,『イントラネットの端末&特定ユーザのみアクセス可』のようにしておけば,最低限のセキュリティは確保できるかと思います.
投稿: tadachi | 2010年6月15日 (火) 18時49分
tadachi様
レスありがとうございます。
Atom機が有るので、此れで別のサ録画専用ーバを立てようとも思いましたが、2台動かすと電気代も掛かってしまうので、1台で運用して行こうと思います。
投稿: サワッディーカップ | 2010年6月15日 (火) 21時28分
おかげさまで、快適な録画生活を楽しんでおります。その節はありがとうございました。
投稿: サワッディーカップ | 2010年7月25日 (日) 18時53分
貴重な情報をありがとうございます。大変参考にさせていただいております。
諸々の事情で、Fedora14をベースに録画システムを構築しようとしているのですが、FC14には既にearth-pt1というLinuxの標準ドライバがあり、これがPT2を乗っ取っているようです。しかし/dev/pt1videoXのようなノードは見当たらないので、多分pt1_drv.koでこれを置き換えるべきだと思うのですが、何かご存知でしょうか?
投稿: hiro | 2010年12月29日 (水) 06時02分
hiroさん
私はkernelに同梱されているv4l-dvbドライバを使用していないのですが,デバイスファイルは『/dev/dvb/adaptar?』になります.?の部分が0,2がBS/CS,1,3が地デジです(環境によって違うことがあるかも).
以下のページで大変詳しく解説されていますので,参考にしてみてください.
http://d.hatena.ne.jp/korokorokoron/20100807/1281176835
復号の辺りがちょっとややこしいかもしれませんね….kernel標準ドライバをdisableにして,別途入れる方が楽かもしれません.
投稿: tadachi | 2010年12月29日 (水) 13時41分
これまた有益な情報を早速にいただき、本当にありがとうございます。
私はアメリカ合衆国に住んでいまして、5年前に6ga.netに刺激を受けてアナログ2チャンネルの録画システム(http://projects.arkusa.com/tv/)を構築し、都内のハウジングサービスに寄託して家族で毎週十数時間分の日本のテレビを楽しんできました。来年の7月24日の問題は、とりあえずケーブル会社のD-A変換で先延ばしできそうなのですが、5年前に構築したシステムは寿命的にいつ壊れてもおかしくない状況(5年間での実績は、電源の死亡が1回と停電から上手く普及できなかった以外は手動リセットは2回だけ)ですので、新システムにリプレースを計画していたところ、運よくこちらのサイトにめぐり逢い、ディジタルで行けそうなので大変喜んでいるところです。
既に新システムのハードウェア(IntelCore i5/3.2GHz、2GB、2TBx3 RAID1、PT2、アナログチューナx2)とOSおよび基本的なネットワーク関係は組みあがり、現在こちらの記事を見ながらPT2およびEPG関係のソフトウェアを入れているところです(アナログチューナは、ディジタルシステムが稼動するまで既存のソフトウェアで「つなぐ」ためです)。
何しろ、一旦設置してしまうと太平洋の反対側からSSHでしか操作できず、また実際の放送受信に絡むところは設置前には一切テストできないので、こちらのサイトのように詳しく解説されている情報は本当に助かります。特に、ドライバ関係はカーネルのOOSPが出ると文字通り致命的(普段無人の設置場所での手動リセットは一回5000円かかります)なので、可能な限り安全策で行かねばなりません。
ところで、大変に不躾なお願いなのですが、EPGデータのコピーをいただけないでしょうか?録画したTSデータは、データレートを低減するために再圧縮して、番組タイトルなどのメタデータと一緒に既存の転送・視聴システムに載せたいのですが、EPGも実際の録画と同様にこちらでは一切テストできないので困っています(旧システムではiEPGを使っているのでネットからデータを得られたのですが)。MySQLのエクスポートでもあれば、実際にDBには載らなくてもとても助かるのですが…。もし無理のない範囲でお願いできれば、と思っています。
重ね重ね、本当にありがとうございます。
投稿: hiro | 2010年12月29日 (水) 15時17分
hiroさん
とても素晴らしい環境を構築されていますね.安定稼働させるまでにかなりご苦労されたのではないかと推察致します.
主にCATVチューナからの録画用ですが,うちでもアナログ録画のシステムが動いています.
ivtvドライバの開発をしていた関係で,TV録画を本格的にし始めたのですが(気が付いたらアジア担当になってた :-) 今は何もしてないけど…),日本の環境でXMLTVが動き始めたり,MythTVが普及し始めた頃はワクワクしましたね.おそらくhiroさんもリアルタイムで体験されていたのではないかと思うのですが,当時のことを思い起こすと懐かしい限りです.
さて,EPGの生データの件ですが,諸々事情がありまして,正直ちょっと苦しいです.ダウンローダーを探せば,『研究用の』生tsファイルがアップされているかもしれませんので,そちらを利用することが可能かと思います.
あと,現在iEPGを使用したシステムを動かしているとのことですが,ontvjapanの仕様変更で苦労されたことがお有りでしたら,もっと簡単に解決出来そうです.epgrecはEPG情報の取り出しの際に,epgdumpというプログラムを使用しています.このプログラムはtsからEPGデータを抜き出すのですが,その出力形式はXMLTV形式のXMLになります.
もしかしたら,現在ご利用中の録画システムの大半が,そのまま流用出来るかもしれませんね.
投稿: tadachi | 2010年12月30日 (木) 00時17分
EPGの件は了解しました。もともと厚かましいお願いでしたし、どうせ設置後は実機で得られると言うか、事前にコードを読めばインタフェースできると言うことで、それほどハードルは高くないと思います。一つだけヒントをいただけますか?iEPGと同じような内容・形式(MIMEかどうかは別として)でしょうか?もしそうなら、現行のシステムのバックエンドに接続するのが、かなり楽そうなのではないかと考えています。
もう一つ、分かれば教えていただきたいのは、TSからの変換です。最終再生機器(BuffaloのNMP)とインターネット転送のバンド幅の制約から、録画TSデータをそのままでは使えず、4Mbps程度の1280x720のMPEG4(DIVX)のAVIに録画サーバ上のLinuxでトランスコードする必要があるのですが、FFMPEGで可能でしょうか?それとも別のプログラムがあるのでしょうか?昨日、マルチメディア関係の仕事をしている日本の知人に尋ねたところ、DVDのTSとは別物だと言うことしか分かりませんでした。録画サーバの処理能力に余裕があるので、一旦FFMPEGに入力できる形式に変換してから再度FFMPEGで処理すると言う方法も考えられるのですが、この件に何かご存知でしたらよろしくお教えください。
現行のアナログ録画システムの開発は、ivtvを始め、諸先輩方の素晴らしい仕事のおかげで、思った以上に円滑・予定通りに進みました。ウェブにも書いてありますが、6月にプロジェクトの構想を開始し、8月にアマゾンで購入したNMPを法事のために訪日した妻が持ち帰り、自宅のケーブルTVで基本的なフィージビリティの検証が済んだところで本格的な開発を開始し、年末に日本に家族旅行に行ったときに設置して、正月には最初の録画が設計どおりカリフォルニアに送られてきました。もちろん、その後も(そして現在でも)システムの修正・改良は続いていますが、設計意図であった「家電」として動作は、ごく初期から安定して実現でき、家族一同これなしでは生活できない、とは大げさですが、「在って当たり前の日本のテレビ」として生活の一部となっています。「年末の日本行きまでに基本機能の実現とリモート開発続行可能な状態」という、動かし難い締め切りのゴールは達成できましたので、ちょっと誇りに思うところです(「はやぶさ」の快挙に比べたら取るに足りませんが)。
現在構築中の新システムの概要です。
・Intel Core i5 650 3.2GHz
・2GB DDR3
・2TB x3 RAID1
・Hauppauge WinTV PVR-350 x2 (analog)
・Earthsoft PT2 (digital)
・Fedora 14 (Linux 2.6.35)
ハードウェアのコストが約$1300と、現行システムの約2倍になりましたが、PT2と3台のRAID1のHDDが大きいです。たかが録画サーバにしては、特にHDDがオーバスペックに見えるかもしれませんが、普段無人のサーバルームに置かれるために信頼性を確保したいことと、ディスクスペースの半分以上をリモートファイルバックアップ用に確保するためです。リモートファイルバックアップは、セキュリティ上VPN上でSSH上のRSYNCで圧縮・転送したファイルをENCFSに書き込むという動作を録画と並行して行うので、ある程度のCPU処理能力が必要です。ちなみに、現行システムのCempron 1.8GHzで実時間の2倍以上の時間がかかるMPEG2 8MbpsからMEPG4 2Mbpsへのトランスコードは、新システムでは実時間の20%で完了と、10倍以上の性能向上が確認できましたし、シングルコアからデュアルコア+HTで更に「サクサク度」が増すと期待しています。
余談ですが、この夏に、4年前に構築した我が家の中央サーバの4台のRAID5 HHDのうち2台が死ぬという事故に見舞われました。幸い、同じ筐体内の他のJBOD HDDに毎晩書き込んでいたバックアップから、過去半世紀分の家族写真、20年分の家計簿やメイルなど、必要なファイルは全て回復できました(残念ながら、録画された番組はバックアップがありませんでした)が、この事故は、それまで「どうせRAIDがあるから、バックアップなんて誤って消去したファイルの復活ぐらいにしか使わないだろう(事実、それまでそうでした)」という私の安易な認識を「バックアップこそ、本体がダメになったときの最後のよりどころ」と転換させるに十分な出来事で、独立したバックアップ専用サーバ(2TB x4 RAID5)を構築して中央サーバとは別の部屋に設置したり、前述の「カネで取り戻せない」ファイルは外部の有料リモートバックアップサービスにバックアップするなどの出費を開始するきっかけとなりました。家族にサーバに致命的な事故があったことを告げたときに、小学生の娘が見せた「バケーションの写真とかも、みんな無くなっちゃったの?」と言った悲しそうな顔は忘れられません。今回の録画サーバにバックアップ機能を持たせる理由は、その辺にあります。
投稿: hiro | 2011年1月 1日 (土) 07時02分
hiroさん
今年もよろしくお願いします.
>iEPGと同じような内容・形式(MIMEかどうかは別として)でしょうか?
既にご存知のことと思いますが,iEPGのようにベタでファイルが落ちてくるわけではありませんので,TSファイルストリームを解析してsplitする必要があります.もし,スクラッチからプログラムを組む予定でしたら,ARIB STD-B10を読まれるのが良いかと思います.
epgdumpのようなフロントエンドを使用される予定でしたら,そのプログラムのコードやマニュアルを読む方が早いでしょう.
先日書きましたように,epgdumpはXMLTV形式のXMLを吐きます.現在使用中のプログラムがどのような形式の入力を期待しているかを確認し,不足分があればフィルタを書く形で対応するのが良いと思います.
PHPのPGになりますが,epgrecではgetepg.phpがこのフィルタ部分の機能を含んでいますので,参考になると思います.
>もう一つ、分かれば教えていただきたいのは、TSからの変換です。
pt2の出力をトランスコードするする前に,スクランブルの解除と任意のストリームのsplitが必要になります.
split等の概要に関しては,
https://tadachi.txt-nifty.com/blog/2010/02/pt2mpeg2-tsspli.html
にまとめていますので,ご一読ください.ffmpegでトランスコードする場合は,9/22に追記した部分で参照しているページが,特に参考になると思います.
私の場合もTSファイルを解像度720pの別形式にトランスコードし,BuffaloのLT-H91LANやDLNA経由でPS3等で視聴しています(ただしcodecはh.264.これらシステムの連動については,過去のブログエントリーで触れました).当初はffmpegでやろうとしていたのですが,CMのタイミング等で音声多重やアスペクト比の切り替えが起きた際に,ffmpegが悲しいことになることが 多発していました(今は解決されているかもしれません).そのため,現在はwin上でTMPGEncを使用し,バッチでトランスコードをしています.
ビットレートと画質のトレードオフになると思いますが,エンコード時のパラメータ等,SDと比べて調整が大変な部分がかなりあります.当初は試行錯誤の繰り返しになると思いますが,是非頑張ってみてください.
投稿: tadachi | 2011年1月 3日 (月) 01時00分
明けましておめでとうございます。
大変丁寧なご説明をいただき、ありがとうございました。とても参考になります。EPGに関しては、epgdumpの出力のXMLをフィルタ処理してiEPG(MIMEもどき)にすれば、現行システムとの親和性がよく、しかも楽そうなので、その方向でやってみます。
TSは面倒そうですね。ARIBの復号だけでなく、不要なセグメントの除去も必要で、しかもストリーム途中でデータ形式が変わるとは…。でも、色々教えていただき、何とかなりそうな気もします。以前、AVIファイル(RIFFフォーマット)の分割・結合などを行うツールをPerlで書いたことがありますが、もっと難しいかな?私の場合、ビットレート低減が一つの目的であるトランスコードは、インターネットで転送する前にリモートで実行しなければならないのでWindowsは使えず、この辺を何とかしなければならないようです。
我が家のBuffalo PC-P3LAN/DVDは、5年目にして電源が死にました。PC用の電源を流用することもできそうでしたが、ソフトスイッチの極性が逆なのとファンノイズを嫌い、アメリカ仕様の中古のPC-P3LAN/DVD(日本語不可)を手に入れて電源を移植しました。PC-P3LAN/DVDは、早送りなどを連続するとフリーズするというバグがあったりして結構使いにくいので、今度日本に行ったときにLT-V100あたりを買って来ようかとも考えています。
現在、昨年日本に行ったときにイオンで購入したピクセラ製のチューナに付属のB-CASカードをリーダに挿入して、動作を確認したばかりです。一見裏表逆に入れることを知らず、最初はちょっと焦りました。当初は、このチューナでアナログにして取り込むことを予定していたのですが、こちらのサイトに出会い、IRリモートのシミュレータを書くなどというおよそ非生産的な作業をしなくて済みそうです。
数日前、私の現行のアナログシステムのウェブ(http://arkusa-tv.blogspot.com/2011/01/news.html)を見たテキサスの人が、浜松の奥さんの実家にDVRとSlingBoxを置いてシステムを構築しようを考えているけど、画質があまり良くなさそうだし、iEPGをどうやって使ったらよいかわからない、と尋ねてきたので、ディジタル化した新システムを構築中だと答えたら、「お前のシステムが出来上がるまでプロジェクトを延期して同じものを作る(コピーさせてくれ)」とのことでした。
また教えを乞うことがあると思いますが、その際はどうかよりしくお願いします。
投稿: hiro | 2011年1月 3日 (月) 14時58分
どうも初めまして MOD(マスター・オブ・ドヘ○タイ)'s_emperor と申します。
PT2 + EPGreq による録画予約について調べているうちにこちらへ辿り着きました。
突然の質問にて恐縮なのですが下記症状について対処をご存知であればご教授頂けませんでしょうか。
症状:
・番組表から録画予約を入れる事はできるが録画されない(スクリプト do-record.sh による録画はできる)。
EPGrec 本家にある下記の録画確認方法も問題なく録画されます。
$ OUTPUT=test.ts CHANNEL=27 DURATION=30 TUNER=0 MODE=0 TYPE=GR /var/www/epgrec/do-record.sh
文末に詳述しますがrecorder.php の関数 msg_get_queue()で $ipc_key の値が得られていないようです。
使用環境:
・OS
Fedora15
[mods_emperor@PT2Server ~]$ uname -r
2.6.38.8-35.fc15.i686.PAE
・インストールされているもの:
[root@PT2Server ~]# yum list installed | grep php
php.i686 5.3.6-2.fc15 @fedora
php-cli.i686 5.3.6-2.fc15 @fedora
php-common.i686 5.3.6-2.fc15 @fedora
php-mbstring.i686 5.3.6-2.fc15 @fedora
php-mysql.i686 5.3.6-2.fc15 @fedora
php-pdo.i686 5.3.6-2.fc15 @fedora
[root@PT2Server ~]# yum list installed | grep sql
mysql.i686 5.5.14-2.fc15 @updates
mysql-libs.i686 5.5.14-2.fc15 @updates
mysql-server.i686 5.5.14-2.fc15 @updates
php-mysql.i686 5.3.6-2.fc15 @fedora
sqlite.i686 3.7.5-3.fc15 @anaconda-InstallationRepo-201105131946.i686
[root@PT2Server ~]# rpm -qa at
at-3.1.12-8.fc15.i686
その他インストールされているもの
chardrv
epgdumper2-utf8
pcsc_scan
・各ディレクトリとファイルのパーミッション確認
[root@PT2Server ~]# ls -alF /var/www/epgrec/ | grep -E 'cache|templates|video|thumbs|settings|do-record.sh|getepg.php|recomplete.php|gen-thumbnail.sh'
drwxrwxrwx 2 apache apache 4096 7月 21 14:41 cache/
-rwxr-xr-x 1 apache apache 832 7月 21 14:41 do-record.sh*
-rwxr-xr-x 1 apache apache 277 7月 21 14:41 do-record.sh.friio*
-rwxr-xr-x 1 apache apache 832 7月 21 14:41 do-record.sh.pt1*
-rwxr-xr-x 1 apache apache 674 7月 21 14:41 do-record.sh.sample*
-rwxr-xr-x 1 apache apache 272 7月 21 14:41 do-record.sh.test*
-rwxr-xr-x 1 apache apache 245 7月 21 14:41 gen-thumbnail.sh*
-rwxr-xr-x 1 apache apache 5562 7月 21 14:41 getepg.php*
-rwxr-xr-x 1 apache apache 259 7月 21 14:41 postsettings.php*
-rwxr-xr-x 1 apache apache 1849 7月 21 14:41 recomplete.php*
drwxrwxrwx 2 apache apache 4096 7月 21 15:53 settings/
drwxr-xr-x 2 apache apache 4096 7月 21 14:41 templates/
drwxrwxrwx 2 apache apache 4096 7月 21 23:51 templates_c/
drwxrwxrwx 2 apache apache 4096 7月 21 14:41 thumbs/
drwxrwxrwx 2 apache apache 4096 7月 21 14:41 video/
[root@PT2Server ~]#
・SELinux
無効に設定済み
録画予約動作確認:
・ブラウザ上から録画予約を入れてから atq を確認
[mods_emperor@PT2Server ~]$ sudo atq
[sudo] password for mods_emperor:
13 Mon Jul 25 12:42:00 2011 a apache
[mods_emperor@PT2Server ~]$ at -c 13
13: Not owner
[mods_emperor@PT2Server ~]$ sudo at -c 13
#!/bin/sh
# atrun uid=48 gid=48
# mail apache 0
umask 22
MODE=0; export MODE
FFMPEG=/usr/bin/ffmpeg; export FFMPEG
FORMER=20; export FORMER
THUMB=/var/www/epgrec/thumbs/GR27_20110725124500_20110725130000_\?\?\?\?\?\?\?\?\?\?\.ts.jpg; export THUMB
DURATION=920; export DURATION
PWD=/var/www/epgrec/video; export PWD
SID=hd; export SID
CHANNEL=27; export CHANNEL
SHLVL=1; export SHLVL
TYPE=GR; export TYPE
TUNER=0; export TUNER
OUTPUT=/var/www/epgrec/video/GR27_20110725124500_20110725130000_\\?\?\?\?\?\?\?\?\?\?\.ts; export OUTPUT
cd /var/www/epgrec/video || {
echo 'Execution directory inaccessible' >&2
exit 1
}
${SHELL:-/bin/sh}
Message-Id:
Subject: Output from your job 13
To: apache@PT2Server
PHP Fatal error: Call to undefined function msg_get_queue() in /var/www/epgrec/recorder.php on line 151
スクリプト /var/www/epgrec/recorder.php の151行目にあるmsg_get_queue()が定義されていない、と言っている模様。
・スクリプト「recorder.php」のエラー行付近を参照
[root@PT2Server cron.d]# vi /var/www/epgrec/recorder.php
147 ////// ここから本編
148
149 // メッセージハンドラを得る
150 $ipc_key = ftok( RECORDER_CMD, "R" );
151 $msgh_r = msg_get_queue( $ipc_key ); ←この行です
PHP に関して全くの無知ですが、どうも見た感じでは msg_get_queueなる SystemV のメッセージキューを得る関数が ipc_key なる変数の
値を得られないという事のようです。そしてプロセス間通信を確認する ipcs コマンドで下記のように確認した所メッセージキューが得られて
いない(存在しない?)ようです。
[root@PT2Server epgrec]# ipcs -a
------ 共有メモリセグメント --------
キー shmid 所有者 権限 バイト nattch 状態
------ セマフォ配列 --------
キー semid 所有者 権限 nsems
0x00000000 131072 apache 600 1
0x00000000 163841 apache 600 1
------ メッセージキュー --------
キー msqid 所有者 権限 使用バイト数 メッセージ
→空白
Apache エラーログ
下記エラーはクライアントからPT2Serverホストへhttpアクセスしたタイミングで発生しているようです。
[root@PT2Server ~]# tail -n 40 /var/log/httpd/error_log
[Mon Jul 25 12:33:32 2011] [error] [client 192.168.0.41] PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the date_default_timezone_set() function. In case you used any of those methods and you are still getting this warning, you most likely misspelled the timezone identifier. We selected 'Asia/Tokyo' for 'JST/9.0/no DST' instead in /var/www/epgrec/recLog.inc.php on line 27, referer: http://pt2server/epgrec/index.php
エラーログに指摘されている「recLog.inc.php on line 27」の部分
[root@PT2Server ~]# vi /var/www/epgrec/recLog.inc.php
27 $log->logtime = date("Y-m-d H:i:s");
Apache アクセスログ
上記エラーログの発生時間に一致
[root@PT2Server ~]# tail /var/log/httpd/access_log
192.168.0.41 - - [25/Jul/2011:12:33:15 +0900] "GET /epgrec/imgs/prg_bg2.png HTTP/1.1" 304 - "http://pt2server/epgrec/index.php" "Mozilla/5.0 (Macintosh; U; PPC Mac OS X 10_5_8; ja-jp) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/5.0.5 Safari/533.21.1"
以上のような状況です。もし、この手の原因にお心当たり等ありましたらご教授のほど宜しくお願い致します。
投稿: MODs_Emperor | 2011年7月25日 (月) 15時32分
MOD's_emperor さん
epgrecですが,最新のテスト版を利用されているようですね.本記事では,epgrec-090814.tar.gzをベースに解説していますので,若干中身が異なります.(私の環境では安定しているため,現在は最新版の追っかけをしていません)
で,エラーの原因ですが,いずれもPHPの環境問題だと思います.
まず
> PHP Fatal error: Call to undefined function msg_get_queue() in /var/www/epgrec/recorder.php on line 151
の方ですが,「msg_get_queue()という関数が未定義」という意味のエラーです.fedoraのパッケージの中身は見ていませんが,おそらく--enable-sysvmsgを付けてPHPをビルドされていないんじゃないかと思います.
PHPを手動でビルドし直せばうまく動くのではないかと思います.
次に
> Mon Jul 25 12:33:32 2011] [error] [client 192.168.0.41] PHP Warning: date(): It is not safe to rely on the system's timezone settings. You are *required* to use the date.timezone setting or the(後略)
の方ですが,こちらはPHP version5.3.6の仕様変更によるものです.メッセージにある通り,タイムゾーンを設定してください.
具体的な設定方法は,次のページに詳しくまとめられていました.
http://kngy.net/2011/04/28/php5-timezone-warning/
投稿: tadachi | 2011年7月25日 (月) 18時37分
急な問い合わせにも関わらずご教授頂き誠に恐縮です(しかもこんなに早く!)。
> PHPを手動でビルドし直せばうまく動くのではないかと思います.
こちらの対応とタイムゾーンの設定が完了させて後ほど結果報告をさせて頂きたいと思います。
感謝の意と共にひとまず失礼致します。
投稿: MODs_Emperor | 2011年7月25日 (月) 19時16分
お世話になっております。
報告が大変遅くなり恐縮です。おかげさまでひとまず DNS エラーからは解放されました。ありがとう御座います。
実は 未だソースからインストールしたPHP5に対するシンボリックリンクで難儀しております。
シンボリックリンク程度の初歩的な質問で大変気が引けるのですが、どうにも適切なリンク先の情報が見つけられずお伺いさせて頂く次第です。
・録画時間頃に届くエラーメッセージ
[root@PT2Server ~]# vi /etc/httpd/conf/httpd.conf
/bin/bash: /var/www/epgrec/recorder.php: /usr/bin/php: bad interpreter: No such file or directory
・シンボリックリンクの設定について
多くのサイトでは
# ln -s /usr/local/bin/php /usr/bin/php
という様にシンボリックリンクを貼るように説明があるのですが当方の環境では /usr/local/bin/ には php は存在せず make install 完了時の
メッセージを見ると /usr/src 配下に php 関連のファルがあるため下記の様にリンクを設定しました。
# ln -s /usr/src/php /usr/bin/php
# ln -s /usr/src/php-5.3.6/sapi/cli/php /usr/src/php
しかし録画時間を迎えた結果は
/bin/bash: /var/www/epgrec/recorder.php: /usr/bin/php: bad interpreter: Permission denied
の様になってしまいます。パーミッションは以下の様になっております。
[root@PT2Server ~]# ls -alF /usr/src/php-5.3.6/sapi/cli/php
-rwxrwxr-x 1 root root 20752248 7月 26 14:21 /usr/src/php-5.3.6/sapi/cli/php
root ユーザ以外も読み/実行ができるので ユーザ apache からも実行できそうな気がするのですが、そもそもリンク先として適当で無い気も
しています。
PHP関連の格納ディレクトリ
[root@PT2Server ~]# find / -name php
/usr/share/swig/2.0.3/php
/usr/src/php-5.3.6/sapi/cli/php
/usr/src/php-5.2.6/bin/php
/usr/src/php-5.2.6/lib/php
/usr/src/php-5.2.6/include/php
/usr/src/php
・PHP5 ソースからのインストール後のApache の設定ファイルについて
それと Apache 設定ファイル ( httpd.conf ) には LoadFile として mysql.so を指定しなければならないと思いますが mysql.so を find で探した所
/usr/lib/perl5/vendor_perl/auto/DBD/mysql/mysql.so
にありました。
試しに
LoadFile /usr/lib/perl5/vendor_perl/auto/DBD/mysql/mysql.so
として構文チェックをすると
httpd: Syntax error on line 243 of /etc/httpd/conf/httpd.conf: Cannot load /usr/lib/perl5/vendor_perl/auto/DBD/mysql/mysql.so into server:
/usr/lib/perl5/vendor_perl/auto/DBD/mysql/mysql.so: undefined symbol: PL_memory_wrap
となります。mysql.so をどこかにコピーして指定すべきかと推測するのですが、適切なコピー先としてのディレクトリの判断がつきません。
現在の状況は Apache からmysql にアクセスできないという事になるのでしょうか?
その他 httpd.conf へ書き加えられたもの
LoadModule php5_module /usr/lib/httpd/modules/libphp5.so
AddType application/x-httpd-php .php .php5
AddType application/x-httpd-php-source .phps
大変厚かましい問い合わせと思いますが、ご教授の程頂けたらと存じます。
------------------------------------------------------------------------------------------------------------------
・下記は参考までに PHP5 インストール時のオプション設定とその結果です
PHP5のconfigure オプションは下記の様に実施
[root@PT2Server src]# cd /usr/src/
[root@PT2Server src]# cd php-5.3.6
[root@PT2Server php-5.3.6]# ./configure --prefix=/usr/src/php-5.2.6 --enable-sysvmsg --enable-mbstring --with-mysql=/usr/share/mysql --with-apxs2=/usr/sbin/apxs --with-gd --with-zlib --with-jpeg-dir --mcrypt
・インストール結果
[root@PT2Server php-5.3.6]# make install
Installing PHP SAPI module: apache2handler
/usr/lib/httpd/build/instdso.sh SH_LIBTOOL='/usr/lib/apr-1/build/libtool' libphp5.la /usr/lib/httpd/modules
/usr/lib/apr-1/build/libtool --mode=install cp libphp5.la /usr/lib/httpd/modules/
libtool: install: cp .libs/libphp5.so /usr/lib/httpd/modules/libphp5.so
libtool: install: cp .libs/libphp5.lai /usr/lib/httpd/modules/libphp5.la
libtool: install: warning: remember to run `libtool --finish /usr/src/php-5.3.6/libs'
chmod 755 /usr/lib/httpd/modules/libphp5.so
[activating module `php5' in /etc/httpd/conf/httpd.conf]
Installing PHP CLI binary: /usr/src/php-5.2.6/bin/
Installing PHP CLI man page: /usr/src/php-5.2.6/man/man1/
Installing build environment: /usr/src/php-5.2.6/lib/php/build/
Installing header files: /usr/src/php-5.2.6/include/php/
Installing helper programs: /usr/src/php-5.2.6/bin/
program: phpize
program: php-config
Installing man pages: /usr/src/php-5.2.6/man/man1/
page: phpize.1
page: php-config.1
Installing PEAR environment: /usr/src/php-5.2.6/lib/php/
[PEAR] Archive_Tar - installed: 1.3.7
[PEAR] Console_Getopt - installed: 1.3.0
[PEAR] Structures_Graph- installed: 1.0.4
[PEAR] XML_Util - installed: 1.2.1
[PEAR] PEAR - installed: 1.9.2
Wrote PEAR system config file at: /usr/src/php-5.2.6/etc/pear.conf
You may want to add: /usr/src/php-5.2.6/lib/php to your php.ini include_path
/usr/src/php-5.3.6/build/shtool install -c ext/phar/phar.phar /usr/src/php-5.2.6/bin
ln -s -f /usr/src/php-5.2.6/bin/phar.phar /usr/src/php-5.2.6/bin/phar
Installing PDO headers: /usr/src/php-5.2.6/include/php/ext/pdo/
投稿: MODs_Emperor | 2011年7月27日 (水) 18時14分
MODs_Emperorさん
PHPのインストール方法は,PHPのドキュメントを参照して下さい.そして結果からあれこれ試行錯誤するのではなく,今実行したコマンド/パラメータがどのような影響を及ぼすのか,結果何が出来るのかを理解して行うようにした方が良いです.現在,環境を壊す方向に歩みつつあるように見受けられますので,慎重になった方が良いと思う.環境をグチャグチャにしてしまった後で,きれいな状態に戻すのは,大変に骨です.
例えば.
>多くのサイトでは
># ln -s /usr/local/bin/php /usr/bin/php
>という様にシンボリックリンクを貼るように説明があるのですが当方の環境では /usr/local/bin/ には php は存在せず
とのことですが,ビルド時のパラメータとして
>./configure --prefix=/usr/src/php-5.2.6 <後略>
のように,自ら全く別のディレクトリにインストールするように指定してビルド&インストールしているのですから,/usr/local/bin以下に無いのは当然です.
少し厳しいことを書きますが,今のやり方のまま進めても,うまく動くようには思えません.PT2+epgrecを手っ取り早く動かしたいのであれば,動いている人の環境と全く同じ環境を構築するのが良いでしょう.そういう意味では,UbuntuやCentOSで組む方が楽でしょう.
また,そもそもepgrecが動作しなかった原因は,fedoraのデフォルトで使用されるPHPパッケージで,"msg_get_queue()"が利用できない状態であったことと,PHPの設定不足に依るものです.スクラッチからのPHPのインストールが困難であるならば,安直にepgrecの最新版かつテスト版を使おうとせず,"msg_get_queue()"を使用しない少し前の版を使用するという選択をしても良いのではないでしょうか.
投稿: tadachi | 2011年7月27日 (水) 19時19分
毎度お手数を取らせまして誠に恐縮です。
了解致しました。確かにパラメータにしても完全な理解がないまま進めておりましたので環境を壊す方向に向かっているようです。
現状、特に失って困るデータは入っておりませんので勉強がてらもう少しいじり倒してからmsg_get_queue()を使用しない版で構築してみます。
これまで急な問い合わせに対応して頂き感謝の念にたえません。どうもありがとう御座いました。
投稿: MODs_Emperor | 2011年7月27日 (水) 20時21分
いつも参考にさせて貰ってます。
現在CentOS6で録画機を構築していますが
私もmsg_get_queue()が無い件が発生しました。
PHPを再ビルドする事も考えましたが
yumでphp-processをインストールするだけで
問題が解消されました。
同じ事態に遭遇した場合の道標にここで報告致します。
投稿: | 2011年11月17日 (木) 21時20分
情報ありがとうございます.今も多くの方が検索エンジン経由で来られていますので,大変助かります.エラーメッセージをキーワードとして検索されている方がかなり多いので,一連の情報で,大勢の方が救われると思います.
今後もコメント機能をクローズせずに開けておきますので,また何かありましたら情報をお寄せ下さいませ.
投稿: tadachi | 2011年11月17日 (木) 23時59分
数日前から同様の症状で格闘していたのですが、yum install php-process で録画ができるようになりました。
sourceforgeのepgrecフォーラムにこの件の質問を書いたので
http://sourceforge.jp/forum/forum.php?thread_id=31001&forum_id=22249
そっちにも結果を載せときます。ちなみにOSはcentos6、使用したepgrecはepgrec_20111001.tar.gzです。
投稿: moguri.au | 2011年11月28日 (月) 20時43分
すみません、一言足りなかったです。
有益な情報大変ありがとうございました。m(_ _)m
投稿: moguri.au | 2011年11月29日 (火) 16時17分
moguri.auさん
ご連絡ありがとうございます.
環境が新しくなるのに伴い,本エントリーで解説している内容が次第に古くなって行くと思います.「ここもハマるポイントで,このように解決できます」のようなお話がありましたら,是非知らせくださいませ.
投稿: tadachi | 2011年11月29日 (火) 17時54分