ホーム > サーバ > OpenVPNとFFmpegとRadiko

OpenVPNとFFmpegとRadiko

2010 年 5 月 2 日 コメントをどうぞ コメント

先日radikoを対象外地域から聴取する方法についてご紹介しました。
該当記事 : Radiko

ただ、構成が複雑で毎回の接続が面倒でしたので、OpenVPNを用いた方法へ変更し
以下の図のようにスマートに利用できるようにしてみました。
(OpenVPNとは、離れたPC同士を擬似的にLAN接続するソフトウェアです。)

ネットワーク設定例 (OpenVPN版)

OpenVPNのクライアント側(Local PC)の設定ファイルへ

route 210.172.41.0 255.255.255.0
route 219.103.32.0 255.255.240.0

と記入しておけば、radiko関連の接続がOpenVPNを経由するようになります。
(その他の接続は通常通りなので、通信のパフォーマンス低下を防ぐ事ができます。)
[2011/08/18] routeの範囲を拡大しました。

また、OpenVPNのWindows版はウィンドウをタスクトレイに格納できるので、
特に作業の邪魔になる事もありません。
(サービスとして動作させる手もあります。)

ちなみに、VPS上へFFmpeg(librtmp対応版)を導入し、
cron(Windowsでいう「タスクスケジューラ」)と組み合わせて予約録音ができるようにしてみました。

配信時のビットレートが48kbpsなので、録音時のサイズは約21MB/hとなります。
この程度であれば、サーバ上にもある程度蓄積しておく事が可能です。

なお、録音に用いるシェルスクリプトは下記のサイトの物をベースにさせて頂きました。
debianでradikoをエアチェック、mp3出力してみる – がーぶろぐ(G-Blog)

私が使用しているスクリプトも以下に記しておきます。
(FFmpeg単体での使用を想定しています。)
(環境に合わせて「FFMPEG」・「OUTFILEBASEPATH」の内容を変更してください。)

#!/bin/sh
#
OUTFILEPREFIX=$1
RECTIMEMIN=$2
CHANNEL=$3
#
FFMPEG=/usr/local/bin/ffmpeg
#
OUTFILEBASEPATH=/home/xxxxx/radiko
AACFILEEXT=".aac"
#
MARGINTIMEMIN=1
#
OUTAACFILENAME=${OUTFILEBASEPATH}/${OUTFILEPREFIX}_`date +%Y-%m-%d`${AACFILEEXT}
RECTIME=`expr ${RECTIMEMIN} \* 60 + ${MARGINTIMEMIN} \* 2 \* 60`
#
cd ${OUTFILEBASEPATH}
#
${FFMPEG} -i "rtmpe://radiko.smartstream.ne.jp/${CHANNEL}/_defInst_/simul-stream live=1" -vn -acodec copy "${OUTAACFILENAME}" -t ${RECTIME}s

例えば、

title 60 TBS

という引数を与えれば、TBSラジオを62分間録音し、「title_YYYY-mm-dd.aac」として保存します。
(「YYYY-mm-dd」は実行した日付に置換されます。 例: 2010-05-02)
(要するに、タイムラグをカバーするために前後に1分ずつ余裕を持たせます。
cronで予約する場合は開始1分前から実行されるように設定してください。)

もしよろしければ、お試しくださいね。

追伸 : OpenVPNもFFmpegも、導入に際して思いのほか苦労しました(^ω^;)

関連記事 : とあるサイトの録音手段 (シェルスクリプト)

カテゴリー: サーバ タグ: , , , ,
  1. コメントはまだありません。
  1. トラックバックはまだありません。