LoginSignup
0
0

「あぁ、そうか 家で(サーバー負荷考えないで)ネットラジオ流すなら家で HLS にさせちゃえばいいんだ!」と思い"(今のところ)最低限の機能"だけ実装した話

Last updated at Posted at 2023-12-06

はじめに

????「ちょっと何言ってるかわからない」

複数の端末を持っていると台数制限とかサーバーの負荷とか考えないで聴く方法を考えたらそうなりました。

もうちょっと詳しく

複数の端末でいろんな配信プラットフォームのアプリがあると使ってない間に非使用アプリとして再度ダウンロードしなきゃいけないのとかイラッとしませんか? そういうのが嫌だったので作ってみることにしました。
あと「Heart FM さんが開局して(ジェイムス・ヘイブンスさんやピストン西沢さんの番組を)録音する環境を再整備しなきゃ」と思ったのも大きいかなぁと。

ちなみに

発想は「burrocargado/RadioRelayServer」のソースを見て「こういう感じだったら(自分は)こうできそうだなぁ」とインスパイアしたのは(ry

技術スタック

ソフトウェア・ミドルウェア

言語

  • Python3
    Streamlink のプラグインを書くのに必要だったし RadioRelayServer でも django を使っていたのでここでも使うことにしました。

外側

radio-browser.png
とりあえず今は使える状態にするのが目標なので基本的にまっさらです

内側

radio-systemd.drawio.png
こうして見ると 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(ヤメロヨ

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0