Hatena::ブログ(Diary)

適当な何かの別館 このページをアンテナに追加 RSSフィード

2016-04-11

epgrecUNA 151114版用 fix2

http://www1.axfc.net/u/3650284

[変更内容]

  • ブラウザ依存でEPG番組表と予約遷移一覧のレイアウトが崩れるのに対処(したつもり)
  • 録画済一覧の頁リンクでの不具合を修正

33kitaka433kitaka4 2016/04/18 12:50 いつもお世話になっています。
現在、epgrecにてBonDriverProxy + recbondの視聴環境を構築していますが、視聴できず難儀しております。(チューナーはPT3です)
ちなみにコマンドでの動作は次の内容で確認出来ました。()
$ recbond --driver /usr/local/BonDriverProxy_Linux/BonDriver_ProxyPT3-S0.so --b25 -space 1 10 rec.ts
ネット上に情報が乏しく、作者様のご教授がいただければと思いご連絡いたしました。
お手数ですが、config.phpの設定が間違っているのかご確認頂けますでしょうか。
よろしくお願い致します。

以下、config.phpから該当部分と思われる部分を抜粋


define( 'TUNER_UNIT1', 2 );
define( 'PT1_CMD_NUM', 4 );


$rec_cmds = array(
// PTn(recpt1)
0 => array(
'cmd' => '/usr/local/bin/recpt1',
'b25' => ' --b25 --strip',
'sidEXT' => '',
'falldely' => 0,
'epgTs' => TRUE,
'cntrl' => TRUE,
'httpS' => TRUE,
),
// DVB(recdvb)
1 => array(
'cmd' => '/usr/local/bin/recdvb',
'b25' => ' --b25 --strip',
'sidEXT' => '',
'falldely' => 0,
'epgTs' => TRUE,
'cntrl' => TRUE,
'httpS' => TRUE,
),
// recfsusb2n
2 => array(
'cmd' => '/usr/local/bin/recfsusb2n',
'b25' => ' --b25',
'sidEXT' => '',
'falldely' => 10,
'epgTs' => FALSE,
'cntrl' => FALSE,
'httpS' => FALSE,
),
// recfriio
3 => array(
'cmd' => '/usr/local/bin/recfriio',
'b25' => ' --b25',
'sidEXT' => '',
'falldely' => 0,
'epgTs' => FALSE,
'cntrl' => FALSE,
'httpS' => FALSE,
),
// recbond(この部分を追加しました)
4 => array(
'cmd' => '/usr/local/bin/recbond',
'b25' => ' --b25 --strip',
'sidEXT' => '',
'falldely' => 0,
'epgTs' => TRUE,
'cntrl' => TRUE,
'httpS' => TRUE,
),
);
define( 'USE_DORECORD', FALSE );



$OTHER_TUNERS_CHARA = array(
// 地デジ
'GR' => array(
0 => array(
'reccmd' => 4,
'device' => '/usr/local/BonDriverProxy_Linux/BonDriver_ProxyPT3-T0.so',  //この部分を追加しました
),
1 => array(
'reccmd' => 4,
'device' => '/usr/local/BonDriverProxy_Linux/BonDriver_ProxyPT3-T1.so',
),
),
// 衛星(BS/CS)
'BS' => array(
0 => array(
'reccmd' => 4,
'device' => '/usr/local/BonDriverProxy_Linux/BonDriver_ProxyPT3-S0.so',
),
1 => array(
'reccmd' => 4,
'device' => '/usr/local/BonDriverProxy_Linux/BonDriver_ProxyPT3-S1.so',
),
)
);

kataunakatauna 2016/04/18 21:05 ×'device' => '/usr/local/BonDriverProxy_Linux/BonDriver_ProxyPT3-T0.so',
◯'device' => '--driver /usr/local/BonDriverProxy_Linux/BonDriver_ProxyPT3-T0.so',

33kitaka433kitaka4 2016/04/19 00:09 ご返信ありがとうございます。
指摘の点を修正いたしましたが、残念ながら動作致しませんでした。
他に、確認すべき点はございますでしょうか?
度々すみませんが、よろしくお願い致します。

33kitaka433kitaka4 2016/04/19 21:48 補足ですが、epgrecのログを確認したところ、以下が確認されました。

---------------------------------------------------------
sendstream.php::録画コマンドPID取得失敗(0)Success
---------------------------------------------------------
---------------------------------------------------------------------------------------------------------
command error[1] /usr/local/bin/recbond --b25 --strip --sid epg 26 6 /tmp/__temp.ts_GR3_16823
using B25...
enable B25 strip
pid = 17005
Cannot open tuner driver: /usr/local/lib/BonDriver/BonDriver_LinuxPT-T0.so
dlopen error: /usr/local/lib/BonDriver/BonDriver_LinuxPT-T0.so: cannot open shared object file: No such file or directory
Cannot open tuner driver: /usr/local/lib/BonDriver/BonDriver_LinuxPT-T1.so
dlopen error: /usr/local/lib/BonDriver/BonDriver_LinuxPT-T1.so: cannot open shared
---------------------------------------------------------------------------------------------------------

実際のBonDriver_Linuxの配置は/usr/local/BonDriverProxy_Linux/BonDriver_LinuxPT3-T0.so
ですので、この辺に問題があるように思うのですが・・・
知識不足ですみません。

33kitaka433kitaka4 2016/04/19 21:49 補足ですが、epgrecのログを確認したところ、以下が確認されました。

---------------------------------------------------------
sendstream.php::録画コマンドPID取得失敗(0)Success
---------------------------------------------------------
---------------------------------------------------------------------------------------------------------
command error[1] /usr/local/bin/recbond --b25 --strip --sid epg 26 6 /tmp/__temp.ts_GR3_16823
using B25...
enable B25 strip
pid = 17005
Cannot open tuner driver: /usr/local/lib/BonDriver/BonDriver_LinuxPT-T0.so
dlopen error: /usr/local/lib/BonDriver/BonDriver_LinuxPT-T0.so: cannot open shared object file: No such file or directory
Cannot open tuner driver: /usr/local/lib/BonDriver/BonDriver_LinuxPT-T1.so
dlopen error: /usr/local/lib/BonDriver/BonDriver_LinuxPT-T1.so: cannot open shared
---------------------------------------------------------------------------------------------------------

実際のBonDriver_Linuxの配置は/usr/local/BonDriverProxy_Linux/BonDriver_LinuxPT3-T0.so
ですので、この辺に問題があるように思うのですが・・・
知識不足ですみません。

kataunakatauna 2016/04/19 21:55 ×define( 'TUNER_UNIT1', 2 );
◯define( 'TUNER_UNIT1', 0 );

とりあえず上の変更で動くと思います。
'TUNER_UNIT1'を指定する場合は、録画コマンド(ここではrecbond)でデバイス(相当)の
自動選択が有効に機能する必要があります。
その為、recbondの pt1_dev.hを適切に変更してコンパイルし直してください。
また'TUNER_UNIT1'を指定する場合は、他のチューナーを追加しないかぎり
$OTHER_TUNERS_CHARAは必要ありません。

33kitaka433kitaka4 2016/04/19 22:34 ありがとうございます!!
pt1_dev.hを本来のパスに変更し再コンパイルしたところ、正常に動作いたしました。
適切なアドバスに感謝いたします。
これからも開発頑張ってください

urthr7urthr7 2016/05/16 22:32 epgrecUNAを使用させていただいております.

本日はリアルタイム視聴の設定についてお聞きしたく思い書き込ませていただきました.

epgrec本家ではhttpでリアルタイム視聴するためには
/usr/local/bin/recpt1 --b25 --strip --http 8888 > /dev/null 2>&1 &
をデーモンで登録していました.

epgrecUNAを使用する場合でな上記のようなデーモンを別途登録する必要があるのでしょうか?
config.phpで以下の設定をしているのですが,これだけでは不十分なのでしょうか?
// リアルタイム視聴
define( 'REALVIEW', TRUE); // リアルタイム視聴を有効にするときはtrueに(新方式で録画コマンドの標準出力対応が必須・トランスコード対応)
define( 'REALVIEW_HTTP', TRUE ); // HTTPサーバーでリアルタイム視聴をするときはtrueに(旧方式で録画コマンドにHTTPサーバー機能が必須・トランスコード非対応)
define( 'REALVIEW_HTTP_PORT', '8888' ); // HTTPサーバーポート番号を入力する
define( 'REALVIEW_PID', '/tmp/realview' ); // リアルタイム視聴チューナーPID保存テンポラリ


願わくはTVTestのBonDriver_HTTPを使用してリアルタイム視聴したいと考えております.

よろしくお願いいたします.

kataunakatauna 2016/05/23 21:45 epgrecUNAの視聴まわりはVLCを前提としています。
ブラウザからの関連付けで動かないならTVTestでは動きません。
またREALVIEWとREALVIEW_HTTPは併用できません。

解決方法としては、以下の2つです。
・VLCで視聴する
・BonDriverProxyEXを利用する

>デーモン
REALVIEW_HTTP利用時は、視聴時に自動で行います。

flatflat 2016/06/20 14:44 便利なプログラムを公開して頂きありがとうございます。

settings/trans_config.phpに複数のトランスコードモードを登録し、
環境設定の優先する録画モードをH264-SD等のトランスコードモードに設定した状態で、
自動予約設定を作成すると自動予約設定の録画モードのpulldown listにトランスコードモード出てくるようになります。
programTable.phpの
// 録画設定一覧からトランスコード設定を削除
foreach( $autorec_modes as $loop => $mode ){
if( isset($mode['tsuffix']) && $autorec_mode<$loop ){
を見ると録画設定一覧にはトランスコードモードが出ないよう意図しているように見えます。
特に問題という訳では無いのですが一応ご報告まで。

flatflat 2016/06/20 14:44 便利なプログラムを公開して頂きありがとうございます。

settings/trans_config.phpに複数のトランスコードモードを登録し、
環境設定の優先する録画モードをH264-SD等のトランスコードモードに設定した状態で、
自動予約設定を作成すると自動予約設定の録画モードのpulldown listにトランスコードモード出てくるようになります。
programTable.phpの
// 録画設定一覧からトランスコード設定を削除
foreach( $autorec_modes as $loop => $mode ){
if( isset($mode['tsuffix']) && $autorec_mode<$loop ){
を見ると録画設定一覧にはトランスコードモードが出ないよう意図しているように見えます。
特に問題という訳では無いのですが一応ご報告まで。

fぁtfぁt 2016/06/20 14:47 すみません2重投稿してしまいました。。
削除出来たらお願いします。

foobarbazfoobarbaz 2016/07/04 08:29 お世話になっております。
Ubuntu16.04+php7.0-fpm, pt3(x2)にて導入を行いましたが、
keywordTable.phpの新規キーワード登録時にコケて、nginx側でGateway Timed Outとなります。
後でkeywordTable.phpのキーワード一覧を見ると*が登録されています。
デバッグを試みたもののPOSTも正常に飛んでいるので、
セマフォ、共有メモリ周りを疑っているのですが、原因が判然としません。
keywordTable.php:75 $shm_id=...以下
print_r($rec);
print_r($sem_key);
print_r($shm_id);
exit;
を追加し実際に登録キーワードを入力し送信した結果がこちらです。如何な物でしょうか。
array(27) {
["add_keyword"]=>
string(1) "1"
["keyword_id"]=>
string(1) "0"
["k_use_regexp"]=>
string(1) "1"
["k_ena_title"]=>
string(1) "1"
["k_ena_desc"]=>
string(0) ""
["k_collate_ci"]=>
string(0) ""
["k_search"]=>
string(65) "メーデー!([1234567890]+)([:]?)航空機事故"
["k_typeGR"]=>
string(1) "1"
["k_typeBS"]=>
string(1) "1"
["k_typeCS"]=>
string(1) "1"
["k_typeEX"]=>
string(0) ""
["k_category"]=>
string(1) "0"
["k_station"]=>
string(1) "0"
["k_weekofday"]=>
string(3) "127"
["k_prgtime"]=>
string(2) "24"
["k_period"]=>
string(1) "1"
["k_sub_genre"]=>
string(2) "16"
["k_first_genre"]=>
string(1) "1"
["k_criterion_dura"]=>
string(4) "3600"
["k_kw_enable"]=>
string(1) "1"
["k_sft_start"]=>
string(1) "0"
["k_sft_end"]=>
string(1) "0"
["autorec_mode"]=>
string(1) "1"
["k_priority"]=>
string(2) "10"
["k_split_time"]=>
string(1) "0"
["k_directory"]=>
string(15) "メーデー!"
["k_filename"]=>
string(0) ""
}
Keyword Object
(
[shm_id:protected =>
[sem_key:protected] =>
[shm_cnt:protected] => 0
[__table:protected] => Recorder_keywordTbl
[__record_data:protected] => Array
(
[id] => 19
[keyword] => メーデー!([1234567890]+)([:]?)航空機事故
[kw_enable] => 1
[typeGR] => 1
[typeBS] => 1
[typeCS] => 1
[typeEX] =>
[channel_id] => 0
[category_id] => 0
[sub_genre] => 16
[use_regexp] => 1
[collate_ci] =>
[ena_title] => 1
[ena_desc] =>
[autorec_mode] => 1
[weekofdays] => 127
[prgtime] => 24
[period] => 1
[first_genre] => 1
[priority] => 10
[overlap] =>
[split_time] => 0
[sft_start] => 0
[sft_end] => 0
[discontinuity] =>
[duration_chg] =>
[directory] => メーデー!
[filename_format] =>
[criterion_dura] => 0
[rest_alert] =>
[smart_repeat] =>
)

[__f_dirty:protected] => 1
[__id] => 19
)
Resource id #9Resource id #10

wasiwasi 2016/07/19 17:33 お世話になります。

録画ファイルにepg情報も保存するためにconfig.phpを
'sidEXT' => 'epg',
の様に変更し
手動で録画キャンセルを行うと動作ログに
以下の様な警告が出て録画が停止しません。
これは私の導入の仕方に問題があるのでしょうか?
よろしくお願いいたします。

search_reccmd()::録画コマンド探索に失敗しました。rev_id[86] cmd[/usr/local/bin/recpt1 --b25 --strip --sid epg,2064 16 [time] 番組名.ts]

hinahina 2016/07/26 02:28 hddが減ってきたので追加して、録画保存ディレクトリを変更したところ自動録画キーワード管理にあるタイトルの録画に失敗してしまうのですが、どうすれば録画できるようになりますか?
変更したあとに簡易予約したものや、キーワードを消して再度追加したものは録画されています。

エラーは「[予約ID:3977 録画失敗] 録画ファイルが存在しません」となっています。

よろしくお願いします。

yoshiyoshi 2017/02/01 04:56 大変便利なツールを提供いただき、ありがとうございます。
現在、CentOS7 PT31枚で録画環境を構築し、運用しています。
1週間前までは、安定して動作していましたが、不安定になり、原因がまだわからない状況です。

経緯
logTblをクリアしようとして、誤ってテーブルを削除
→databaseをdrop後、再構築
→ブラウザから再設定で、録画ファイル名の形式に誤りがあり、再度設定

現状
・過去に自動検索対象にしていた番組の録画時、psでrecpt1を見ると、プロセスが2つあり、同じ番組、同じファイル名で録画している。録画終了後、tsを確認すると、所々ブロックノイズが発生する。
また、番組1つでチューナーを占有するため、連続録画の場合、後続の番組録画に影響がでる(録画開始が後ろにずれる)
・過去に自動検索予約をしたことがない番組は正常に録画可能
・db再構築後、過去に自動検索予約をしている番組を再度自動検索対象にするが、保存先ディレクトリが/videoではなく、前回の保存先になる

宜しくお願いします。

ぽんたぽんた 2017/02/01 22:37 こんにちは。

データベースを再構築される前に自動検索で録画予約されていたコマンドが残っていたのではないでしょうか。

もっとスマートにできるかもしれませんが、
$ for i in `sudo atq | cut -f 1`; do echo $i; sudo at -c $i | sed -n "s/recpt1//p"; done
のようなコマンドで現在録画予約されている、ジョブ番号と実行されるrecpt1コマンドが1行ごとに表示されます。
recpt1コマンドで出力されるファイル名から番組は推測できるでしょうから、重複している番組名があればそのジョブ番号を、
$ atrm "ジョブ番号"
を実行することで削除されますので、プロセスが2つになることは解消されるのではないでしょうか。

kataunakatauna 2017/02/02 01:13 >yoshi
現象は、ぽんたさんが指摘されているようにATジョブの残留です。

1週間前との事なのでそろそろ残留ジョブが消化しきっているのではないかと思いますが
対処法を記します。

まず手動予約を紙やテキストにひかえてください。
定期EPG更新が行われていないのを確認してから
$sudo /var/www/epgrec/rev_test.php -RR
で全予約を削除

$sudo atq|grep www-data
で残留ジョブが表示されますのでそれをatrmで削除してください。

$sudo /var/www/epgrec/rev_test.php
キーワード予約が登録されます。

最後に手動予約を行ってください。

yoshiyoshi 2017/02/02 08:32 >ぽんた様

コメントありがとうございます。
ご指摘の通りでした。
(録画周りのphpソースを確認していたら閃きました。)
こちら、at -l で待機中のジョブ一覧を確認したところ、過去予約分が残留しておりました。一旦全ジョブ削除後、再予約でat確認、録画開始時にps ax | recpt1 で1番組1プロセスを確認。
今朝、録画TSを確認し、正常に録画されているのを確認しました(エラーも特にありませんでした。)

>Katauna様
夜分遅くにコメントをいただき、ありがとうございます。
ご指摘の通りでした。
ご教示頂いた方法で、解決しました。
ありがとうございました。
(万が一の時に備え、db再構築時にジョブキューを考慮したシェルスクリプトを作成しました)
現録画環境の理解不足を痛感しました。

これまでのwindowsのpt2録画サーバよりもずっと安定しています。本当にありがとうございます。

l3tnunl3tnun 2017/06/21 00:53 こんにちは、いつも便利に使わせて頂いています。

バグを発見?したので報告します
mysql 5.7 にて、自動録画キーワードの追加が正常に動かないです。
mysql 5.5, 5.6 では発生していないです。

環境は https://github.com/l3tnun/docker-epgrec-una これで構築したものですが、
Debian jessie, nginx, php5, mysql 5.7 で構築したものと考えていただければいいと思います。

ブラウザ上では /programTable.php から /keywordTable.php へ遷移していて、

__query:DBクエリ失敗:UPDATE Recorder_keywordTbl SET keyword='猫', kw_enable='1', typeGR='1', typeBS='', typeCS='', typeEX='', channel_id='0', category_id='0', sub_genre='16', use_regexp='', collate_ci='', ena_title='1', ena_desc='1', autorec_mode='1', weekofdays='127', prgtime='24', period='1', first_genre='1', priority='10', overlap='0', split_time='0', sft_start='0', sft_end='0', discontinuity='0', duration_chg='0', directory='', filename_format='', criterion_dura='0', rest_alert='0', smart_repeat='0' WHERE id=1

上記のようにエラーが表示されました。
開発ツールで確認するとステータスコードが 500 になっていました。
フォームデータは詳しくは見ていませんが、入力されたものが正常にセットされているようです。

その後別タブで /keywordTable.php にアクセスすると、検索語句が * のものが登録されていました。

nginx のログは以下のように出ていました。
2017/06/21 00:35:13 [error] 88#0: *1 FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught exception 'Exception' with message '__query:DBクエリ失敗:UPDATE Recorder_keywordTbl SET keyword='猫', kw_enable='1', typeGR='1', typeBS='', typeCS='', typeEX='', channel_id='0', category_id='0', sub_genre='16', use_regexp='', collate_ci='', ena_title='1', ena_desc='1', autorec_mode='1', weekofdays='127', prgtime='24', period='1', first_genre='1', priority='10', overlap='0', split_time='0', sft_start='0', sft_end='0', discontinuity='0', duration_chg='0', directory='', filename_format='', criterion_dura='0', rest_alert='0', smart_repeat='0' WHERE id=1' in /var/www/epgrec/DBRecord.class.php:67
Stack trace:
#0 /var/www/epgrec/DBRecord.class.php(159): DBRecord->__query('UPDATE Recorder...')
#1 /var/www/epgrec/DBRecord.class.php(239): DBRecord->update(true)
#2 /var/www/epgrec/Keyword.class.php(404): DBRecord->__destruct()
#3 [internal function]: Keyword->__destruct()
#4 {main}
thrown in /var/www/epgrec/DBRecord.class.php on line 67" while reading response header from upstream, client: 192.168.11.3, server: localhost, request: "POST /keywordTable.php HTTP/1.1", upstream: "fastcgi://unix:/var/run/php5-fpm.sock:", host: "192.168.11.6:8080", referrer: "http://192.168.11.6:8080/programTable.php"

暇があるときに検証していただけると助かります。

l3tnunl3tnun 2017/06/27 22:37 CSをリアルタイム視聴をしようとして問題が発生したのでご教示ください。
recbond を使用していて、config.php の $OTHER_TUNERS_CHARA で以下のように設定しています。

$OTHER_TUNERS_CHARA = array(
// 地デジ
'GR' => array(
0 => array(
'reccmd' => 4,
'device' => '--driver /BonDriver/BonDriver_Proxy-T.so',
),
),
// 衛星(BS/CS)
'BS' => array(
0 => array(
'reccmd' => 4,
'device' => '--driver /BonDriver/BonDriver_Proxy-S.so',
)
)
);

この設定で CS を視聴しようとすると、VLC がエラーで動きませんでした。
原因を探ってみたところ、sendstream.php の 145, 146 行目で
$OTHER_TUNERS_CHARA に 'CS' の記述がないのに、$type に 'CS' が代入されていることが原因でした。

そのため、 144, 145 行の間に

$type = $type == 'CS' ? 'BS' : $type;

このような処理で対応したのですが、これで問題ないでしょうか?
それとも $OTHER_TUNERS_CHARA に 'CS' の記述を追加するほうがいいでしょうか?

よろしくお願いします。

l3tnunl3tnun 2017/06/28 09:22 mysql の件ですが、epgrecUNA 人柱版 (2015/11/14) のページのコメントにて解決しているのですね。
確認しないですいません。

あと、mysql 8.0 でも動作することを確認しました。
連投失礼しました。

toshitoshi 2017/09/03 00:47 l3tnunさんと同じ現象が発生してます。
キーワード管理が一切出来ません。(削除のみ可能)
現状ではphpmyadminで直接レコードを打ち込むしかないです。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

トラックバック - http://d.hatena.ne.jp/katauna/20160411/1460383655