読者です 読者をやめる 読者になる 読者になる

なんとなく

誰得感満載な記事が多いかも。Mono関係とLinuxのサーバ関係、レビューとか。

超!A&G+の番組を取得してみる

少し前に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 能登麻美子