家ではテレビにデジタルチューナーを導入しないと決まっていたので、PCで一応見れるようにとリモートでのリアルタイム視聴を視野に入れていた。http版recpt1を候補にしたが、MythTVでもfuse_b25で対応でき、MythTV Playerでリアルタイム視聴できるとわかったので、元々使っていたMythTVを引き続き使うことにした。視聴と予約録画が同じシステムにあるので、MythTVにはチューナーを効率的に活用できる利点がある。
MythTV+FUSE_b25とepgfillでパッチを当てずに常用できるが、BSが見られないなど色々と不具合があるのでパッチ当てたものを使う。ただし、依存関係やらが面倒なのでMythTVはDeb-Multimediaのものをベースにする。セットアップはPT1/PT2のDVBとMythTV @Wikiを参考にして行った。
MythTVを修正するためのパッチを用意する。
2011.9.29 追記
ISDB対応パッチとカテゴリ日本語化パッチを分離。パッチの形式を変更して再作成。
2011.9.30 追記
サブタイトルの切り直しパッチを更新。("最終回"や"<新>"などの文字列に対応)
2011.11.17
サブタイトルの切り直しパッチを更新
2011.12.11
サブタイトルの切り直しパッチを更新
2011.4.21
サブタイトルの切り直しパッチを更新
2012.5.19
0.25が最新版になったことの対策と自動アップデート防止を追記
番組表取得や全チャンネルのフルスキャンに対応したMythTVのISDB対応版がある。Debian-Multimediaのパッケージをベースにするため、これをそのまま使わずパッチとして利用する。
本家のソースとISDB版のソースを持ってきてパッチを作る。
$ sudo aptitude install git #gitが入っていない場合 $ w3m http://www.mythtv.org/download/mythtv/0.24.1 #本家 $ tar xjf mythtv-0.24.1.tar.bz2 $ git clone git://github.com/fukumen/mythtv.git mythtv #ISDB版 $ mv mythtv/mythtv/ isdb-mythtv $ diff -urN mythtv-0.24.1 isdb-mythtv > mythtv-isdb.patch
ISDB版で取得される番組表はepgdumpとは違い、カテゴリが英語になっているので、日本語に修正する。英語でも問題ないように思えるが、カテゴリが日本語になっていないと番組表の色分けが正常に行われない。
EITで取得した番組表のタイトルが番組名での録画予約に適さないのでサブタイトルを切り直すようにするパッチ。先頭の識別子と後半部分を切り出してサブタイトルの先頭につける。このパッチの正規表現では後半部分の切り出しが少し過剰になるかもしれない。
サブタイトル切り直しパッチ(2011.12.11版)
ISDB版でもBSには対応していないので無理やり対応させる。このレスを参考にデータベースにアクセスする際にTransportIDも一緒に取ってくる処理とDisEqCの無効化してBSをチューニングする処理を追加した。TSIDをつけてチューニングする処理を追加するだけでチャンネルスキャンで設定することはできない。そのため、データベースを直接操作する必要がある。チャンネル登録用スクリプトを用意したので記事の下の方を参照。
録画に失敗しても再試行しないバグがある。それに対応するパッチがwikiのトラブルシューティングにあるので持ってくる。これを当ててからfuse_b25に異常がない限り録画に失敗することはなくなった。
MythTVに内蔵しているffmpegをAACの音声切り替えに対応させるパッチ。これもwikiからもらってくる。視聴にMythTV Playerを使っていて音声切り替えでエラーが出るので効果は不明。
2011.11.16追記
Debian-Multimediaのmythtv(0.24.1+fixes20111029以降)にはこのパッチを当てられない。
ベースにするDebian-Multimediaのソースをダウンロードする。
Debian-Multimediaのリポジトリを追加
$ sudo vi /etc/apt/sources.list.d/debian-multimedia.list deb http://www.debian-multimedia.org squeeze main non-free deb-src http://www.debian-multimedia.org sid main $ sudo aptitude update $ sudo aptitude install debian-multimedia-keyring 以下の新規パッケージがインストールされます: debian-multimedia-keyring 更新: 0 個、新規インストール: 1 個、削除: 0 個、保留: 18 個。 15.1 kB のアーカイブを取得する必要があります。展開後に 65.5 kB のディスク領域が新たに消費されます。 警告: 以下のパッケージは信頼できないバージョンがインストールされます! 信頼できないパッケージはシステムのセキュリティを危うくする可能性があります。 自分がこのインストールを望んでいると確信できる場合のみ、インストールを先に進め てください。 debian-multimedia-keyring この警告を無視して意地でも先に進みますか? 先に進む場合は "Yes" を、中断する場合は "No" を、入力してください:Yes $ sudo aptitude update
パッケージのソースをダウンロード
$ apt-get source mythtv#0.25がダウンロードされるため、直接ダウンロード $ wget ftp://ftp.debian-multimedia.org/pool/main/m/mythtv/{mythtv_0.24.2-0.0squeeze1.dsc,mythtv_0.24.2.orig.tar.gz,mythtv_0.24.2-0.0squeeze1.diff.gz} $ dpkg-source -x mythtv_0.24.2-0.0squeeze1.dsc
構築に必要なパッケージのインストール
$ sudo aptitude install devscripts quilt qt4-qmake libfreetype6-dev libmp3lame-dev libqt4-dev libxxf86vm-dev libxinerama-dev libdirectfb-dev
用意しておいたパッチを当てる
$ cd mythtv-0.24.1+fixes20110828/ $ patch -p1 < ../mythtv-isdb.patch patching file libs/libmythtv/channelscan/channelscan_sm.cpp patching file libs/libmythtv/channelscan/frequencytablesetting.cpp patching file libs/libmythtv/eithelper.cpp patching file libs/libmythtv/frequencytables.cpp patching file libs/libmythtv/libmythtv.pro patching file libs/libmythtv/mpeg/dvbdescriptors.cpp patching file libs/libmythtv/mpeg/dvbdescriptors.h patching file libs/libmythtv/mpeg/dvbstreamdata.cpp patching file libs/libmythtv/mpeg/dvbstreamdata.h patching file libs/libmythtv/mpeg/dvbtables.cpp patching file libs/libmythtv/mpeg/dvbtables.h patching file libs/libmythtv/mpeg/isdb_decode_text.c patching file libs/libmythtv/mpeg/isdb_decode_text.h patching file libs/libmythtv/mpeg/mpegdescriptors.cpp patching file libs/libmythtv/mpeg/mpegdescriptors.h patching file libs/libmythtv/mpeg/scanstreamdata.cpp patching file libs/libmythtv/mpeg/scanstreamdata.h patching file libs/libmythtv/tv_rec.cpp $ patch -p0 <../mythtv-japanese-cat.patch patching file libs/libmythtv/mpeg/dvbdescriptors.cpp $ patch -p0 < ../mythtv-subtitle.patch patching file libs/libmythtv/eithelper.cpp $ patch -p1 < ../mythtv-bs.patch patching file libs/libmythtv/dtvmultiplex.h patching file libs/libmythtv/dtvmultiplex.cpp patching file libs/libmythtv/dvbchannel.cpp $ patch -p2 < ../mythtv-tuning.patch patching file libs/libmythtv/dvbstreamhandler.cpp $ patch -p2 < ../mythtv-ffmpeg.patch patching file external/FFmpeg/libavcodec/aacadtsdec.c patching file external/FFmpeg/libavcodec/aacdec.c patching file external/FFmpeg/libavcodec/avcodec.h
リビジョンの修正
$ dch -i #適当に編集して保存
パッケージの構築
$ debuild -us -uc -d
パッケージのインストール
$ sudo dpkg -i ../*.deb $ sudo aptitude hold mythtv #自動アップデートの禁止 $ sudo aptitude install #依存するパッケージのインストール
データベースを直接操作してチャンネルを登録するスクリプト
#!/bin/sh
DBUSER="mythtv"
DBPASSWORD="password"
DATABASE="mythconverg"
if [ $# -lt 6 ]
then
echo Usage: channel_add.sh frequency netid tsid pid sourceid chan_num
exit 1
fi
for num in $@
do
if [ `echo $num | egrep -c '^[0-9]+$'` -eq 0 ]
then
echo Parameter Error
exit 1
fi
done
GET_MPLEXID="SELECT \`mplexid\` \
FROM \`dtv_multiplex\` \
WHERE \`sourceid\` =$5 \
AND \`transportid\` =$3 \
AND \`networkid\` =$2 \
AND \`frequency\` =$1"
SET_MPLEXID="INSERT INTO \`dtv_multiplex\` \
(\`sourceid\`, \`transportid\`, \`networkid\`, \`frequency\`, \`symbolrate\` , \`polarity\` ) \
VALUES ('$5', '$3', '$2', '$1', '27500000', 'h');"
CHANID=`expr $5 \* 1000 + $6`
MPLEXID=`mysql -u $DBUSER -p$DBPASSWORD -e "$GET_MPLEXID" $DATABASE |tail -n1`
if [ -z "$MPLEXID" ]
then
mysql -u $DBUSER -p$DBPASSWORD -e "$SET_MPLEXID" $DATABASE
MPLEXID=`mysql -u $DBUSER -p$DBPASSWORD -e "$GET_MPLEXID" $DATABASE |tail -n1`
fi
SET_CHANNEL="INSERT INTO \`channel\` \
( \`chanid\`, \`channum\`, \`sourceid\`, \`mplexid\`, \`serviceid\` ) \
VALUES ('$CHANID', '$6', '$5', '$MPLEXID', '$4' );"
mysql -u $DBUSER -p$DBPASSWORD -e "$SET_CHANNEL" $DATABASE
if [ $? -eq 0 ]
then
echo "New channel added"
exit 0
else
echo "Channel add failed"
exit 1
fi
先頭のデータベース用の変数を環境に合わせて書き換える。使い方は引数を6つ指定するだけ。frequencyはs2scanの結果から、それ以外はTVTestに付いてくるPreset_BS.ch2、Preset_CS.ch2をCSVとして開いて見るとわかりやすい。Preset_BS.ch2(Preset_CS.ch2)のネットワークIDがnetid、TSIDがtsid、サービスIDがpidにあたる。sourceidは衛星側のビデオソースのもの、chan_numは好みのチャンネル番号を指定する。mythtv-setupで他の設定を済ませてからやるといい。 チャンネル登録後はバックエンドを再起動させる。チャンネル名とコールサインは登録されないので、データベースを操作するかmythtv-setupで設定してやる必要がある。追記:登録したチャンネルは番組表の取得も有効にならないので、必要な場合mythtv-setupで"エアガイドを使用する"にチェックする。
#使用例(2012.4.2現在) #channel_add.sh frequency netid tsid pid sourceid chan_num #NHK BS1 channel_add.sh 1318000 4 16625 101 2 101 #NHK BSプレミアム channel_add.sh 1318000 4 16626 103 2 103 #BS日テレ channel_add.sh 1279640 4 16592 141 2 141 #BS朝日 channel_add.sh 1049480 4 16400 151 2 151 #BS-TBS channel_add.sh 1049480 4 16401 161 2 161 #BSジャパン channel_add.sh 1087840 4 16433 171 2 171 #BSフジ・181 channel_add.sh 1279640 4 16593 181 2 181 #WOWOWプライム channel_add.sh 1087840 4 16432 191 2 191 #WOWOWライブ channel_add.sh 1126200 4 17488 192 2 192 #WOWOWシネマ channel_add.sh 1126200 4 17489 193 2 193 #スター・チャンネル1 channel_add.sh 1202920 4 16529 200 2 200 #スター・チャンネル2 channel_add.sh 1164560 4 17520 201 2 201 #スター・チャンネル3 channel_add.sh 1164560 4 17520 201 2 202 #BS11 channel_add.sh 1202920 4 16528 211 2 211 #TwellV channel_add.sh 1202920 4 16530 222 2 222 #放送大学BS1 channel_add.sh 1241280 4 18098 231 2 231 #放送大学BS2 channel_add.sh 1241280 4 18098 232 2 232 #放送大学BS3 channel_add.sh 1241280 4 18098 233 2 233 #グリーンチャンネル channel_add.sh 1394720 4 18224 234 2 234 #BSアニマックス channel_add.sh 1164560 4 18033 236 2 236 #FOXbs238 channel_add.sh 1241280 4 18096 238 2 238 #BSスカパー! channel_add.sh 1241280 4 18097 241 2 241 #J SPORTS 1 channel_add.sh 1394720 4 18225 242 2 242 #J SPORTS 2 channel_add.sh 1394720 4 18226 243 2 243 #J SPORTS 3 channel_add.sh 1433080 4 18257 244 2 244 #J SPORTS 4 channel_add.sh 1433080 4 18258 245 2 245 #BS釣りビジョン channel_add.sh 1471440 4 18288 251 2 251 #IMAGICA BS channel_add.sh 1433080 4 18256 252 2 252 #日本映画専門チャンネル channel_add.sh 1471440 4 18289 255 2 255 #ディズニーチャンネル channel_add.sh 1164560 4 18034 256 2 256 #D-Life channel_add.sh 1471440 4 18290 258 2 258
同じようにCSのチャンネルを登録すればCSも見られるようになる。
CMスキップのダイアログが出て邪魔なので、CMのスキップを切る。
MythTV Playerは複数のビデオソースに対応していないので、地上波を見る時とBSを見る時でそれぞれ使うチューナーのIDを指定する必要がある。さらに、地上波からBSへのチャンネル変更など、ビデオソースが変わる場合は"Release Recoder"ボタンを押して一度チューナーを解放してやる必要がある。
takaaki 9月 10th, 2011
Posted In: ソフトウェア
タグ: Debian, DVB, fuse_b25, Linux, MySQL, MythTV, PT2, Qt, TV, ネットワーク, 録画
PT2初心者のものです。リモートでのリアルタイム視聴が出来るとのことで、
MythTVをインストールをFedoraにインストールを試みているのですが、
分からないことだらけで困りますw
当サイトを参考にさせていただいているのですが、
MythTVはDebian-Multimedia版
はFedoraに対してもインストール出来るものなのでしょうか?
大変恐縮ですが・・・。FEDORAの場合だとどのような作業が必要になって
くるか教えていただきたいのです。よろしくお願いいたします。
Fedoraでの情報は少ないですね。
Fedoraをあまり使ったことがないので細かいことは分かりませんが、
Debian-MultimediaはDebianのリポジトリなのでFedoraでは使えません。
Fedoraなど他のディトリビューションの場合はISDB版にmakeを使ってインストールすることになります。
ダウンロードとインストール手順はここにあります。 https://github.com/fukumen/mythtv
使い勝手を良くするためにmakeする前に本記事のパッチを当てておくと良いでしょう。
ISDB対応パッチは必要ありませんがソース内のmythtv/libs/libmythtv/mpeg/dvbdescriptors.cppの428~439行を
日本語になるように変更した方がいいです。MythWebの番組表に不都合が出るので。
MythTV+PT2に関してはこちらが参考になります。
http://www43.atwiki.jp/mythtv-dvb/
教えていただきありがとうございます。
回答を参考に構築させていただきます。
PT2を手に入れたんやね。mythと連携させてるんかやるなぁ。
ご紹介頂いた@Wikiページの管理人です。
サブタイトル切り直しパッチ素晴しいです!Wikiに掲載しても宜しいでしょうか?
また、色々知識をお持ちのようなので、もし宜しければWikiに参加して編集をして頂けると有難いです。私のほうは大方情報を出し尽くしてしまい更新が滞っているので。
いつも参考にさせていただいてます。
パッチに改善の余地はまだまだありますが、ぜひ掲載いただければと思います。
ここでもwikiのものを使わせていただいてますし。
7月にC++もPT2のこともわからないまま始めたばかりですが、なるべく力になれれば思います。
channel_add.shについてお尋ねします。
先日、channel_add.shを使いBSチャンネルの登録、視聴、番組表取得などは無事出来ました。
次にCS110度チャンネルも同じように登録してみました。
例:東映チャンネル) sh channel_add.sh 1693000 7 28768 221 2 221
mythconverg上に情報が登録しているのを確認後、useonairguideをONにしてmythbackendを再起動しました。
しかし1時間ほど放置しても番組表はデータが埋まらず、Live TVでの視聴も出来ませんでした。
CSの場合、BSとは同じ方法では出来ないのでしょうか?
うちはCSが受信できない古いアンテナなので、よくわかりません。
ですが、B-CASカードの無料期間を使って、CSチャンネルの視聴・番組表取得ができたのは確認しています。
(受信状態はアンテナの関係で劣悪)
また、スクリプトのオプションに間違いはなさそうです。
ヒントになるかわかりませんが、2点上げておきます。
有料放送が原因か探るため、とりあえずCS無料放送の「C−TBSウェルカム」を登録してみました。
sh channel_add.sh 2013000 7 29024 160 2 160
1時間ほど様子をみましたが、状況は変わらずダメな状況・・・。
そこでtuneコマンドで受信できるか確認するため、tune.cに以下を追加してmakeしました。
{ 13, “C−TBSウェルカム”, 2013000, 0x7160 },
そして、録画テストしてみます。
$ ./tune 0 13
Successfully tuned to C−TBSウェルカム .
# cat /dev/dvb/adapter0/dvr0 > out.ts
5分程待って、ctrl+Cで終了。数百MBのファイルが出来上がります。
そしてb25で復号してみます。
# b25 out.ts out2.ts
processing: finish [ 25.45 MB/sec]
warning – unpurchased ECM is detected
channel: 293
unpurchased ECM count: 30
last ECM error code: 8902
undecrypted TS packet: 201993
total TS packet: 202833
warning – unpurchased ECM is detected
channel: 301
unpurchased ECM count: 30
last ECM error code: 8902
undecrypted TS packet: 227227
total TS packet: 228088
warning – unpurchased ECM is detected
channel: 325
unpurchased ECM count: 30
last ECM error code: 8902
undecrypted TS packet: 306177
total TS packet: 307056
warning – unpurchased ECM is detected
channel: 343
unpurchased ECM count: 30
last ECM error code: 8902
undecrypted TS packet: 233656
total TS packet: 234485
warning – unpurchased ECM is detected
channel: 351
unpurchased ECM count: 30
last ECM error code: 8902
undecrypted TS packet: 255793
total TS packet: 256633
no EMM receiving request
そして出来上がったout2.tsファイルを再生してみましたが上手くいきません。
地デジやBSなどでは上記エラーメッセージは出ませんでした。
原因はMythTVでは無く、別のところにありそうなのでもう少し調べてみます。
ご迷惑お掛けしました。
[…] 参考: PT1/PT2のDVBとMythTV @Wiki PT2で地デジ対応MythTVを作る PT2対応のMythTVをビルド […]
[…] 参考: PT1/PT2のDVBとMythTV @Wiki PT2で地デジ対応MythTVを作る PT2対応のMythTVをビルド […]
[…] 参考: PT1/PT2のDVBとMythTV@Wiki PT2で地デジ対応MythTVを作る PT2対応のMythTVをビルド […]