EPGStation icon indicating copy to clipboard operation
EPGStation copied to clipboard

ドロップログ上のパケット数が m2ts ファイル上での実際の数よりも少ない

Open yuta2k opened this issue 2 years ago • 1 comments

環境

  • Version of EPGStation: 2.6.20
  • Version of Mirakurun: 3.9.0-rc.2
  • Version of Node: 16.13.1
  • Version of NPM: 8.1.2
  • OS(ホスト): Linux (Debian Bullseye) #1 SMP Debian 5.10.113-1 (2022-04-29)
  • Architecture: x64

docker-mirakurun-epgstation v2 の上で動かしています。

Issue

録画時にドロップログへ出力されるパケット数が、m2ts ファイル上での実際のパケット数よりも常に少なくなります。
実用上大きな問題にはなりませんが、可能であれば整合させたいです。

確認方法

  1. config.ymlisEnabledDropCheck: true を追記
  2. 録画
  3. 以下のいずれかの方法で m2ts ファイルの (PID 別の) 実際のパケット数を調べる
  4. ドロップログと比較 (パケットの多い映像系の PID が顕著)
  • node-aribts をチェックアウトし node sample/check_packet.js /path/to/m2ts
  • Multi2Dec の「TSエラーチェック」
  • EpgStation の DropCheckerModel の処理を既存の m2ts ファイルに対して実行 こちらのフォークしたリポジトリ・ブランチにて
    https://github.com/yuta2k/EPGStation/tree/feature-drop-check
    npm i
    npm run build-server
    npm run drop-check /path/to/m2ts
    

原因と思われる箇所

RecorderModel にて RecorderModel#recFile への pipe (= m2ts ファイルの書き出しの開始) から https://github.com/l3tnun/EPGStation/blob/c0e201b83231dfed73e5bea1b2ec54866fcfbbba/src/model/operator/recording/RecorderModel.ts#L297 DropCheckerModel#start の呼び出しまでの間に流れたパケットが取りこぼされているものと推測します。 https://github.com/l3tnun/EPGStation/blob/c0e201b83231dfed73e5bea1b2ec54866fcfbbba/src/model/operator/recording/RecorderModel.ts#L303

良い方法が思いつかなかったですが、試しに一旦 stream.PassThrough を介するようにして RecorderModel#recFileDropCheckerModel へ完全に同じパケットが流れるようにすると、ドロップログ上に正確なパケット数が書き出されるようになりました。

そのまま使うには色々甘いと思いますが、こちらのブランチにて確認可能です。
https://github.com/l3tnun/EPGStation/compare/master...yuta2k:eval-droplog-correction

yuta2k avatar Jun 06 '22 11:06 yuta2k

新しく issue を建てるべきか悩ましいところですが recordingFinishCommand の実行時に ERROR_CNT1 で渡され、ドロップログにも

error: (pid: 0x1A1C, counter: -, expected: -, time: -)
pid: 0x1A1C, error: 1, drop: 0, scrambling: 0, packet: 1, name: -

などが残ることが週数回あります。 (PID は毎回異なる?)

上記フォーク・ブランチによる後からのドロップチェックでは問題ないことから、本 issue の範囲で何か原因があるのではと推測しています。

yuta2k avatar Jan 22 '23 12:01 yuta2k