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
Sponsored
·
SiteGround - Reliable hosting with speed, security, and support you can count on.
→
Otakan
December 21, 2019
Programming
770
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
続・録画サーバーとその後
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
エンジニアにデザインハーネスを 〜デザインプロセスを規定するためのハーネス〜 / Design harness from an engineer's perspective
rkaga
2
570
そのテスト、説明できますか?~LWテスト戦略FW~のご紹介
nakahara
0
190
トークンをケチるな、設計しろ:GitHub Copilotを賢く使うコンテキスト戦略
ochtum
0
270
dRuby over BLE
makicamel
2
400
AI駆動開発を妨げる技術的負債の解消アプローチ / ai-refactoring-approach
minodriven
17
8.5k
ランチタイムLT会3周年!ランチタイムLT会を3年間続けられたお話
y0hgi
1
120
鹿野さんに聞く!『TypeScriptコードレシピ集』で磨く実践力
tonkotsuboy_com
4
970
AI がコードを書く時代における新卒エンジニアの仕事風景 (2026) / New Graduate Engineers in the Era of AI Coding (2026)
sushichan044
0
190
TAKTでAI駆動開発の品質を設計する
j5ik2o
7
1.6k
Go1.27で導入されるジェネリクスメソッドでできること
mackee
0
230
AIエージェントで 変わるAndroid開発環境
takahirom
0
110
【やさしく解説 設計編 #0】DDDのコード、読めるのに分からない人へ
panda728
PRO
1
170
Featured
See All Featured
The B2B funnel & how to create a winning content strategy
katarinadahlin
PRO
1
410
Bash Introduction
62gerente
615
220k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
123
22k
Music & Morning Musume
bryan
47
7.3k
The Art of Programming - Codeland 2020
erikaheidi
57
14k
How GitHub (no longer) Works
holman
316
150k
The World Runs on Bad Software
bkeepers
PRO
72
12k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
4.1k
Public Speaking Without Barfing On Your Shoes - THAT 2023
reverentgeek
1
450
We Are The Robots
honzajavorek
0
260
How Fast Is Fast Enough? [PerfNow 2025]
tammyeverts
3
640
Leveraging Curiosity to Care for An Aging Population
cassininazir
1
300
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設定してもエラーでない…
ありがとうございました