ダウンロード

ライセンス

 当初は制約が少ないBSDスタイルのライセンスで配布しようと思っていましたが調べてみるとSmartyがLGPLを採用していることがわかりました。Smartyを同梱する場合、GPLかLGPLを選択するのが安全ということで本来はライブラリ用ですがLGPLを使うことにします。epgrecを改変・再配布する場合は、 LGPLのライセンス文書を同梱して配布してください。epgrec本体の著作権はGADGET LTD.が保有しておりLGPLライセンスに従う限り好きにしていただいて構いません。

epgdumpr2のライセンスについて

 epgrecが使用するepgdumpr2は、tomy氏が作成したツールです。READMEによるとLGPLということになるようです。ライセンスに従って適切に取り扱ってください。

最新アーカイブ/ソースコードのダウンロード

githubを使っていましたが残り容量100MBになったので、sourceforge.jpにリポジトリを移しました。

最新のアーカイブ

2010年3月22日版
sourceforge.jpのダウンロードページ

テスト不十分なので動かないなどあったらsourceforge.jpの会議室に書いてください。twitter(epgrec)の方も見ているので、そちらで何かしてもらった方が早く見るかもしれません。

バージョンアップガイド

いろいろと手を加えているので、バージョンアップを行う場合は下記をよく読んで行ってください。手順を抜かした場合の動作は保証しません。

2010年3月22日版へのアップグレード

 DBレコードを変えているため、アップグレードするには少々手間がかかります。また、config.phpの互換性が無くなっているので作り直す必要があることにも注意してください。

  • まず、事故に備えて念のためにDBのバックアップを行います。ホームディレクトリなどで次のようにコマンドを実行してください。
    mysqldump -u yourname -p db_name >epgrec_backup.sql [Enter]
    yournameはDB接続ユーザー名、db_nameはepgrecのテーブルがあるDB名を指定します。epgrec_backup.sqlに現時点のデータがSQLとして保存されます。万が一(まず事故は起こりえません)のときには次のようにリストアできます。
    cat epgrec_backup.sql | mysql -u yourname -p [Enter]
    必要がない限りリストアは行わないでください。
  • config.phpのバックアップ
    次のようにコマンドを実行して今使っているconfig.phpのバックアップを行います。
    sudo cp /your/install/path/epgrec/config.php /your/install/path/epgrec/config.php.orig
    /your/install/path/はあなたのepgrecのインストールパスです。以降、読み替えてください。
  • epgrecを上書き
    sudo tar xvzpf epgrec-20100322.tar.gz -C /your/install/path/ [Enter]
    として今使っているepgrecに上書きします。
  • config.phpの作成
    展開したアーカイブのconfig.php.sampleをリネームし、config.phpを作成し直します。
    sudo mv /your/install/path/epgrec/config.php.sample /your/install/path/epgrec/config.php
    /your/install/path/epgrec/config.phpをエディタで開き、$GR_CHANNEL_MAPの右辺などを環境に合わせて変えてください。このとき、先にバックアップをとっておいたconfig.php.origの内容をコピー&ペーストすると楽でしょう。
  • アップグレードスクリプトの実行
    カレントをepgrecのインストール先ディレクトリにします。
    cd /your/install/path/epgrec/ [Enter]
    アップグレードスクリプトを実行します。
    ./upgrade_db.php [Enter]

以上で完了です。

過去の奴

過去のバージョンはこちらから

更新履歴

2010年3月22日版

  • チャンネルスキップの追加
  • 時間帯絞り込み
  • 検索の小変更
  • ログ機能の追加
  • その他細かな修正・調整

2010年3月1日版

  • CSのEPG取得に問題があったのを修正
  • 修正ついでにEPG取得の並列化を組み込みEPG取得にかかる時間を短縮。並列化getepg.phpに問題が生じた(番組表が更新されない、EPG取得中に番組表の表示が極端に重くなる等)場合は、getepg.old.phpをgetepg.phpに上書きコピーして使ってください。過去のバージョンと同じシリアルな処理です。

2010年2月25日版

  • dakkaさんのCS対応を初めて取り込んでいます
  • キーワードに曜日を含めることが出来るようにした
  • 簡易録画予約、キーワード録画予約それぞれの録画モードを設定できるようにした
  • サービスIDを各チャンネルに設定・保存できるようにした
  • 細かなバグフィックス(FILE_SYSTEM_ENCODINGが効かない問題、拡張子が付かない問題などに対応したつもり)

8月14日版

  • templates/envSettings.htmlのtypoで地デジチューナーの台数が変えられなかったのを修正
  • getepg.phpのereg_replaceをstr_replaceに

8月1日版

  • config.php内で行う必要があった多くの定数による設定をWebブラウザでできるようにした
  • 番組表の大きさや表示する長さをカスタマイズ可能にした
  • サムネールの生成方法を仕様変更案の方(gen-thumbnail.shを用いる方法)に切り替え
  • VLCをクライアントに用いたタイムシフト再生に関連する小変更

7月26日版

  • 予約カスタマイズの方法を変更(ページ遷移を1つ減らした)
  • 予約した番組のタイトルと概要を変更可能に
  • 録画済み番組のタイトルと概要を変更可能に
  • 制限:7月26日版より前のバージョンで録画したデータに関してはmediatomb側のタイトルや概要が変更されません

7月17日版

  • mediatomb拡張がPHPのバージョンによって動かないことがあるのを修正
  • メイン番組表の表示を高速化(2/3の時間で表示されるはず)

7月15日テスト版

  • 録画ファイルを削除する機能の追加
  • 録画ファイル名カスタマイズ機能の追加
  • mediatomb連係機能の追加

7月13日版

  • mysql_real_escape_stringがエラーになる場合があるのを修正

7月8日版

  • キーワード録画予約の追加
  • 録画モードの追加
  • FORCE_CONT_RECの追加

Early Version(0.1、日経Linux8月号掲載版)

最初のバージョン

ソースリポジトリ

開発中のコードは下記で公開しています。リポジトリにはロクに動作を確認せずに変更を反映させたりするので注意してください。

git://git.sourceforge.jp/gitroot/epgrec/epgrec.git

http://git.sourceforge.jp/view?p=epgrec/epgrec.git

ToDo?リスト

  • mediatomb連携(テスト中)

コメント

ちょっと長くなりすぎで読みづらくなってきたので、要望/コメント/いろいろに移します。下のコメントの更新は停止しますので、要望/コメント/いろいろに書き込んでください。

  • 最新版 はどこ????????????? -- [[最新版 ]] 2009-07-08 (水) 18:42:16
    • 予定を変えてgitでリポジトリを公開することにしたりとか、いろいろやってるので今晩くらいにリンク貼れると思います。もうちょっと待ってください。 GADGET LTD.
  • 「mediatomb連携」て、ver.0.10.0以降でディレクトリのスキャン方法をinotifyにすれば、ファイルをおいたら自動的にDBに登録されるけど、それじゃだめなの? -- 2009-07-08 (水) 19:18:56
    • epgrecのDBに保存しているtitleやdescriptionをmediatombの方にも反映させたいんです。DLNAクライアントから見たときタイトルが見えるので便利かなと。ざっと読んだ感じmediatombはJavaScript?のAPIしか持ってないようで、標準のSQLiteはmediatomb実行中、ロックがかかっているし、タイトルなどをDBに強制的に書き込むのは無理っぽいのでどうしようかなと考え中です。GADGET LTD.
  • どうせepgrecでMySQL使うんだから、mediatombもMySQLで運用すればロックの問題は解決するね -- 2009-07-08 (水) 19:32:23
    • 成る程、その手はありますねえ。SQLiteを相手にしないことにしようかなGADGET LTD.
  • PHP Warning: unlink(/tmp/__temp.ts): Operation not permitted in /home/web/public_html/epgrec/getepg.php on line 6 PHP Warning: unlink(/tmp/__temp.xml): Operation not permitted in /home/web/public_html/epgrec/getepg.php on line 7 -- kuma? 2009-07-09 (木) 00:21:05
    • recfriioですね、その警告はおそらく気にすることないですし、最新版では出ないと思います。recfriioは確かsetuidビットかなんか立ってんですよね。udevでグループとパーミッションが設定されていればsetuidビットは不要で実害しかないので落とした方がいいんじゃないかと思いますがfriio持ってないので確かめられません。GADGET LTD.
  • Fedora10のatコマンド(at-3.1.10-26)には不具合があるので動かないかもしれない。参考URL:https://bugzilla.redhat.com/show_bug.cgi?id=486844 記事の中でFedora11ではrecfriio動かない、って書いてるし、試そうとする環境がFedora10の人はきっと出てくると思う。あと、epgdumpですが、segmentation faultで落ちることが頻発しませんか?gdbで追いかけたらバッファサイズを超えてアクセスしようとしててコケてたので自分のとこではアクセスオーバーフローしないようにガードをかける修正をしたら安定して動くようになりましたけど。 -- pumma? 2009-07-09 (木) 08:27:07
    • 情報ありがとうございます。atが動かないディストリだとすべての前提が崩れちゃいますね。参考までに、こちらでテストしてるのは、まず実際に録画を試しているのがDebian lenny AMD64、またダミーのdo-record.shを使ってCentOS4、Ubuntu jauntyでひととおり機能することは確かめています。その他のディストリはすぐに試せる環境がないのでパスしてます。epgdumpr2のfaultはcronで定期的に実行させるようにした後、ログを見て気づきました。3回に2回は通ってるようだし、cronで繰り返し実行しているとそのうち番組表が埋まるので、気にしてませんでした。いちど見直した方がいいかもしれませんね。その他に、周辺ツールとしてtssplitterモドキを作ろうと思ってます(そのうちに)。GADGET LTD.
  • なぜか地上波の一局だけ局名が間違って表示される。スターチャンネルと表示されるが福島テレビなんだけど? -- kuma? 2009-07-09 (木) 17:50:36
    • それは妙ですね。番組表自体は合ってますか? ひとつ思いつく原因としてgetepg.phpが最初に番組を取得するときに、BSのテンポラリデータを消しそこねて(昨日、unlinkの警告を貼ってましたよね?)、その次の局の取得時にepgdumpの実行がコケるという現象が重なったとき局名を正しく取れないことがあるかもしれないです(あるのかな?)。recfriioは普通にインストールするとsetuidビットが立っていて、ユーザー権限で実行しても録画したデータをunlinkできませんから、改めて考えると、このようなことが起こりえる気もします。ファイルが普通に消せないというのはepgrec以外でも困ったことだと思うので、できればsetuidビットを落とすことをお勧めしたいところです。誤った局名はphpMyAdmin?でRecorder_channelTblのnameを書き換えるしか修正の方法はないです。GADGET LTD.
  • recfriioではなくてPTのrev0.7の使用で+Sは止めましたがやはりだめです。? -- kuma? 2009-07-09 (木) 18:16:23
    • うーん、となるとちょっと原因が分かりませんが、チャンネルの局名は初回受信のときに取り込むので、そのときに失敗していると以後、修正されることはないので、そのせいかもしれませんね。徳島テレビの1分くらいの録画データを取って、epgdumpでXMLをダンプさせてみて最初のセクションにあるchannel要素内でスターチャンネルといっていたらば、EPGの内容自体が誤っていることになりますけど、それはないと思うけどなあ。。。GADGET LTD.
  • <display-name lang="ja_JP">FTV福島テレビ1</display-name>うそはついてないみたい -- kuma? 2009-07-09 (木) 19:03:45
    • なるほど、では初回受信の時に失敗したんですね恐らく。getepg.phpで2度目の実行以降もdisplay-nameが変っているか調べて変ったら修正するように変えるというような対策を考えてみます。GADGET LTD.
    • とりあえずgithubのリポジトリの方にはそれらしい変更を加えました。GADGET LTD.
  • durationを前方向だけじゃなくて後方向にもゆとりを持たせられるようにしてほしい。NHKを取るときとか、番組の最後が微妙に尻切れトンボになってしまう… -- 2009-07-09 (木) 19:34:04
    • githubのリポジトリの方にはEXTRA_TIMEという設定値を追加してみました。GADGET LTD.
    • FORCE_CONT_RECとの共存はペンディングとして、デフォルト値を0にしました。EXTRA_TIMEを使う場合はFORCE_CONT_RECが事実上利かないということでお願いします。GADGET LTD.
  • てか、要望とか改善案とかやりとりするのに、ここでいいのかな?そもそも、epgrecはこれからどのように開発していくのでしょう?GADGETさんによる集中開発?それともみんなでcommitしていく?みたところコードもすっきりまとまってていい感じなアプリになっていると思うので、これから育っていくといいなと思ってます。 -- 2009-07-09 (木) 19:38:40
    • どんどんブランチさせるなりcommit送りつけるなり自由にやってもらえればと。多忙でなければ、commitもリクエストは受け付けるようにします。gitの使い方いまいち理解してないけど。GADGET LTD.
  • git clone git://github.com/sushi-k/epgrec.gitこっちブラウザに何も映らない...エラーの山だが狭すぎてここに投稿が困難! -- kuma? 2009-07-09 (木) 20:58:31
    • ああ、わかりました。gitで取ったファイルやディレクトリはパーミッションが飛んでしまいますから、パーミッションは手で設定してください。GADGET LTD.
  • gitなんかダメ。subversionにすべき。 -- 無記名? 2009-07-09 (木) 21:52:09
    • subversionも同じように使い方を知らないのでどちらがいいのか良く分かりません。 GADGET LTD.
  • CSに対応していないのは何故でしょうか? -- que? 2009-07-09 (木) 22:53:00
    • CSは契約していないため見ないからです。epgdumpが対応できるなら対応可能と思いますので、CS対応に改造なさってください。GADGET LTD.
  • GADGETさん、いけてる録画アプリありがとうございます。頻繁にレスされてますが、マイペースでいきましょ-。サポートっていうか開発の話は2chなりなんなりの掲示板でやった方がいいんじゃないかなー -- 2009-07-09 (木) 23:50:02
    • DTV板は最近ほとんど見てないですが、Linux板の関連スレはチェックするようにしますんで何か言ってもらえれば反応するようにします。それと、たとえば上のご質問にあるCS対応や、friioやMonsterTV関連(持ってないので)や何かは環境を持っていたり、必要がある人が改造してくれたらいいのかなと思います。PHPのスクリプトはどれも300ライン以下と小さいですし。で、comiitリクエストを送りつけるなりパッチを送ってもらえれば嬉しいです。GADGET LTD.
  • PHP Notice: Use of undefined constant KEYWORD_TBL - assumed 'KEYWORD_TBL' in /home/web/public_html/epgrec/Keyword.class.php on line 11 PHP Fatal error: Uncaught exception 'Exception' with message '__query:DBクエリ失敗:SELECT * FROM Recorder_KEYWORD_TBL ' in /home/web/public_html/epgrec/DBRecord.class.php:52 Stack trace: #0 /home/web/public_html/epgrec/Keyword.class.php(127): DBRecord->__query('SELECT * FROM R...') #1 /home/web/public_html/epgrec/getepg.php(56): Keyword::createKeywords() #2 {main} thrown in /home/web/public_html/epgrec/DBRecord.class.php on line 52 -- kuma? 2009-07-10 (金) 18:09:30
  • すいません。そこは読んでませんでした。CentOS5なのでphpMyAdmin?の導入がよくわからないのであきらめます。ありがとうございました。 -- kuma? 2009-07-10 (金) 19:02:53
    • CentOSならyumでたぶん簡単にphpMyAdmin?が入りますよ(CentOS4はそうです)。yum install phpmyadminでいけると思います。もしかしたらdagを/etc/yum.repos.d/に追加する必要があったかもしれません。もしyumでphpmyadminが入らないようならdag yum.repos.dとかgoogleで検索すれば追加の方法はどこかに出てると思います。
  • sourceforge.jpあたりに登録して、好きに育ってくのを見守るほうが賢明じゃないでしょうかねぇ。抱えこんでてもメンドクサイことになるだけですよ。 -- fafa? 2009-07-11 (土) 14:39:35
    • 抱え込む気はさらさらないのでsourceforgeも考えましたけど、githubに置いておけば他の人に勝手にforkしてもらえるし、いじってもらって気が向いたらこっちに送ってもらえばいいし、送りたくないならそれでもいいとか、sorceforgeよりお気楽そうなのでgithubにしてみました。私も調べながら使ってるところですけど、githubでアカウントを取ってepgrecのリポジトリを見るとforkというボタンが出るので、それを押してもらうとfrokできます。で、forkしたepgrecをいじってすっげー機能を追加できて私のepgrecにマージしたいならpull requestを送ってもらえばいいようです(マージするかどうかはこちらの判断になります)。で、マージしたくなければ、自分がforkしたepgrecを公開してもらって、2ちゃんなり、ここなり、自分のWebページなりでアナウンスしてもらって構わないです。GADGET LTD.
  • すばらしいソフトありがとうございます。ひとつ質問があります。出力ファイル名を番組名にするにはどのようにすれば、よいのでしょうか?PCからではなく、TVから録画番組を視聴したいのですが、日付だとわかりにくいもので。よろしくお願いします。 -- kawa? 2009-07-12 (日) 08:34:46
    • ファイル名はカスタマイズできるようにするつもりですが、ファイルシステムの文字コードがUTF-8であれば、Reservation.class.phpの175行目付近にある
      $filename = "".$crec->type.$crec->channel."_".date("YmdHis", $start_time)."_".date("YmdHis", $end_time).$RECORD_MODE[$mode]['suffix'];
      を変えることでタイトルを入れたりできます。たとえば、終了日時の代わりにタイトルを入れるなら
      $filename = "".$crec->type.$crec->channel."_".date("YmdHis", $start_time)."_".$title.$RECORD_MODE[$mode]['suffix'];
      という感じでしょうか。
       チャンネルと開始時間が入っているので一意性はたぶん保障されると思いますが、タイトルにファイル名に使えない文字(というよりシェルにとって特殊な意味を持つ文字)が入っているとエラーになって録画できない危険があります。どうやらEPGのタイトル要素は全角オンリーっぽいので、EPGのタイトルを使う限り大丈夫そうな気はしますが、ちょい不安なところではあります。
  • 早速の回答、ありがとうございました。思っていた通りのファイル名が出来ました。 -- kawa? 2009-07-12 (日) 12:18:43
  • サムネイルが作成されないのと録画済みメニューで削除しても実体のファイルが削除されません。topでみるとffmpegをアパッチが使用してなんかループに入ったまま?になる感じです。 -- sawa? 2009-07-12 (日) 12:19:14
    • 実体ファイルが消されないのは今のところ仕様ですが削除する機能はつけます。そのためにはダイアログを出さなければならず、JavaScript?をいじる必要があるのでちょっと待ってください。それまでは面倒ですが手で消すということで。ffmpegはうちではうまく動いているのですが、バージョンによってオプションが違うのかな? おっしゃる状態では実害ありまくりなので、少々さびしいですがUSE_TUMBSをfalseにしたほうがよさそうです。ほかにも同じ症状の方はいるかな?
  • 以前に別の録画ソフトで録画したTSファイルをこちらのDBで管理したいのですが、可能でしょうか?ちなみに、title、description、ch、starttime、endtimeに対応する情報は、csvファイルで残っているのですが、Recorder_reserveTblのカラムの、id,reserve_discなどは、適当につけてもよいのでしょうか?よろしくお願いします。 -- kawa? 2009-07-12 (日) 13:58:12
    • idはオートインクリメントになっていて、一意でないとDBRecordクラスが破綻するので、phpMyAdmin?や手製のスクリプトで書き込む時には空にしておいてください。書き込んだときに自動的にインクリメントされて一意の数値が付きます。idの一意性が崩れると全体に影響が出てしまうので気をつけてください。channel_idはRecorder_channelTblのidフィールドの局に対応する数にします。reserve_discは計画倒れでいまのところ使って無いので空欄とか適当な文字を入れておいてもらえればOKだと思います。
  • ubuntu 9.04 で構築してみました。番組検索をしてみようとしたところ"Access denied for user 'www-data'@'localhost' (using password: NO) in /var/www/epgrec/programTable.php on line 24"のメッセージが出ました。ググると'www-data' にMySQL へのアクセス権限が無いとのことでhttp://sunone.blog1.fc2.com/blog-entry-377.htmlのように権限を与えてとりあえず動作するようにしてみました。このやり方で合ってるんですかね? -- 動いて嬉しい!? 2009-07-12 (日) 23:52:16
    • 原因が分かりました。タイミングによってはmysql_real_escape_stringでそのエラーが出るような気がします。epgrecの側を直す必要がありますね。
      というわけで直しました。リポートいただかなければ気づかなかったところです。ありがとうございます。
  • すいません。ffmpegがどうしてもうまくいかないのでmplayer -vo png:z=4 -vf scale=$dim -ao null -ss 3 -frames 2 hoge.tsみたいな感じで組み込みたいのですが実力不足です。教えていただけないでしょうか。 -- sawa? 2009-07-20 (月) 14:31:43
  • すいません。このコマンドだと動きます?ffmpeg -vframes 1 -ss 1 -i 1.ts -f image2 hoge. -- sawa? 2009-07-20 (月) 16:53:49
    • なるほど、ではReservation.class.phpの中で$ffmpeg_cmdに代入している行
      $ffmpeg_cmd = FFMPEG." -i \${OUTPUT} -r 1 -s 160x90 -ss ".(FORMER_TIME+2)." -vframes 1 -f image2 ".INSTALL_PATH.THUMBS."/".$filename.".\n";
      の右辺を
      $ffmpeg_cmd = FFMPEG." -i \${OUTPUT}  -s 160x90 -ss ".(FORMER_TIME+2)." -vframes 1 -f image2 ".INSTALL_PATH.THUMBS."/".$filename.".jpg\n";
      などとしたら動くんじゃないでしょうか。やってみてないのでわかりませんが。mplayerなら
      $ffmpeg_cmd = "mplayer -ss ".(FORMER_TIME+2)." -frames 1 -vo jpeg -vf scale=160:90 \${OUTPUT}\n mv ".INSTALL_PATH.THUMBS."/00000001.jpg ".INSTALL_PATH.THUMBS."/".$filename.".jpg\n";
      とかすると動くかもしれませんが、これもやってみてないので何とも。JPEG形式で、${OUTPUT}.jpgというファイル名が作られるようにすればOKです。あと、INSTALL_URLがlocalhostのままだとクライアントからサムネイルが見えないので注意してください。
  • たとえばmplayer -ss 2 -frames 2 -vo jpeg:outdir=/home/web/public_html/epgrec/thumbs/ -vf scale=160:90 /home/sawa/test1.tsとやるとサムネイルができます。これをあてはめてみたら作成されない?どこか間違ってる?! -- sawa? 2009-07-20 (月) 22:27:30
  • すいません。録画しないでデバッする方法を教えていただけないでしょうか。お願いします。 -- sawa? 2009-07-20 (月) 22:37:12
    • mplayerは00000001.jpgとか連番のファイル名を生成するんじゃないでしょうか。GRnn_2009mmddhhmmss_2009mmddhhmmss.ts.jpgというようなファイル名になってないと表示されないということです。ですので先の例ではmvを使ってリネームしているわけです。jpegファイルが生成されない理由は私にはちょっとわかりませんが入力ファイルが正しく指定されてないとかじゃないでしょうか。デバッグはそうですねえ、とりあえずReservation.class.phpを書き換えたときにtypo等のエラーがないかどうかだけなら
      $ php -l Reservation.classl.php
      とやればわかります。あと、録画予約をした後に、rootで
      $ atq
      とやってatで登録されているジョブを調べて、予約したジョブの内容を
      $ at -c 110
      (この場合は110がジョブ番号)表示させて、ジョブにmplayerなりffmpegなりを使った正しいコマンドが埋め込まれているか調べてみると良いんじゃないでしょうか。シェルスクリプト中の${OUTPUT}が録画されるtsファイルにあたります。そしてサムネールは.../thumbs/GR..................jpgという風になっていればOKです。なお、さっき勘違いで${OUTPUT}.jpgと書いてしまいましたが、${OUTPUT}にはパスが含まれているので駄目です。
      ああ、そうだmplayerがどこにあるかにもよりますが、ジョブの中ではパスが通ってないところかもしれないのでplayerはフルパスでやってください。/usr/bin/mplayerみたいな風に。ジョブの中では/bin;/usr/binくらいしかパスが通ってない設定もあるかと思いますので。
  • #!/bin/sh # atrun uid=48 gid=48 # mail apache 0 umask 22 MODE=0; export MODE DURATION=10; export DURATION PWD=/home/web/public_html/epgrec; export PWD CHANNEL=26; export CHANNEL SHLVL=1; export SHLVL TYPE=GR; export TYPE TUNER=0; export TUNER #OUTPUT=/home/web/public_html/epgrec/video/GR26_20090721235900_20090722012840.ts; export OUTPUT OUTPUT=/home/web/public_html/epgrec/video/GR26_20090721235900_20090722012840.ts cd /home/web/public\_html/epgrec || { echo 'Execution directory inaccessible' >&2 exit 1 } ${SHELL:-/bin/sh} << `(dd if=/dev/urandom count=200 bs=1 2>/dev/null|LC_ALL=C tr -d -c '[:alnum:]')` /bin/sleep 10 /home/web/public_html/epgrec/do-record.sh /home/web/public_html/epgrec/recomplete.php 31 echo "$OUTPUT" /usr/bin/mplayer -ss 2 -frames 2 -vo jpeg:outdir=/home/web/public_html/epgrec/thumbs/ -vf scale=160:90 ${OUTPUT} mv /home/web/public_html/epgrec/thumbs/00000001.jpg /home/web/public_html/epgrec/thumbs/GR26_20090721235900_20090722012840.ts.jpgこうなると動作するのですがexport...を取りたい。 -- sawa? 2009-07-21 (火) 23:10:01
  • すいません要はatに予約されるスクリプトのOUTPUTのいちばん後ろに付くexport OUTPUTを取りたいのですがどこをいじれば良いか教えてください。 -- sawa? 2009-07-21 (火) 23:27:10
    • おっしゃる意味がいまいち分かりませんが、なぜ取らなければならないのでしょうか。ENVVAR=val; export ENVVARという記法はシェル的に普通に正しく、動かないはずはないのですが?? /bin/shが変なシェルだったりしますか?
  • ; export OUTPUTがあると次の行のmv ....が実行されないためです。 -- sawa? 2009-07-22 (水) 00:07:11
    • 環境変数の設定はproc_openがやってるまんまですからOUTPUTを別の方法で設定するとかですかね。fwriteしているあたりにOUTPUTを設定する1行追加してみたらいかがでしょう。動かない理由がわから無いので、そういう風にすると動くのかどうかも分からんです。なお、exportは理屈の上では取ることはできません。exportされない環境変数は子プロセスに引き継がれないことになっているためで、exportを取ってしまうとdo-record.sh内でOUTPUTが参照できないはずだからです。exportをコメントアウトして動いているということで理由は推測ですが、OUTPUTが他の環境変数として別に迫っていされていてexportされているというようなことか、もしくはbash等ではないのか、ということでちょっと分かりません。
      ああそうだ、ひとつ思いつきましたが
      (/usr/bin/mplayer ....)
      みたいにmplayerの行を括弧でくくったらどうでしょう? カッコでくくると別のシェルの下でmplayerが実行されるので動くかもしれません。
      ところで、サムネールが生成されない、あるいは同様の症状が起きている人というのは他にいるんでしょうか? あんまり多いようならサムネールがらみの仕様を大幅に変えたほうがいいかもしれないので。
  • サムネールの仕様変更案を作ってみました。 サムネール生成をepgrecと同じディレクトリに置いたgen-thumbnail.shというシェルスクリプトにしてしまうという変更案です。gen-thunbnail.shのためにFORMER(config.phpのFORMER_TIMEと同じ値)とTHUMB(パスを含むサムネール出力ファイル名)という環境変数を追加してますので、gen-thumbnail.shの中でお好きなツールを使ってTHUMBにお好きなサイズのjpeg形式のサムネールを吐けばいいというシカケです。上のReservation.class.phpを現行のに置き換えれば仕様変更案に変りますんで、上のgen-thumbnail.shのサンプルを参考にサムネールが上手くいかない人は試してみてください。この仕様を採用する分かりませんが、この方がいいという人が多いようならそうします。
    ちなみにdo-record.sh内でサムネールを出力させないのはサムネール出力に失敗したときにrecomplete.phpの実行が行われない場合があるためで、recomplete.shが実行されないとちょっと困るからです。
  • gitの最新バージョンにしてから、録画済み一覧の一番下に”jQuery UI Dialog”と表示されるようになったのはうちの環境だけでしょうか?実害はないんだけど、ちょっと気持ち悪い・・・ -- 2009-07-23 (木) 12:55:52
    • 仕様です……じゃなくて文字列の取り忘れです。お気になさらぬよう。とりあえず、templates/recordedTable.htmlの161行目にあるjQuery UI Dialogという文字列をスペース1個かなにかに置き換えてもらえれば表示されなくなりますので気になるようなら変えておいてください。
  • ひととおりインストールした後で実行すると、"construct:無効な行"と表示されて動かないんですが何かヒントをいただけないでしょうか。 -- 2009-07-23 (木) 22:52:20
  • "construct:無効な行"で悩んでいたものですが、自己解決しました。うちでは千葉テレビが受信できないにもかかわらず、config.phpに千葉テレビが登録されて板野が原因でした。 -- 2009-07-23 (木) 23:11:46
  • #!/bin/sh OUTFILE=`echo $OUTPUT | awk -F\/ '{print $7}'` THUMB1=/home/web/public_html/epgrec/thumbs/ #echo $OUTPUT > log1.txt #echo $OUTFILE > log2.txt #echo $THUMB1 > log3.txt /usr/bin/mplayer -nosound -ss 10 -frames 2 -vo jpeg:outdir=${THUMB1} -vf scale=160:90 ${OUTPUT} mv ${THUMB1}00000002.jpg ${THUMB1}$OUTFILE.jpg結論から言うとこれで動作しましたがmplayerをsudoでroot権限で使えるようにしないとだめでした? -- sawa? 2009-07-25 (土) 12:01:31
    • thumbs/が書き込み可になってないとかでしょうかね。もしそうなら環境変数云々は一切無関係ということになります。いずれにしても、何かをrootにしないとダメということはパーミッションがらみが関連してそうです。パーミッションの設定がまずければ何かが動かないというのは、ごくごく当たり前のことですんで、いちど見直されたらいいじゃないでしょうか。
      それと前に上げた仕様変更案は必要ないという理解でよろしいんでしょうか。あの仕様変更はいい面と悪い面があるので正式に採用するかどうか考え中ではあるんですが。
  • chmod -R 777 ./epgrec chown -R apache:apache ./epgrecとして実験していますのでご指摘の問題ではないと思います。この状態で前回の仕様+mplayer+sudoではやはりサムネイルは作成できませんでした。 -- sawa? 2009-07-25 (土) 15:17:02
    • なるほど、しかしmplayerがsudoしないと動かないというのであればパーミッションがらみで何かあるのは間違いなさそうですね。setuidビットを何かに立てているとか、ディレクトリのパーミッションが変とか、考えられることは無限にありすぎでわかりませんが、同じ症状を訴える人が他にいないようであれば、お使いの環境の何かに問題があると見ていいでしょう。サムネールの仕様変更は、しばらく様子を見てから考えます。
  • ffmpegを使う場合はバージョンにより動作する場合としない場合があるようです。atrpmからdagの物に入れ替えてみましたがそのままでは動かなくて少しオプションの位置を変えたら動作しました。デバックしやすいのでこの仕様が個人的には好きです?! -- sawa? 2009-07-26 (日) 21:58:16
    • 仕様変更版(gen-thumbnail.shを使う方)でしょうか? 7/26版ではサムネールの仕様は変更してませんが、いまconfig回りに大規模に手を入れているところなので、そのときにgen-thumbnail.shを使う方を取り込むかもしれません。

↑読みづらくなってきたので、ここで更新を停止しました。要望/コメント/いろいろの方に書き込んでください。

サイト内検索

AND OR