Upgrade to Pro — share decks privately, control downloads, hide ads and more …

続・録画サーバーとその後

Sponsored · Ship Features Fearlessly Turn features on and off without deploys. Used by thousands of Ruby developers.
Avatar for Otakan Otakan
December 21, 2019

 続・録画サーバーとその後

Avatar for Otakan

Otakan

December 21, 2019
Tweet

More Decks by Otakan

Other Decks in Programming

Transcript

  1. 実際に買ったもの • PRIMERGY TX1310 M3 – 年末セールで安かった富士通鯖 • PX-W3PE4 –

    Plex製Wチューナー • ACR39-NTTCom – BCASカード読み取るやつ • WD Blue HDD – 6TB • アンテナケーブル • 分配器/混合器/分波器 • USB-007C – USB2.0 ピンヘッダにするケーブル • U20L3C – アンテナブースター • US120A – 室内アンテナ 下3つは結局必要なかった
  2. WD Elements Desktop 8TB • Amazon Primeセールで ¥21,000→¥17,688 • 中身はエンタープライズ向けHDD

    Ultrastar DC HC510の廉価版らしい • Ultrastar DC HC510の価格は8TB で¥45,000~ くらい? • 殻割りして中身のHDDをサーバーに入れたい →3.3V問題が起きるらしい
  3. システム構成 EPGStation Mirakurun ffmpeg MySQL PX-W3PE4 (チューナー) arib25 px4_drv recpt1

    • EPGStation…録画管理ソフト • Mirakurun…デジタル放送番組用のチューナーサーバー • recpt1…録画コマンド • arib25…B25デコーダ(放送データの復号化) • px4_drv…PLEX系チューナー用の非公式Linuxドライバ • PM2…Node.jsアプリケーションのプロセスマネージャー ※ICカードリーダーとかは省略 PM2 ここから新しく話す内容
  4. recpt1 • 元々はPT1/PT2/PT3を使うための録画ツール $ recpt1 --b25 --strip 23 10 test.ts

    --device /dev/px4video2 • 一応ネットワークストリームもできるらしい • チューナーデバイスを制御し復号されたMPEG-2 TSを出力す るだけで非常に低レイヤー • 実際の番組視聴には、排他処理などの高度なチューナー制御が 必要
  5. Mirakurun • Chinachu Air 向けデジタル放送番組用のチューナーサーバー • クライアントとしてはChinachu Air やEPGStation、TV Testなど

    • LAN 環境内においてチューナーを柔軟に共有できる • チューナーの排他制御やマルチストリーム配信など高度なチュー ナープロセス管理機能を提供 • チューナーの優先度管理 • EPG パーサー(JSON 形式で保存し、REST APIで提供)
  6. EPGStation • 放送番組の視聴・録画・管理 • 基本的にWebUIで操作 • 番組表の表示 • 番組検索 •

    番組予約 • 手動予約、ルールによる自動予約、競合・重複の警告 • 番組視聴 • ライブ視聴、録画番組の視聴 • 録画番組管理 • 自動エンコード、ドロップチェック、番組削除 • APIもある
  7. ドロップチェックの結果(一部) • 録画開始から10秒後、2分50秒後でドロップが発生(SAO-A WoU 第3話) • 録画開始から5秒後、10秒後、15秒後、20秒後、25秒後、30秒後 ときれいにドロップ発生 (SAO-A WoU

    第4話) • 録画開始から10秒後にドロップが発生(慎重勇者 3話) • 録画開始から10秒後、30秒後にドロップが発生(アフサラ 3話) • SAOだけはドロップ量が突出して多かった ドロップ発生時間になんか法則性があるような、無いような…
  8. TSFilter is overflowing the buffer… • TSFilterがバッファのオーバーフローを起こして録画が中断 • EPGStationはリトライするが再度あふれると、録画失敗を 繰り返して細切れになる

    • バッファサイズはhighWaterMarkという変数で定義されて いて初期値は24MB • /usr/local/etc/mirakurun/server.ymlで値を変えられる • 268,435,456(256MB)に設定 • highWaterMark: 268435456
  9. TSFilter is overflowing the buffer… • 地デジ2ch、BS2chの4ch同時録画したとき、バッファが膨張する と最大使用量は1GBに • mirakurunの最大プロセスサイズは512MBに設定されているので、

    これも変える必要あり • PCのメモリ搭載量と相談 • Ver 2.8.0より前は256MBだった • /usr/lib/node_modules/mirakurun/processes.jsonで変えられる • 1024MBに設定 • node_args" : "--max_old_space_size=1024"