はじめに
????「ちょっと何言ってるかわからない」
複数の端末を持っていると台数制限とかサーバーの負荷とか考えないで聴く方法を考えたらそうなりました。
もうちょっと詳しく
複数の端末でいろんな配信プラットフォームのアプリがあると使ってない間に非使用アプリとして再度ダウンロードしなきゃいけないのとかイラッとしませんか? そういうのが嫌だったので作ってみることにしました。
あと「Heart FM さんが開局して(ジェイムス・ヘイブンスさんやピストン西沢さんの番組を)録音する環境を再整備しなきゃ」と思ったのも大きいかなぁと。
ちなみに
発想は「burrocargado/RadioRelayServer」のソースを見て「こういう感じだったら(自分は)こうできそうだなぁ」とインスパイアしたのは(ry
技術スタック
ソフトウェア・ミドルウェア
- Streamlink
- Nginx
- FFmpeg
- MariaDB
- Django
- systemd
言語
- Python3
Streamlink のプラグインを書くのに必要だったし RadioRelayServer でも django を使っていたのでここでも使うことにしました。
外側
とりあえず今は使える状態にするのが目標なので基本的にまっさらです
内側
こうして見ると Nginx は基本的に Django のプロキシか RTMP ストリーミングぐらいしかさせていません。
systemd は Streamlink をバックグラウンドで動かすために使っています。
あとここには書いていませんが MariaDB はストリーミングサイトの接続情報を突っ込んでいるだけです。
他にもオフタイマーみたいな機能を入れていますが詳しくは誕生日ネタの「一定時間 HLS ストリーミングが再生されなかったら配信止めたくない? with Lua + Python3」をご覧ください。(誕生日ネタではファイル名を差し替えています。)
おわりに
あれ?コードは???
書き入れようと思いましたが、結構自分の家の環境にガッツリ依存しまくってるコードになってしまっているので(外観を見てもらえばわかるように白塗り箇所が多いしそれを白塗りにするのはちょっと面倒なので)載せるのは今回やめておこうということで(ぉぃ
一応言っておきますが
外から不特定多数で聴けるようになっていると権利関係で揉めます。 (いつかコードを出すことになれば)外に居てスマホ使って聴きたい場合、Nginx のアクセス制限はきちんとしておきましょう。
また、この先「外観をどうこうしよう」とすると Radik○ さんはじめ配信プラットフォームの皆様に怒られないかヒヤヒヤしながら心配になりそうな昨今ですw
最後に
ここまで最低限の機能を主に作っていましたが、使ってるサーバー(hp(現: HPE) の ML110 g5)に色々ものを突っ込みすぎてる関係で I/O が弱々なのか配信サイトの問題なのか途中でプツプツ音が切れちゃうので問題切り分けのためと思い切って Kubernetes を使ってみたいのと大きいストレージを載せて曲のストリーミングするためのそこそこ性能いい筐体(hp の EliteDesk 800 g3 SF とか)がほしいところです…w
オカネチョーd(ヤメロヨ