事象の水平線

横を無理やり伸ばしたので、デザインがおかしいけど、気にしない。完璧に時代に取り残されたHTMLをいまさらいじるのがめんどくさい。個人的ブックマーク代わりなメモ書きブログ。

2018年12月 4K8K本放送開始らしく、今までのFHD(フルハイビジョン=2K)放送の帯域を削って4K8Kに割り当てるべく、再編成だそうだ。

BS右旋の放送の帯域再編(周波数再編成)について

で、対処法を個人用メモ
recpt1が影響を受けるので、recpt1を再度コンパイルする。
その際、
Mercurial > pt1
の最新のパッチで対応できる。(メンテナンスありがとうございます。)

で、おわり。


なのだけど、
ストリーム配信のhttp版パッチ(参照先を後述)を当てているので、
最新のMercurial > pt1 のzipを持ってきて(Mercurial は入れてない。)http版パッチをそのまま当てると、最新のrecpt1がどうやら変数名を変えてるらしく、コンパイルでエラーが出てうまくいかない。
たしか、dec が decodeになってる。のと、argの型が合わないとか言われる。
無理やり合わせてコンパイルしたら、録画はできるが、http配信ができない。当然か。

ので、以前のrecpt1のソースを使い、それに新しいrecpt1のpt1_dev.hだけを置き換えてコンパイルすることにした。

EPGrecUNAは自動で対応してくれる。ので、まぁ、EPGを自動で取得するタイミングでなんかしてくれる。んだろう。実際、自動で変わったっぽい。

<<参考>>
recpt1 http版 怒られながら入れてみる
recpt1 http版 プロセスが落ちたときにphpで手動でブラウザからexecする
CentOS6.5 に epgrec UNA

スポンサーサイト



PageTop
epgrec UNAに移行して、tsselectも新規にインストールしたら、いきなり動かない。
どうもFloating point exceptionとか何とか言われる。

で、グーグル先生に聞いたら、某ニチャンのスレで答え発見。
進行状況表示で0割してるらしい。

なるほど、
tsselect.cの312行目と503行目の
n = (int)(10000*offset/total);
が0割になる時があるのかな。

てな訳で、
n = total != 0 ? (int)(10000*offset/total) : (int)(10000*offset);
というお粗末な事をしてコンパイルして終了。動くようになった。
標準出力だけのようなので、全体をif( total != 0 )で囲んでもよかったけど、直接ターミナルで動かした時、何の表示もなく数分固まるのもいやなので、むちゃくちゃだけどこうしておいた。

んー今までなかったのになぜだろう。いいのかな?まぁぃいゃ。cなんてぜんぜんわからんし~~。ドロップとエラーのカウントをしてログ吐いてるだけだし。

と、思ったら今度は
failed on open(/file/name) [src]
がでる。

で、どうやら32bitOSにしたせいらしい。こんな弊害が出るとは・・・・

で、tsselect.cの頭に以下を入れてコンパイル、で、OK
#define _LARGEFILE_SOURCE
#define _FILE_OFFSET_BITS 64


参考『プログラミング/C,C++/2GBより大きなファイルの扱い

PageTop
PT3のTSファイルのドロップ確認にWindows版のtsselectをたまに使っていたのだが、LAN経由のノートパソコンで、しかもLANが100Mbpsという環境だったので実時間くらいの時間がかかっていた。

が、なんとLinux版があったのでインストールしてみた。
(5年以上も前からあるのに何で今まで検索で引っかからなかった?検索ワードが悪かったんだな・・・)

こちら→shesee/tsselect-linux · GitHub

[root@NAS ~]# cd /usr/local/src
[root@NAS src]# wget https://github.com/shesee/tsselect-linux/archive/master.zip
--2013-03-20 14:19:31-- https://github.com/shesee/tsselect-linux/archive/master.zip
Resolving github.com... 207.97.227.239
Connecting to github.com|207.97.227.239|:443... connected.
HTTP request sent, awaiting response... 302 Found
Location: https://nodeload.github.com/shesee/tsselect-linux/zip/master [following]
--2013-03-20 14:19:32-- https://nodeload.github.com/shesee/tsselect-linux/zip/master
Resolving nodeload.github.com... 207.97.227.252
Connecting to nodeload.github.com|207.97.227.252|:443... connected.
HTTP request sent, awaiting response... 200 OK
Length: 8528 (8.3K) [application/zip]
Saving to: “master”

100%[====================================================>] 8,528 42.4K/s in 0.2s

2013-03-20 14:19:34 (42.4 KB/s) - “master” saved [8528/8528]

[root@NAS src]# unzip ./master
Archive: ./master
de01d4209025c32e1d454bdfebc59a950b909e91
creating: tsselect-linux-master/
inflating: tsselect-linux-master/README
inflating: tsselect-linux-master/readme.txt
creating: tsselect-linux-master/src/
inflating: tsselect-linux-master/src/Makefile
inflating: tsselect-linux-master/src/tsselect.c
[root@NAS src]# cd ./tsselect-linux-master/src
[root@NAS src]# make
gcc -O2 -c tsselect.c
gcc -o tsselect tsselect.o
[root@NAS src]# make install
install -s tsselect /usr/local/bin
[root@NAS src]# ls -la /usr/local/bin/tsselect  確認
-rwxr-xr-x 1 root root 12280 Mar 20 14:24 /usr/local/bin/tsselect


使い方はwindows版と一緒。
[root@NAS ~]# tsselect file.ts  > log.txt
processing: finish0%
[root@NAS ~]#


詳細はzip同梱のreadme.txtで
なんと2時間くらいかかっていたのが、ものの2分くらいでできるようになりました。

PageTop
epgdumpのsegfaultを調べてる際に同時に見つけたのでメモ。

recpt1に取り込まれたtssplitter_liteでバッファがオーバ-フローするらしい。

『適当な何かの別館』さんの『recpt1のsegmentation fault』を参照

tssplitter_lite.hの68行目 バッファーのサイズを1MBから32MBに増やすらしい。

2ヶ月くらい前からはほとんどtssplitte_liteを通したminTSばっかりにしてたけど、たまーにdrop起きてるファイルが出来てたのはこのせい?それともsegfaultなら途中で切れたりだろうか・・・・そいえばそんなこともあったかな?

PageTop
以前 recpt1 http版 を入れたのですが、たまーにチャンネル切り替えのタイミングでプロセスが落ちるので、プロセスが落ちたらブラウザから手動で再度走らせることが出来るようにしました。

方法は、適当なページ(サーバーのトップページとか)にフォームを埋め込んで、そのボタンを押したらプロセスを走らせる。だけ。

埋め込むフォーム
<form action='./html/reload_recpt1.php' method='post'>
<input type='submit' name='submit' value='recpt1のリロード'>
</form>

recpt1を走らせるphp(/var/www/html/reload_recpt1.phpとして保存)
<html>
<head>
<MEtA http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta http-equiv="refresh" content="10;URL=http:../">
<?php
//if submit has been pressed
if(isset($_POST['submit'])){
#reload_recpt1
exec("/usr/local/bin/reload_recpt1.sh");
#HTML
echo('<title>recpt1リロード終了</title>
</head>
<body><br><br><br>
10秒後にHomeに戻ります。<br>
recpt1をリロードしました。<br>
チャンネルを切り替えるか、TVTestを再起動してください。
');
}
php?>
</body>
</html>

phpがexecするシェルスクリプト(/usr/local/bin/reload_recpt1.shとして保存)
#!/bin/bash

/usr/local/bin/recpt1 --b25 --strip --http 8888 > /dev/null 2>&1 &

それぞれ、パーミッションとかは良しなに・・・・



めったに落ちることはないのだけれど、EPG取得中に落ちる気がする。
で、調べていたら『ぱぱらくだ日記』さんの『recpt1のhttp版パッチを適用してみた』という記事に、落ちないように修正したパッチというものがあったので、試しに頂いてみました。
で、一応手順をメモ。(前回と同じですけどね・・)

どうでもいい前準備
[root@NAS ~]# cd /usr/local/bin
[root@NAS bin]# mv recpt1 'recpt1(copy)'
[root@NAS bin]# mv recpt1ctl 'recpt1ctl(copy)'
[root@NAS bin]# mv checksignal 'checksignal(copy)'


インストール  <<追記>>tssplitte_liteのsegfault注意
[root@NAS bin]# cd /usr/local/src
[root@NAS src]# mkdir PT3-http
[root@NAS src]# cd PT3-http
[root@NAS PT3-http]# wget http://hg.honeyplanet.jp/pt1/archive/b14397800eae.zip
[root@NAS PT3-http]# unzip b14397800eae.zip


/usr/local/src/pt1-b14397800eae/recpt1/pt1_dev.h を geditで開いて、『pt1』を『pt3』に変えます。PT3なんで・・一応文字化け注意
/* -*- tab-width: 4; indent-tabs-mode: nil -*- */
#ifndef _PT1_DEV_H_
#define _PT1_DEV_H_

char *bsdev[NUM_BSDEV] = {
"/dev/pt3video1",
"/dev/pt3video0",
"/dev/pt3video5",
"/dev/pt3video4",
"/dev/pt3video9",
"/dev/pt3video8",
"/dev/pt3video13",
"/dev/pt3video12"
};
char *isdb_t_dev[NUM_ISDB_T_DEV] = {
"/dev/pt3video2",
"/dev/pt3video3",
"/dev/pt3video6",
"/dev/pt3video7",
"/dev/pt3video10",
"/dev/pt3video11",
"/dev/pt3video14",
"/dev/pt3video15"
};

~~以下略~~


[root@NAS PT3-http]# cd pt1-b14397800eae
[root@NAS pt1-b14397800eae]# wget http://www1.bbiq.jp/papanet/download/PT2/recpt1-http-patch
[root@NAS pt1-b14397800eae]# patch -p2 < recpt1-http-patch
[root@NAS pt1-b14397800eae]# cd recpt1
[root@NAS recpt1]# ./autogen.sh
[root@NAS recpt1]# ./configure --enable-b25
[root@NAS recpt1]# make
[root@NAS recpt1]# make install
firewallのtcpとudpの8888をGUIツールであけます。
[root@NAS recpt1]# reboot

daemon化とかは前回の記事参照

どの程度効果があるのかわかりません。もとより落ちる頻度が1週間に1度くらいだったんで・・・

パソコンでTVをそれほど見るとは思わずhttp版を導入してみましたが、HTPC兼コタツトップとして10mのHDMIケーブルを這わせてダイニングに17インチモニタを設置したら、意外にもダイニング用TVとして大活躍・・・
以前はダイニングからも5m先のリビングのテレビを見てましたが、冬は寒いので仕切ることで暖房効果アップ。
ニュース番組とかプラズマTVで見る必要ないし・・・

<<追記>>

あ?あれ?recpt1http版を「落ちないように修正」版にしたら余計落ちるんですけど・・・・ orz (余計落ちると感じるのはおそらくたまたま)
というか、写らなくなったときにpsでfutex_という見慣れないwchanになっていて、プロセスが何かを待っている・・?
で、上半分で書いたphpでのリロードが効かない(プロセスが落ちてないのだから当然・・)
んー、どうせだめなら手動でも簡単に生き返らせることが出来るほうがいいかも。。

PageTop