xqq / BonDriver_EPGStation

BonDriver for EPGStation
MIT License
20 stars 0 forks source link

BSで選択したものと異なるチャンネルに切り替わる #1

Open tomo0611 opened 3 years ago

tomo0611 commented 3 years ago

概要

BSで選択したチャンネルの次のチャンネルに切り替わる (BS日テレを選ぶとBS朝日が受信される) こちらの環境でBS最後のチャンネルであるBS12トゥエルビを選択するとチャンネルの変更が BonDriver に受け付けられません。と言われ、視聴中のチャンネルから変わらなかった。

TVTestをデフォルト状態からプラグインを入れたり設定を変更したりしているのでこちらの環境の問題もあるかもしれません

環境

Windows 10 Home 64bit Ryzen 5 3500Uの16GB/256GBで空き容量は70GB以上 TVTest ver.0.10.0-dev 4bc7c55 (Release x64)

ログ

2021/03/14 23:09:08>******** TVTest ver.0.10.0-dev 4bc7c55 (Release x64) 起動 ********
2021/03/14 23:09:08>Work with LibISDB ver.0.0.0 6e794bc
2021/03/14 23:09:08>Compiled with MSVC 19.27.29110.0

2021/03/14 23:09:09>BonDriver_EPGStation.dll を読み込みました。
2021/03/14 23:09:09>チャンネル設定を "C:\Users\tomochan\Documents\TVTest_64bit\BonDriver_EPGStation.ch2" から読み込みました。

2021/03/14 23:11:10>BonDriverにチャンネル変更を要求します。(チューニング空間 1[BS] / Ch 9[BS12トゥエルビ] / Sv 222)
2021/03/14 23:11:10>チャンネルの変更が BonDriver に受け付けられません。
2021/03/14 23:11:10>サービスを変更しました。(SID 141)

2021/03/14 23:13:32>BonDriverにチャンネル変更を要求します。(チューニング空間 1[BS] / Ch 2[NHKBSプレミアム] / Sv 103)
2021/03/14 23:13:33>サービスを変更しました。(SID 141)
2021/03/14 23:13:33>ストリームの変化を検知しました。(TSID 16592 / SID 141)
2021/03/14 23:13:41>BonDriverにチャンネル変更を要求します。(チューニング空間 1[BS] / Ch 2[NHKBSプレミアム] / Sv 103)
2021/03/14 23:13:42>サービスを変更しました。(SID 141)
2021/03/14 23:13:42>ストリームの変化を検知しました。(TSID 16592 / SID 141)

2021/03/14 23:13:52>BonDriverにチャンネル変更を要求します。(チューニング空間 1[BS] / Ch 7[BSフジ・181] / Sv 181)
2021/03/14 23:13:53>サービスを変更しました。(SID 211)
2021/03/14 23:13:53>ストリームの変化を検知しました。(TSID 16528 / SID 211)

2021/03/14 23:13:58>******** 終了 ********

Plugin

2021/03/14 23:09:09>AutoSnapShot.tvtp を読み込みました。
2021/03/14 23:09:09>DiskRelay.tvtp を読み込みました。
2021/03/14 23:09:09>Equalizer.tvtp を読み込みました。
2021/03/14 23:09:09>LogoList.tvtp を読み込みました。
2021/03/14 23:09:09>MemoryCapture.tvtp を読み込みました。
2021/03/14 23:09:09>PacketCounter.tvtp を読み込みました。
2021/03/14 23:09:09>SignalGraph.tvtp を読み込みました。
2021/03/14 23:09:09>SpectrumAnalyzer.tvtp を読み込みました。
2021/03/14 23:09:09>TSInfo.tvtp を読み込みました。
2021/03/14 23:09:09>TunerPanel.tvtp を読み込みました。
2021/03/14 23:09:09>TVCaptionMod2.tvtp : OsdCompositorを初期化しました。
2021/03/14 23:09:09>TVCaptionMod2.tvtp を読み込みました。
2021/03/14 23:09:09>TvtComment.tvtp を読み込みました。
2021/03/14 23:09:09>TvtPlay.tvtp を読み込みました。
2021/03/14 23:09:09>BonDriver_EPGStation.dll を読み込みました。
xqq commented 3 years ago

既知問題かと思います。

EPGStationは、Mirakurunのようにサービスを分割せず、暗号化解除しただけのストリームを提供する機能がないので、 現時点の実装では、api/schedule/broadcastingを使っているから、放送中のサービスが増えたり減ったりすると (例えば、あるチャンネルが裏番組を放送し始めた場合)、チャンネル表が変動します。

もしチャンネル切り替える時点に、実際のチャンネル表がTVTestがチャンネルスキャンした時点のチャンネル表と異なれば、 当初のスキャンしたチャンネル表でのindexが、実際のチャンネルとずれてしまいます。

TVTestがチャンネルスキャンしたら、その表を定着させて使い続けるので、スキャンをせず利用すれば問題ないはずです。

もしくは、yaml設定でshowInactiveServicesをtrueにして、api/channelsが呼び出されると固定なチャンネル表が与えられます。 ただし、余計なチャンネルがいっぱい増えます(配信されていないサービスもすべて現れる)。

いずれも良い解決策とは思わないので、アイデアがあればよろしくお願いいたします。

tomo0611 commented 3 years ago

チャンネルリスト(ch2)ファイルがBS11イレブン,1,7,11,1,211,4,16528,1みたいな感じで保存されてるので、チャンネル表のindexからチャンネルセットから BSの場合は211(serviceId)を取得して"400" + "211" で 地上波の場合は関西テレビ1,0,3,8,1,2080,32724,32724,1なので"32724"(networkId) + "0" + "2080"(serviceId)からchannel idを作って判定するしかなさそうですね。。。