l3tnun / EPGStation

Mirakurun を使用した録画管理ソフト
https://twitter.com/l3tnun
MIT License
553 stars 149 forks source link

サスペンド復帰後の録画予約が始まらない #419

Closed mimaburao closed 3 years ago

mimaburao commented 3 years ago

環境

Issue

公式通りにローカルにてインストールを行い、PCを立ち上げたままの録画は通常通り出来ます。また、ライブ視聴も問題ありません。 ですが、サスペンド後の自動復帰(rtcwakeコマンド)では、ルールもしくは、手動予約をしてあっても録画予約が開始されない現象で悩んでおります。 録画デバイスはKEIANのもので、録画ソフトはrecfsusb2nを使用しています。 EPGstation v1の方では問題なく、サスペンド後に立ち上がり録画も出来ます。chinachuγでも録画出来ます。 webUIを利用して、'http://ローカルIP:EPGStationのポート/api/reserves?offset=0&limit=24&isHalfWidth=true'にて録画予約一覧を抜き出し、rtcwakeを用いて(rtcwake -m mem -l --date 録画開始時間より1分程度早く)サスペンドから立ち上がるようにしています。 PCを立ち上げた続けた状態の正常な録画ではlogs/Operator/system.logは例として

[2021-02-25T16:19:45.661] [INFO] system - preprec: 129 [2021-02-25T16:20:02.730] [INFO] system - recording: 129 /mnt/drive_e/drive_e/2021年02月25日16時20分00秒-【連続テレビ小説】花子とアン(25)「波乱の大文学会」[解][字].ts [2021-02-25T16:20:02.732] [INFO] system - add recorded: 129 /mnt/drive_e/drive_e/2021年02月25日16時20分00秒-【連続テレビ小説】花子とアン(25)「波乱の大文学会」[解][字].ts [2021-02-25T16:20:02.856] [INFO] system - create video file: 2021年02月25日16時20分00秒-【連続テレビ小説】花子とアン(25)「波乱の大文学会」[解][字].ts

となり、16:20分開始の15秒前にpreprecとして録画が立ち上がるようでした。 ですが、サスペンド後ではこのようなログの記録はなく、番組表では赤枠になっているのにかかわらず、録画中にならず、途中からでも録画をしていません。 原因は分かりませんが、サスペンド後の録画コマンドがEPGStationよりmirakurunの方に送られていないようです。同時刻のmirakurunのstdoutのログを見ても一切コマンドを受け付けた記録がありません。 もしなにか設定等で対応がありましたらお願いします。

l3tnun commented 3 years ago

まず、epgstationではサスペンドでの運用をサポートしていません。v1ではたまたま動くように実装されていただけです。

なぜ、v1 や chinachu γ では動作するかといいますと、 予約情報を数秒周期で確認し、録画開始時刻付近になったことを検知したら mirakurun にストリームを要求する実装となっている為です。

v2では予約追加時、もしくは予約情報の更新があったときにタイマーをセットし、録画開始時刻になったら mirakurun からストリームを取得するように実装されています。 そのため、サスペンドを挟むことタイマーが意図通りに動作しないのではないかと推察されます。

タイマーを再設定するためのapi (/api/recording/resettimer) は用意されているのでタイマーの再設定は可能ですが、 mirakurun からepg 情報の受信/更新を行う EPGUpdater がサスペンド後に正常に動作できるかは不明ですので、サスペンドでの運用は推奨しません。 (うまく動作しない場合、epgstationとmirakurunで epg 情報の同期が取れなくなる)

今後もサスペンド運用に対応するための変更を行う予定もありません。

仕様外の話になりますので issue は閉じさせていただきます。

mimaburao commented 3 years ago

返信ありがとうございました。

理由も納得できました。