少し前にNHK Worldのラジオ日本のロシア語放送を取得するスクリプトを書いたので、なんとなく声優さんのラジオも取得してみるかと思い書いてみた。
やってみたのは、 超!A&G+ を取得すること。
グーグル先生に色々聞いてみると簡単にできそうだったので、やってみた。 放送は、rtmpのプロトコルで配信されているので、rtmpdumpで録音した後にffmpegで変換してあげればよいようだった。
処理内容としては、録音まで30秒スリープした後、rtmpdumpで指定された時間分ダンプ。録音録画後に動画あると指定した場合はmp4に それ以外はmp3に変更するスクリプト。 mp3の場合、ffmpegで変換時にタイトル、アーティスト名を付加してid3tag(v2.4)で登録している。v2.3のオプションをつけるとcrontabで実行時にうまくできない場合があったので、デフォルトにしている。
引数チェックでタイトルにスペースとか使えない文字とかあった場合の処理を入れてない。そこは注意してcrontabに仕掛ける。 汎用的に使うなら、敢えてmp3にする必要はないと思われるが、mp3しか再生できないmp3プレイヤーで聴くことがあるので音声のみの場合はmp3にしている。
以下スクリプト
#!/bin/bash TMPNAME=`echo $RANDOM` RTMPPATH="rtmp://fms-base2.mitene.ad.jp/agqr/aandg22" VIDEO="OFF" #duration #title #artist #outputdir if [ $# -le 1 ]; then echo "usage : $0 title duration(minuites) [outputdir] [artist] [video:ON/OFF]" exit 1 fi if [ $# -ge 2 ]; then TITLE=$1 DURATION=`expr $2 \* 60 + 60` fi if [ $# -ge 3 ]; then OUTDIR=$3/ fi if [ $# -ge 4 ]; then ARTIST=$4 fi if [ $# -ge 5 ]; then VIDEO=$5 fi sleep 30 rtmpdump --rtmp ${RTMPPATH} --live -B ${DURATION} -o "${OUTDIR}${TMPNAME}.flv" RECDATE=`date '+%Y%m%d'` if [ ${VIDEO} = "OFF" ]; then ffmpeg -y -i "${OUTDIR}${TMPNAME}.flv" -acodec libmp3lame -ab 48k \ -metadata artist="${ARTIST}" -metadata title="${RECDATE}${TITLE}" \ -metadata album=${TITLE} -metadata date=`date '+%Y'` "${OUTDIR}${RECDATE}_${TITLE}.mp3" else ffmpeg -y -i "${OUTDIR}${TMPNAME}.flv" -vcodec copy -acodec copy "${OUTDIR}${RECDATE}_${TITLE}.mp4" fi if [ -f ${OUTDIR}${TMPNAME}.flv ]; then rm -f ${OUTDIR}${TMPNAME}.flv fi
crontabには以下のように登録。24:00から開始の場合は、1分前に仕掛ける。30秒sleepするので。指定した分数より30秒多めに録音される。
59 23 * * 1 /home/takeshich/seiyu/rec_ag.sh 西明日香のデリケートゾーン! 30 /home/takeshich/seiyu 西明日香 ON 29 00 * * 2 /home/takeshich/seiyu/rec_ag.sh 能登麻美子_おはなしNOTE 30 /home/takeshich/seiyu 能登麻美子