推しの声優のラジオを録音して聞く環境を整えた

f:id:razokulover:20171012192253j:plain

推しの声優のラジオを聞く環境を整えた。

自分が現在聞いているのは10番組ほどで超A&Gとradiko文化放送で配信されている。

A&Gは音泉アーカイブされたり、文化放送の方も1週間だけアーカイブされてるみたいな仕様なのだが、忙しくてアーカイブ期間を逃すことも結構あるので大変困ってた。

加えて普段から倍速視聴に慣れてる耳としては標準速度でしか聴けないのも結構辛い。

そういう経緯があり、自分だけのラジオ視聴環境を整えたいと考えていたところ、ちょうど3連休が空いてたのでさくっと環境を整えてみた。

巷に色々HowToは転がってるので何番煎じかわからんけど、とりあえず以下はその構成とかメモです。

利用ケース

  • 推しの声優のラジオを出来るだけ逃さず聞きたい
  • 倍速で聞きたい
  • バックグラウンド再生できてほしい

まずは最低限の利用ケース。

逃さず録音することと倍速視聴は必須。

出先で聞きたいのでバックエンド再生も必須にした。

ということでアプリも作らないといけないことになった。。。

対象ラジオ

構成

上記の利用ケースを満たす構成をどうするかを色々考えた結果当初は、

  • サーバーサイドはGo+GCE
  • フロントはReactNative(iOSのみ)

でやっていくことにした。

GCPはBigQueryくらいしか触ったことがなかったので使ってみようというモチベーションでGCEを採用。 Goで何か作ってみたいという気持ちが1年以上あったが進捗なかったので重い腰をあげて採用。 フロントはSwiftでとか思ったが、Go+GCEで結構ハマるかもしれないとか思ったので慣れてるReactNativeを採用。

サーバーサイドでは、rtmpdumpとffmpegswftoolsを使う。

rtmpdumpでストリームを取得してローカルに書き出し、

ffmpegでそのファイルをmp4に変換。

各種ファイル情報等をDBに登録。

といった流れ。

ちなみにswftools文化放送を録音する時に使う。

苦労話

GCP+Goは本当に楽。

特にgcloudコマンドで何でも出来て、ssh鍵の管理とかも意識せず気楽にインスタンスを立ち上げられるのが最高。

OSはubuntu16.04を利用してしたので各種ツールもapt-get installするだけだし詰まるところなし。

特にGoははじめてサーバーで使ったが、buildしたファイルを置くだけで動くっていうのはすごく便利やなぁという印象だった。

Railsとか動かそうと思うとnokogiriとかmysql2とか各種gemではまったりなんだかんだハマることがあるが、そういう点で気楽に本番で動かせるGoは良い。

ReactNativeに関してもreact-native-videoでバックグラウンド再生も簡単にできるのでラクラクだった。ネイティブアプリをサクッと作るのにReactNativeはホント楽。

と、まぁこれだけ書くと苦労話は0みたいな感じだけど、実際ハマったのは文化放送の録音時の地域制限問題。

GCPは東京リージョンを選択していたのだけど、GCEにアサインした外部静的IPがなぜかGoogle本社のマウンテンビューを指す。

なので文化放送の配信外エリアとなり録音不可になる。。

どうにか迂回方法を探したがダメっぽいので、気持ちを切り替えてさくらのVPSを使うことに。

さくらに登録してVPSを無料利用期間付きで登録し、サーバーを取得。

一応事前にさくらのクラウドでIPの地域を確認したところ東京を指していたのでVPSも問題ないだろうと考えていた。

ところが、、いざVPSに発行されたIPを調べるとなんと大阪に...。

東京第2リージョンなのにIPは大阪なのかよ。

ということで最終的には東京リージョンのEC2で運用することになった。東京リージョンで発行されるStatic IPはちゃんと東京を指す。

やっぱりAWSか〜。

という感じで文化放送を録音する環境を作る時はEC2がおすすめです。

最後に

一応録音方法を公に細々流布するのは大人に怒られたりしそうなので詳しくはnet-radio-archiveというRailsアプリのコードを読んで下さい。

net-radio-archiveはA&Gや文化放送だけではなく全ラジオ放送を録音しようという試みをしているのでコード読むと良いと思う。

最後に一応、ラジオを録音してインターネット上に公開するのはほぼほぼ違法だと思われるので個人で楽しむ範囲でお願いします。

関連リンク