もう春だし、語学の勉強のために、ラジオ録音に挑戦してみたいなぁ
さくらVPS使っているから、挑戦してみるか・・・
http://namaraii.com/archives/19670
sudo yum install -y rtmpdump swftools ffmpeg … Setting up Install Process No package rtmpdump available. No package swftools available. No package ffmpeg available. Error: Nothing to do
http://centos.server-manual.com/centos6_repository.html
Elrepo
sudo rpm -ivh http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm を取得中 curl: (22) The requested URL returned error: 404 エラー: skipping http://elrepo.org/elrepo-release-6-4.el6.elrepo.noarch.rpm - transfer failed
elrepoのURLが変わっていたので http://elrepo.org/tiki/tiki-index.php
sudo rpm -ivh http://www.elrepo.org/elrepo-release-6-6.el6.elrepo.noarch.rpm
DropBoxをsupervidord経由で起動
/etc/supervidord.d/dropbox.confを作成
[program:dropbox] user=tatsumi command=/home/tatsumi/.dropbox-dist/dropboxd directory=/home/tatsumi/ redirect_stderr=true stdout_logfile=/var/log/supervisord/dropbox.log stdout_logfile_maxbytes = 5MB stderr_logfile=/var/log/supervisord/dropbox.err stderr_logfile_maxbytes = 5MB stdout_logfile_backups = 5 autorestart = true startsecs = 5
supervidorctrl update
これでデーモン化終了
最後に・・・
コマンドもインストールした、さぁ録音してみるか・・・ ここまでやっておいて、 おいおいNHKラジオの録音したかったのに。入ってないのかい!! どてぇ。。
きをとりなおして、ググると
こちらに有った。 http://akiradeveloper.hatenadiary.com/entry/2013/05/02/175120
cd git clone https://github.com/akiradeveloper/radikorec.git sudo make sudo make install chmod +x ~/radikorec/bin/radikorec
基礎英語1(月曜から金曜日の朝6:00から15分間)を録音したいのでcrontabに記入するか。
crontab -e
0 6 * * 1-5 source ~/.bash_profile;/home/tatsumi/radikorec/radikorec_wrapper --channel NHK2 --duration 15 --prefix KISO_EIGO1 --directory /home/tatsumi/Dropbox/radio
さぁ、うごけぇーー が、世の中そんなに甘くないようで・・
RTMPDump v2.3 (c) 2010 Andrej Stepanchuk, Howard Chu, The Flvstreamer Team; license: GPL WARNING: No application or playpath in URL! Connecting ... WARNING: HandShake: Type mismatch: client sent 6, server answered 9 WARNING: HandShake: Server not genuine Adobe! ERROR: RTMP_Connect1, handshake failed.
そうです。rtmdumpのバージョンが2.3で一つ古いのです。 こちらを見ながらソースから2.4をインストール http://memorandum.yamasnet.com/archives/Post-1383.html
動いたようです!でも、ちょっとファイルサイズがでかい気もするけどこんなものかな。
ファイルが大きい原因
radikorecの中でffmpegのオプションが「-acodec copy」になっているからなんですが、 rawファイルのままコピーするという意味でした。
faad2のインストール
sudo yum install faad2
radikorecコマンドを改造
mp3に変換するようにfaad(m4a->wav)とlame(wav->mp3)を呼び出すようにする。
#!/usr/bin/env python import os import commands from argparse import ArgumentParser import radiru import radiko class Config: def __init__(self, args): self.args = args self.duration_sec = 60 * args.duration + 30 self.P("\n--**-- %s --**--" % commands.getoutput("date -u")) date = commands.getoutput("TZ=JST-9 date +'%Y-%m-%d-%H-%M'") self.filename = "/".join( [args.directory, "%s-%s.mp3" % (args.prefix, date)] ) self.P(self.filename) def P(self, msg): LOGFILE = "/tmp/radikorec.log" f = open(LOGFILE, "a") f.write(str(msg) + "\n") f.close if self.args.debug: print(msg) def R(self, command, debug=True): if debug: self.P(command) if not self.args.dry_run: return os.system(command) if __name__ == '__main__': parser = ArgumentParser(description="A Simple Radiko/Radiru Recorder") parser.add_argument('--duration', type=int, default=1, help="time(min) to record. default(1)") parser.add_argument('--prefix', default='RADIKOREC', help="filename prefix. default(RADIKOREC)") parser.add_argument('--rtmpbin', default='rtmpdump', help="The path for rtmpdump binary >= 2.4. default(rtmpdump)") parser.add_argument('--channel', default='RN1', help="default(RN1)") parser.add_argument('--directory', default='/tmp', help="output directory. default(/tmp)") parser.add_argument('--debug', action='store_true', default=False, help="print messages on console.") parser.add_argument('--dry-run', action='store_true', default=False, help="don't actually execute") args = parser.parse_args() config = Config(args) config.P(args) # make m4a file command1 = None if radiru.CHANNEL_MAP.has_key(args.channel): config.P("use RADIRU") command1 = radiru.getCommand1(config) else: config.P("use RADIKO") command1 = radiko.getCommand1(config) if command1 is None: config.P("ERROR channel not valid") exit(1) repeat = 0 while repeat < 10: r = config.R(command1) if r is not 0: config.P("ERROR command1 %d" % r) repeat += 1 else: break if repeat is 10: config.P("ERROR all command1 retries failed") exit(1) # fix the file config.R("mv %s %s.raw" % (config.filename, config.filename)) command2 = "ffmpeg -t %d -i %s.raw -acodec copy %s.m4a".strip() % (config.duration_sec, config.filename, config.filename) r = config.R(command2) if r is not 0: config.P("ERROR command2 %d" % r) config.R("rm %s.raw" % config.filename) command3 = "faad -o %s.wav %s.m4a".strip() % (config.filename, config.filename) r = config.R(command3) if r is not 0: config.P("ERROR command3 %d" % r) config.R("rm %s.m4a" % config.filename) command4 = "lame --resample 16 -b 48 %s.wav %s".strip() % (config.filename, config.filename) r = config.R(command4) if r is not 0: config.P("ERROR command4 %d" % r) config.R("rm %s.wav" % config.filename)
あとは、ちょっとやり方がわからなかったので、 radikorec/radikorec_wrapperからradikorec/bin/radirerecをフルパス指定で呼び出すように修正しました。
でも、結局ファイルサイズ小さくならなかった!!!!