Linux: radish でラジコと らじる をリアルタイム録音する

昨日、FreeBSD上で radish を使って、ラジコのリアルタイム録音を行う方法に関して記録しました。

本番二日目ですが、本日もサーバー上で自動録音してくれています。これに気をよくして、Linux環境でも自動録音実行出来るようにしたいと思います。
とはいえ、現時点で常時稼働させている Linuxマシンを持っていないので、Windows subsystem for Linux でDebian Linuxを動かして Windows10 上でエミュレーションすることにします。

と、以前、WSL上でラジコをリアルタイム録音するメモを残しました。約5年前の話。
当時の課題と環境の変化は、以下の通り。

  1. ラジコサーバーがFlashストリームを中止し、HTML5 Live Streamになった。
  2. インストール可能なLinuxのレパートリーが増えた。
  3. 当時はWSLでcronが動かなかったので、Windows側のタスクマネージャからシェルスクリプトをキックして起動していた。
  4. WSLに、ffmpegをインストール出来なかったので、.flv を m4a に自動フォーマット変換するのが困難だった。

Linux環境の構築

  1. 前提条件として、WSLを使えるx64 Windows10 で実施する必要があります。
  2. コントロールパネル→プログラムと機能→Windowsの機能の有効化または無効化 から、「Linux用Windowsサブシステム」を有効にする。(OS再起動が必要)
  3. その後、Microsoft Store から、Linuxを検索してインストール。Linuxには様々なディストリビューションがありますので、私はDebianを選択してインストール。

これで、Linux もどき環境が構築できました。VMや実機を使って、フルのLinuxを構築することも可能ですが、これだけでLinuxコマンドが使えるようになるので WSLって便利。

Microsoft Store からDebian を起動するか、Windowsメニューからbashとタイプして、シェル画面を起動。

必要なパッケージを入れる

続いて、https://github.com/uru2/radish に書かれているとおり、curl、xmllint、jq、ffmpeg コマンドが必要になりますので、これらを入れますが、xmllintはコマンド名と入っているパッケージが異なるので、libxml2ではなく、libxml2-utils をインストールします。

コマンドラインで、

$ sudo apt-get install curl jq ffmpeg libxml2-utils

でいいと思います。(libxml2を入れたけど、xmllint が入らなかったので、調べて libxml2-util が必要と判明。)

OS側のテスト環境準備は以上で完了。ffmpegコマンドが使えるようになっていました。コマンド不足の問題は解決していました。

ラジコリアルタイム録音コマンドを準備する

続いて録音テスト。まずは、https://github.com/uru2/radish から、radi.sh コマンドをダウンロード。

それを、自分のDebian環境下に bin ディレクトリを作成して、コピー。実行権を与えておきます。
それから、録音するファイルの保存フォルダーを準備しておきます。私の場合は bin 同様に、radish フォルダーを作成しておきます。

録音テスト

受信エリアが関係ないNHKで録音テストしてみます。ファイル名は自動生成。
(行先頭の$はBashのプロンプト。)

$ cd radish
$ $HOME/bin/radi.sh -t nhk -s tokyo-r1 -d 1

まず、録音ファイル保存場所にcdしたあと、radi.sh コマンド発行。東京R1 を1分間録音してみます。

 353931 Mar 17 23:41 tokyo-r1_20210317234039.m4a

成功。続いてTBS。

$ $HOME/bin/radi.sh -t radiko -s TBS -d 1

こっちもうまくいきました。

356863 Mar 17 23:44 TBS_20210317234358.m4a

radishのテスト完了。

インストールするだけなら超簡単。しかし、これでは、自動録音出来ません。

自動録音

FreeBSDで作ったコマンド同様、自動実行するためのコマンドを作ります。
いつものように、平日13:00からのTBSたまむすびを録音するためのコマンド。

<録音コマンド>

#!/bin/sh
cd $HOME/radish
$HOME/bin/radi.sh -t radiko -s TBS -d 150

これを例えば、tbs1300.sh として、$HOME/bin 下に保存して、実行権を与えておきます。

次に、crontab へ自動実行登録。こんな感じ。(赤の行)

# m h  dom mon dow   command
0 13 * * 1-5 $HOME/bin/tbs1300.sh

これで、13時まで待ってみたものの、自動録音は開始されず。

あれれ????
crontab はサポートされるのに、実行はされないのか?5年前は、cronが使えなかったので、Windows側からLinuxコマンドをキックしましたけど、Web検索してみると、cron デーモンが自動起動しないだけのようです。

$ sudo service cron start

これで、WSLの crontab に登録されたコマンドが自動実行されるようになりました。タスクスケジューラを使う必要は無さそう。

短時間のテストには成功したので、本番に関して、次回の指定時刻を待つことにします。

とは言っても、今のところ、タイムフリー録音を聴取のメインにしているので、リアルタイム録音はあくまでもバックアップと、タイムフリー未対応番組の自動録音。

注意点

その他、Windows OS再起動後に行うべき自動録音のための準備ポイントは、

  1. OS起動後にDebian Linux(ウィンドウ)は自動起動しませんが、WSLはバックグランドで自動起動します。
  2. bashやDebianを手動で起動する必要はありませんが、
  3. cronデーモンは自動起動しないので、cronデーモンを自動起動するように設定する(今のところ方法未調査)か、Debianを手動起動した後、「sudo service cron start」を行わないと、自動録音してくれません。
  4. Windows更新を行った後、再起動→ログインを待ちきれず放置していると痛い目を見ます。

定常的に使うなら、LinuxのVMを準備するか、ラズパイを使う方が安全そう。

コメントを残す