Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
続・録画サーバーとその後
Search
Otakan
December 21, 2019
Programming
0
720
続・録画サーバーとその後
Otakan
December 21, 2019
Tweet
Share
More Decks by Otakan
See All by Otakan
録画サーバーとその後
otakan951
1
490
超音波を使ったファイル共有サービスを使ってみた話
otakan951
0
210
Other Decks in Programming
See All in Programming
What Spring Developers Should Know About Jakarta EE
ivargrimstad
0
280
エラーって何種類あるの?
kajitack
5
310
Goで作る、開発・CI環境
sin392
0
110
#kanrk08 / 公開版 PicoRubyとマイコンでの自作トレーニング計測装置を用いたワークアウトの理想と現実
bash0c7
1
540
Java on Azure で LangGraph!
kohei3110
0
170
GitHub Copilot and GitHub Codespaces Hands-on
ymd65536
1
120
Google Agent Development Kit でLINE Botを作ってみた
ymd65536
2
200
設計やレビューに悩んでいるPHPerに贈る、クリーンなオブジェクト設計の指針たち
panda_program
6
1.6k
Result型で“失敗”を型にするPHPコードの書き方
kajitack
4
500
プロダクト志向ってなんなんだろうね
righttouch
PRO
0
160
第9回 情シス転職ミートアップ 株式会社IVRy(アイブリー)の紹介
ivry_presentationmaterials
1
240
Node-RED を(HTTP で)つなげる MCP サーバーを作ってみた
highu
0
100
Featured
See All Featured
Gamification - CAS2011
davidbonilla
81
5.3k
GitHub's CSS Performance
jonrohan
1031
460k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
161
15k
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
34
3k
Building Applications with DynamoDB
mza
95
6.5k
Testing 201, or: Great Expectations
jmmastey
42
7.5k
The Illustrated Children's Guide to Kubernetes
chrisshort
48
50k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
17
940
The World Runs on Bad Software
bkeepers
PRO
69
11k
Building Adaptive Systems
keathley
43
2.6k
What’s in a name? Adding method to the madness
productmarketing
PRO
23
3.5k
Reflections from 52 weeks, 52 projects
jeffersonlam
351
20k
Transcript
続・録画サーバーとその後 東海道らぐ 2019年12月オフな集まり in 名古屋 @メリーアヒルヤキ(フレンドリーファイア) @Otakan951
おたかんだよ @
[email protected]
https://otakan.jp
近況1 • mstdn.maud.io Advent Calendar 2019に参加しました • 13日目 VA-APIを使ってVP9エンコードを試してみた話 https://blog.otakan.jp/2019/12/12/vp9-encode/
近況2 • RTX 2070 Super買いました(ASUS DUAL-RTX2070S-8G-EVO) ドスパラで購入。ブラックフライデーセールとか 電子マネー還元とか組み合わせて ¥51,237 DUAL-RTX2070Sは価格.comで見ると6万円ほど。
RTX 2070 SUPERの最安値は56,000円ほど きーすとに買わされた レイトレはまだ使ってません。Minecraftでもやるか
使っていたGTX 1060 6GBは • ちょうど欲しがっていた友人がいたので投げた
東海道らぐ 2019年9月オフな集まり in 名古屋 で話した「録画サーバーとその後」 https://speakerdeck.com/otakan951/lu-hua-sabatosofalsehou
• 無線LAN子機を買わず、ルータがある部屋の隣部屋にサーバー を設置して有線LANで接続することに • サーバーを設置した部屋には地デジしか通っていないので、 BS/CSはリビングまでアンテナ線を伸ばすことに 地デジ リビング TV 分配器
BS/CS サーバー設置部屋
• なぜか地デジの受信感度がとても低く、Eテレ以外はまともに 視聴できない問題 • 仕方ないのでアンテナブースターを設置 →テレビ愛知以外は映った 地デジ リビング TV 分配器
BS/CS サーバー設置部屋
• テレビ愛知って結構アニメの放送やってるじゃん????? • 室内アンテナを試してみる • テレビ愛知は映ったが、アンテナの位置が動いたり近くを誰か が通ると受信できなくなる 地デジ リビング TV
分配器 BS/CS サーバー設置部屋
• BS/CSのためにリビングまで繋げているんだから、地デジもリ ビングからもってくればいいんじゃないの? • 全局安定して映った 地デジ リビング TV 分配器 BS/CS
分波器 分配器 混合器 サーバー設置部屋 地デジ BS/CS
実際に買ったもの • PRIMERGY TX1310 M3 – 年末セールで安かった富士通鯖 • PX-W3PE4 –
Plex製Wチューナー • ACR39-NTTCom – BCASカード読み取るやつ • WD Blue HDD – 6TB • アンテナケーブル • 分配器/混合器/分波器 • USB-007C – USB2.0 ピンヘッダにするケーブル • U20L3C – アンテナブースター • US120A – 室内アンテナ 下3つは結局必要なかった
半年後… • HDDの使用容量が50%ほどになった • 後で慌てるよりは早めに用意しておきたい • 価格優先でWD Blueを買ったが、やはり不安なので次はRed くらいのものを用意したい •
できれば今使っているHDD(6TB)よりも大容量なものを
WD Elements Desktop 8TB • Amazon Primeセールで ¥21,000→¥17,688 • 中身はエンタープライズ向けHDD
Ultrastar DC HC510の廉価版らしい • Ultrastar DC HC510の価格は8TB で¥45,000~ くらい? • 殻割りして中身のHDDをサーバーに入れたい →3.3V問題が起きるらしい
とりあえず何もせず接続してみる 何もしていないのに認識した
親「最近録画パソコンの(ファン)音がうるさい気がする」 私「そういえば温度監視とかやってないな」 それから1週間後くらい • 一応は録画の新規予約通知、録画 開始、録画終了、TSファイルの ドロップ有無をDiscordで通知す るようにしてある • 温度やHDD空き容量、S.M.R.T、
エンコ結果なんかを監視・通知し てくれるやつ作りたいなぁ
録画データ分割問題 WDのHDDを追加したとき くらいから、録画開始から 3分間くらいの間、データ がバラバラになる問題発生 謎
問題の状況 • 録画開始から3分間くらい、録画停止と録画開始を1~3回 繰り返す • ほぼ特定の番組で発生するが、放送局や時間帯の違いはあ まり関係なさそう • ドロップチェックとかには引っかからない •
問題が発生するときに、何か高い負荷が掛かってるわけで もない • EPGStationやMirakurunのエラーログに載ってない
システム構成 EPGStation Mirakurun ffmpeg MySQL PX-W3PE4 (チューナー) arib25 px4_drv recpt1
• EPGStation…録画管理ソフト • Mirakurun…デジタル放送番組用のチューナーサーバー • recpt1…録画コマンド • arib25…B25デコーダ(放送データの復号化) • px4_drv…PLEX系チューナー用の非公式Linuxドライバ • PM2…Node.jsアプリケーションのプロセスマネージャー ※ICカードリーダーとかは省略 PM2 ここから新しく話す内容
recpt1 • 元々はPT1/PT2/PT3を使うための録画ツール $ recpt1 --b25 --strip 23 10 test.ts
--device /dev/px4video2 • 一応ネットワークストリームもできるらしい • チューナーデバイスを制御し復号されたMPEG-2 TSを出力す るだけで非常に低レイヤー • 実際の番組視聴には、排他処理などの高度なチューナー制御が 必要
Mirakurun • Chinachu Air 向けデジタル放送番組用のチューナーサーバー • クライアントとしてはChinachu Air やEPGStation、TV Testなど
• LAN 環境内においてチューナーを柔軟に共有できる • チューナーの排他制御やマルチストリーム配信など高度なチュー ナープロセス管理機能を提供 • チューナーの優先度管理 • EPG パーサー(JSON 形式で保存し、REST APIで提供)
EPGStation • 放送番組の視聴・録画・管理 • 基本的にWebUIで操作 • 番組表の表示 • 番組検索 •
番組予約 • 手動予約、ルールによる自動予約、競合・重複の警告 • 番組視聴 • ライブ視聴、録画番組の視聴 • 録画番組管理 • 自動エンコード、ドロップチェック、番組削除 • APIもある
そういえばアップデートしてない • HDD追加したときにapt updateやった • EPGStationだけは定期的にアップデートしてた • Mirakurunやpx4_drvは完全にほったらかし状態だった • px4_drvを最新版にする
→何も変わらない • Mirakurunを最新版にする →データがバラバラにならなくなった!
録画データ破損問題発生 • データはバラバラにならなくなったが、今まで録画停止してし まっていたところでデータの欠損が発生 • バラバラにならなくなっただけで、何も解決してないな?? • データ破損でエンコード止まってしまうのでたちが悪い • 相変わらずログにエラーは無い
• 何故かドロップチェックでエラー検出されるのに、通知は飛ん でこない • 再生するまで気が付かず、治ったものと思っていた…
ドロップチェックの結果(一部) • 録画開始から10秒後、2分50秒後でドロップが発生(SAO-A WoU 第3話) • 録画開始から5秒後、10秒後、15秒後、20秒後、25秒後、30秒後 ときれいにドロップ発生 (SAO-A WoU
第4話) • 録画開始から10秒後にドロップが発生(慎重勇者 3話) • 録画開始から10秒後、30秒後にドロップが発生(アフサラ 3話) • SAOだけはドロップ量が突出して多かった ドロップ発生時間になんか法則性があるような、無いような…
とりあえずMirakurunに注目した • px4_drvは何見れば良いのか検討付かなかったので • なんとなく録画開始時にPM2からログを見てみた $ sudo pm2 logs [id]
TSFilter is overflowing the buffer… • TSFilterがバッファのオーバーフローを起こして録画が中断 • EPGStationはリトライするが再度あふれると、録画失敗を 繰り返して細切れになる
• バッファサイズはhighWaterMarkという変数で定義されて いて初期値は24MB • /usr/local/etc/mirakurun/server.ymlで値を変えられる • 268,435,456(256MB)に設定 • highWaterMark: 268435456
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"
その後… • バッファサイズ変えたら視聴できないレベルでデータ破損が発生するこ とはなくなった • でも一部の番組は少しドロップ発生してる(SAOとか) • 様子見つつバッファサイズ調整中 どうしてログファイルに記録されなかったのか Log
Levelのことを完全に忘れていました →Log level設定してもエラーでない…
ありがとうございました