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
770
0
Share
続・録画サーバーとその後
Otakan
December 21, 2019
More Decks by Otakan
See All by Otakan
録画サーバーとその後
otakan951
1
540
超音波を使ったファイル共有サービスを使ってみた話
otakan951
0
220
Other Decks in Programming
See All in Programming
プラグインで拡張される Context をtype-safe にする難しさと設計判断
kazupon
2
570
TypeSpec で繋ぐ複数プロダクトの型安全
maroon8021
1
360
TypeScript+Orvalで実現する型安全かつ堅牢でスケーラブルなマルチチャネル通知基盤 / TSKaigi Night talks ~after conference~
d0riven
0
210
気づいたらRubyで100作品 ー クリエイティブコーディングが生活の一部になるまで / 100 Ruby Sketches Later: How Creative Coding Became Part of My Life
chobishiba
3
530
Make SRE Operations Easier with Azure SRE Agent
kkamegawa
0
3.4k
TSKaigi Night Talks 2026_TypeScriptでサプライチェーンの整合性を型に閉じ込める
geekplus_tech
0
210
ビジネスモデルから紐解く、AI+型駆動開発
hirokiomote
2
5.2k
AI駆動開発勉強会 広島支部 第一回勉強会 AI駆動開発概要とワークショップ
hayatoshimiu
0
430
Technical Debt: Understanding it Rightly, Engaging it Rightly #LaravelLiveJP
shogogg
0
190
関係性から理解する"同一性"の型用語たち
pvcresin
2
630
ユニットテストの先へ:テスト技法で要求・仕様を整理するJava開発実践 / Beyond_Unit_Testing_Practical_Java_Development_Techniques_for_Organizing_Requirements_and_Specifications
shimashima35
0
340
エージェンティックRAGにAWSで入門しよう!
har1101
5
120
Featured
See All Featured
Leadership Guide Workshop - DevTernity 2021
reverentgeek
1
300
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
Evolution of real-time – Irina Nazarova, EuRuKo, 2024
irinanazarova
9
1.4k
Exploring the Power of Turbo Streams & Action Cable | RailsConf2023
kevinliebholz
37
6.5k
We Have a Design System, Now What?
morganepeng
55
8.2k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Designing for Performance
lara
611
70k
Groundhog Day: Seeking Process in Gaming for Health
codingconduct
0
200
Introduction to Domain-Driven Design and Collaborative software design
baasie
1
820
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
190
The Illustrated Guide to Node.js - THAT Conference 2024
reverentgeek
1
370
Self-Hosted WebAssembly Runtime for Runtime-Neutral Checkpoint/Restore in Edge–Cloud Continuum
chikuwait
0
560
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設定してもエラーでない…
ありがとうございました