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
730
続・録画サーバーとその後
Otakan
December 21, 2019
Tweet
Share
More Decks by Otakan
See All by Otakan
録画サーバーとその後
otakan951
1
500
超音波を使ったファイル共有サービスを使ってみた話
otakan951
0
210
Other Decks in Programming
See All in Programming
CloudflareのChat Agent Starter Kitで簡単!AIチャットボット構築
syumai
2
470
Processing Gem ベースの、2D レトロゲームエンジンの開発
tokujiros
2
120
FindyにおけるTakumi活用と脆弱性管理のこれから
rvirus0817
0
490
2025 年のコーディングエージェントの現在地とエンジニアの仕事の変化について
azukiazusa1
22
12k
プロパティベーステストによるUIテスト: LLMによるプロパティ定義生成でエッジケースを捉える
tetta_pdnt
0
310
Azure SRE Agentで運用は楽になるのか?
kkamegawa
0
2k
Laravel Boost 超入門
fire_arlo
2
210
「待たせ上手」なスケルトンスクリーン、 そのUXの裏側
teamlab
PRO
0
490
私の後悔をAWS DMSで解決した話
hiramax
4
210
奥深くて厄介な「改行」と仲良くなる20分
oguemon
1
510
知っているようで知らない"rails new"の世界 / The World of "rails new" You Think You Know but Don't
luccafort
PRO
1
100
Flutter with Dart MCP: All You Need - 박제창 2025 I/O Extended Busan
itsmedreamwalker
0
150
Featured
See All Featured
Visualizing Your Data: Incorporating Mongo into Loggly Infrastructure
mongodb
48
9.7k
Build The Right Thing And Hit Your Dates
maggiecrowley
37
2.9k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
46
7.6k
Context Engineering - Making Every Token Count
addyosmani
1
33
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
Agile that works and the tools we love
rasmusluckow
330
21k
Visualization
eitanlees
148
16k
Git: the NoSQL Database
bkeepers
PRO
431
66k
Fantastic passwords and where to find them - at NoRuKo
philnash
52
3.4k
Intergalactic Javascript Robots from Outer Space
tanoku
272
27k
Gamification - CAS2011
davidbonilla
81
5.4k
GraphQLとの向き合い方2022年版
quramy
49
14k
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設定してもエラーでない…
ありがとうございました