当初、
「らじる☆らじる」の配信方式
NHKラジオの番組を放送と同時にインターネットでも配信する
Adobe社が配布しているAdobe Flashplayer
そのため、
WMA形式での配信が終了してしまったので
録音用スクリプトの改修
「らじる☆らじる」
<?xml version="1.0" encoding="UTF-8"?>
<radiru_config>
<!-- お知らせ情報テキスト(中身はHTML) -->
<info><![CDATA[/netradio/files/include/oshirase.txt]]></info>
<!-- 各地域のストリームURL -->
<stream_url>
<data>
<areajp>仙台</areajp>
<area>sendai</area>
<apikey>600</apikey>
<r1><![CDATA[rtmpe://netradio-hkr1-flash.nhk.jp/live/NetRadio_HKR1_flash@108442]]></r1>
<r2><![CDATA[rtmpe://netradio-r2-flash.nhk.jp/live/NetRadio_R2_flash@63342]]></r2>
<fm><![CDATA[rtmpe://netradio-hkfm-flash.nhk.jp/live/NetRadio_HKFM_flash@108237]]></fm>
<oshirase><![CDATA[/netradio/files/include/oshirase_sendai.txt]]></oshirase>
<banners><![CDATA[/netradio/files/include/banners_sendai.txt]]></banners>
</data>
<data>
<areajp>東京</areajp>
<area>tokyo</area>
<apikey>001</apikey>
<r1><![CDATA[rtmpe://netradio-r1-flash.nhk.jp/live/NetRadio_R1_flash@63346]]></r1
...
このファイルを見ると、rtmpe://
というURLで配信されていることがわかります。
とりあえず配信元のURLはわかったものの、
このページによると、
rtmpdump --rtmp "rtmpe://netradio-fm-flash.nhk.jp" \ --playpath 'NetRadio_FM_flash@63343' \ --app "live" \ --swfVfy http://www3.nhk.or.jp/netradio/files/swf/rtmpe.swf \ --live \ -o fm.m4a
という指定でダウンロードできるようです。
指定されているオプションのうち、--swfVfy
は配信されているAdobe Flashを再生するためのプレイヤーの指定で、
さて、
206 if channel == 'r1':
207 rtmp='rtmpe://netradio-r1-flash.nhk.jp'
208 playpath='NetRadio_R1_flash@63346'
209 elif channel == 'r2':
210 rtmp='rtmpe://netradio-r2-flash.nhk.jp'
211 playpath='NetRadio_R2_flash@63342'
212 elif channel == 'fm':
213 rtmp='rtmpe://netradio-fm-flash.nhk.jp'
214 playpath='NetRadio_FM_flash@63343'
215 else:
216 print("channel set error:{0}".format(channel))
217 usage()
218 sys.exit(1)
生成する録音用スクリプトもrtmpdumpを使うように修正しました。
229 lines.append('#!/bin/sh')
230 lines.append('flvfile={0}/{1}.flv'.format(musicdir, title))
231 lines.append('m4afile={0}/{1}.m4a'.format(musicdir, title))
232 lines.append('(rtmpdump --rtmp {0} --playpath {1} --app "live" \
--swfVfy "http://www3.nhk.or.jp/netradio/files/swf/rtmpe.swf" \
--quiet --live --stop {2} -o $flvfile ) &'.format(rtmp, playpath, sduration))
233 lines.append('sleep 1m')
234 lines.append('radiru_noa.py {0} $m4afile'.format(channel))
235 lines.append('sleep {0}m'.format(duration))
236 lines.append('ffmpeg -loglevel error -i $flvfile -acodec copy $m4afile 237 lines.append('if [ -f "$m4afile" ]; then ')
238 lines.append(' rm -f $flvfile')
239 lines.append('fi')
240 lines.append('radiru_tag.py $m4afile')
241 lines.append('rm -f {}'.format(scriptname))
242 lines.append('')
243 script = "\n".join(lines)
このスクリプトでは、
番組情報書き込み機能の修正
録音ファイルをMP3形式からMP4形式に変更するに伴い、
mp4tagsは文字通り、
$ mp4tags mp4tags: You must specify at least one MP4 file. usage mp4tags OPTION... FILE... Adds or modifies iTunes-compatible tags on MP4 files. -help Display this help text and exit -version Display version information and exit -A, -album STR Set the album title -a, -artist STR Set the artist information -b, -tempo NUM Set the tempo (beats per minute) -c, -comment STR Set a general comment ... -z, -artistid NUM Set the artist ID -Z, -composerid NUM Set the composer ID -r, -remove STR Remove tags by code (e.g. "-r cs" removes the comment and song tags)
ざっと確認したところ、
48 def set_tag(file, tag):
49 import subprocess
50 mp4file = file.replace('.flv','.m4a')
51 filename = os.path.basename(mp4file)
52 date = filename.split("_")
53 mytitle = date[0] + '_' + tag['title'].encode('utf-8')
54 title = " -song '{}' ".format(mytitle)
55 album = " -album'{}' ".format(tag['album'].encode('utf-8'))
56 artist = " -artist '{}' ".format(tag['act'].encode('utf-8'))
57 if len(tag['contents']) > 0:
58 comment = " -comment '{}' ".format(tag['contents'].encode('utf-8'))
59 cmdlist = ['mp4tags ', file, title, album, artist, comment, mp4file]
60 else:
61 cmdlist = ['mp4tags ', file, title, album, artist, mp4file]
62
63 cmd = "".join(cmdlist)
64 p = subprocess.call(cmd, shell=True)
録音ファイルの確認
これらの修正を加えたradiru_
VLCでタグファイルの情報を確認すると、

これらの情報は、
$ mp4info 2015-09-29-06-00_古楽の楽しみ-ヴィヴァルディの音楽-_002.m4a mp4info version 2.0.0 2015-09-29-06-00_古楽の楽しみ-ヴィヴァルディの音楽-_002.m4a: Track Type Info 1 audio MPEG-4 AAC LC, 3300.010 secs, 48 kbps, 48000 Hz Name: 古楽の楽しみ -ヴィヴァルディの音楽-(2) Encoded with: Lavf56.4.101 Comments: 今谷和徳 - ヴィヴァルディの音楽 -(2)「バイオリンと弦楽合奏および通奏低音のための協奏曲 二長調 作品8 第11 RV.210」ヴィヴァルディ作曲 (11分50秒) (バイオリン)エンリコ・カサッツァ (合奏)ラ・マニフィカ・コムニタ ...
しばらく新しいスクリプトを使ってみたところ、
Adobe Flashでは音声の圧縮にHE-AAC形式を利用しています。HE-AACはMP3よりも後発のCODECで、
$ ls -lh -rw-r--r-- 1 kojima users 15M 8月 28日 07:01 2015-08-28-06-45_ラジオ英会話_2015_08_020.mp3 -rw-r--r-- 1 kojima users 5.3M 9月 4日 07:01 2015-09-04-06-45_ラジオ英会話_2015_09_005.m4a
また、
これならもっと早くに乗り替えててもよかったな、
なお、
OSC 2015 Tokyo/Fallへの出展のお知らせ
最後に少し話題が変りますが、
ブース展示には両日とも出展し、
Plamo Linuxの主要メンテナも顔を揃えますし、