事象の水平線

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

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

PageTop
前回、EPG取得のための録画の際のチャンネル切り替え時間を追加する変更をEPGrecのgetepg.phpに施したが、今度は、数百MBのTSファイルが出来ているのにエラーが出てる。

で、xmlファイルを見てみると途中で切れてタグが閉じられてない。
こりゃepdgumpが原因かと調べてみると、セグメンテーションフォールトがおこるらしい。
EPGrecの公式のダウンロード のところにもチラッと書いてありますね。

epgdumpはどこかにログ吐いてるのかな?とおもったけど、分からず、だめなときのTSファイルを残してたので、ためしに標準出力してみた。

[root@NAS ~]# epgdump -help
Usage : epgdump {/BS|/CS}
Usage : epgdump

ontvcode Channel identifier (ex. ****.ontvjapan.com)
/BS BS mode
This mode reads the data of all BS TV stations
from one TS data.
/CS CS mode
This mode reads the data of two or more CS TV stations
from one TS data.
[root@NAS ~]# epgdump test '/tmp/__temp.ts.gr13' -
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE tv SYSTEM "xmltv.dtd">

<tv generator-info-name="tsEPG2xml" generator-info-url="http://localhost/">
<channel id="test">
<display-name lang="ja_JP">・ョ・ィ・ォ・繝・Ξ・第擲莠ャ</display-name>
</channel>
Segmentation fault
※文字化けは意味ないです。こぴぺする時エンコード指定して開かなかっただけ
てなことになっているので、解決策はないか調べたけれど、古いものやら亜流やら色々なものが散らばっていて一体どれを使えばいいのやらわからない;;
で、『nyantの日記』さんの『epgdump』というのを見つけて、20111001版のepgdumpには取り込まれて無いようなので、これを試してみた。全く理解もしていないまま・・・・
[root@NAS ~]#  cd /usr/local/src/pt3
[root@NAS pt3]# cd epgdumpr2
[root@NAS epgdumpr2]# make clean
rm -f core epgdump *.o
[root@NAS epgdumpr2]# patch < 20110821patch
patching file ts.c
Hunk #1 succeeded at 310 with fuzz 2 (offset -10 lines).
[root@NAS epgdumpr2]# make
gcc -std=c99 -O2 -Wall -g -c epgdump.c
epgdump.c: In function 'xmlspecialchars':
epgdump.c:244: 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
[root@NAS epgdumpr2]# cp epgdump /usr/local/bin
cp: overwrite `/usr/local/bin/epgdump'? y
[root@NAS epgdumpr2]#

まぁ、もともと1週間で1~2度こけるかどうか位なので気にしないって戦法もあるけど・・・・これでどうなるか・・・

そして、EPGrecのソースを斜め読みしてるうちに結構穴ぼこだらけ(仕様といえばそれまでか)で、ネットで見てるとEPGrec UNAという派生があることが分かった。
いくつか気になっていた部分に手を入れてるらしいので、今度試してみようかな。
今のままでも普通に使う分にはそれほど問題はないのだけどね。

<<追記>>
これが問題で原因発生?
スポンサーサイト

PageTop

コメント

 ※
 ※
管理者にだけ表示を許可する
  ※ 必須項目です

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