NHKネットラジオ(らじる)の録音
November 15, 2017 – 10:58 pm9月初旬からNHKネットラジオ(らじる)の配信方法が変更になっている。これまでのRTMPをベースとした配信に代え、HLS(HTTP Live Streaming)をベースとするものに変更された。
この変更に対応するため、我がサーバー上の録音用shellスクリプト(RTMPUumpによるNHKラジオ放送の録音(現状メモ)参照)を書きなおした。
関連する技術情報をメモしておいた。
HLS(m3u8)ストリームのmp3ファイルに変換保存:
HLSストリームはffmpegにより次のようにmp3ファイルに変換保存することができる。
ffmpeg -i url_stream.m3u8 -t duration outputfile.mp3
ここで、
url_stream.m3u8 : ストリームURL duration : 録音時間(秒) outputfile.mp3 : mp3 出力ファイル
NHKらじるのURL:
NHKらじるのストリームURLは以下(東京キー局の放送に対応)
NHK第一放送:
https://nhkradioakr1-i.akamaihd.net/hls/live/511633/1-r1/1-r1-01.m3u8
NHK第二放送:
https://nhkradioakr2-i.akamaihd.net/hls/live/511929/1-r2/1-r2-01.m3u8
NHKFM:
https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-01.m3u8
NHK第一放送録音時のログ:
ffmpegコマンドで上述したNHK第一放送のストリームURLを用いて録音した際のログを以下に示す。なお、出力ファイルを testaudio.mp3 とし、120秒間の録音を行っている。また、時間データを正確に取得するため、パラメータ -write_xing 0 を与えている。
$ ffmpeg -i "https://nhkradioakr1-i.akamaihd.net/hls/live/511633/1-r1/1-r1-01.m3u8" -write_xing 0 -t 120 testaudio.mp3 ffmpeg version 2.6.8 Copyright (c) 2000-2016 the FFmpeg developers built with gcc 4.8.5 (GCC) 20150623 (Red Hat 4.8.5-4) configuration: --prefix=/usr --bindir=/usr/bin --datadir=/usr/share/ffmpeg --incdir=/usr/include/ffmpeg --libdir=/usr/lib64 --mandir=/usr/share/man --arch=x86_64 --optflags='-O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4 -grecord-gcc-switches -m64 -mtune=generic' --enable-bzlib --disable-crystalhd --enable-gnutls --enable-ladspa --enable-libass --enable-libcdio --enable-libdc1394 --enable-libfaac --enable-nonfree --enable-libfdk-aac --enable-nonfree --disable-indev=jack --enable-libfreetype --enable-libgsm --enable-libmp3lame --enable-openal --enable-libopenjpeg --enable-libopus --enable-libpulse --enable-libschroedinger --enable-libsoxr --enable-libspeex --enable-libtheora --enable-libvorbis --enable-libv4l2 --enable-libx264 --enable-libx265 --enable-libxvid --enable-x11grab --enable-avfilter --enable-avresample --enable-postproc --enable-pthreads --disable-static --enable-shared --enable-gpl --disable-debug --disable-stripping --shlibdir=/usr/lib64 --enable-runtime-cpudetect libavutil 54. 20.100 / 54. 20.100 libavcodec 56. 26.100 / 56. 26.100 libavformat 56. 25.101 / 56. 25.101 libavdevice 56. 4.100 / 56. 4.100 libavfilter 5. 11.102 / 5. 11.102 libavresample 2. 1. 0 / 2. 1. 0 libswscale 3. 1.101 / 3. 1.101 libswresample 1. 1.100 / 1. 1.100 libpostproc 53. 3.100 / 53. 3.100 Input #0, hls,applehttp, from 'https://nhkradioakr1-i.akamaihd.net/hls/live/511633/1-r1/1-r1-01.m3u8': Duration: N/A, start: 60832.425367, bitrate: 45 kb/s Program 0 Metadata: variant_bitrate : 0 Stream #0:0: Audio: aac (HE-AAC) ([15][0][0][0] / 0x000F), 48000 Hz, stereo, fltp, 45 kb/s File 'testaudio.mp3' already exists. Overwrite ? [y/N] y Output #0, mp3, to 'testaudio.mp3': Metadata: TSSE : Lavf56.25.101 Stream #0:0: Audio: mp3 (libmp3lame), 48000 Hz, stereo, fltp Metadata: encoder : Lavc56.26.100 libmp3lame Stream mapping: Stream #0:0 -> #0:0 (aac (native) -> mp3 (libmp3lame)) Press [q] to stop, [?] for help size= 1875kB time=00:02:00.00 bitrate= 128.0kbits/s video:0kB audio:1875kB subtitle:0kB other streams:0kB global headers:0kB muxing overhead: 0.002343%
NHKらじる 録音用shell:
shell スクリプトを以下に示しておく:
#!/bin/sh date=`date '+%Y-%m-%d-%H:%M'` echo "date = ${date}" DURATION=`expr ${2} \* 60` if [ "${1}" = "NHK01" ]; then S1="https://nhkradioakr1-i.akamaihd.net/hls/live/511633/1-r1/1-r1-01.m3u8" elif [ "${1}" = "NHK02" ]; then S1="https://nhkradioakr2-i.akamaihd.net/hls/live/511929/1-r2/1-r2-01.m3u8" elif [ "${1}" = "NHKFM" ]; then S1="https://nhkradioakfm-i.akamaihd.net/hls/live/512290/1-fm/1-fm-01.m3u8" else exit fi if [ "${1}" = "NHK01" -o "${1}" = "NHK02" -o "${1}" = "NHKFM" ]; then ffmpeg -i "$S1" -t $DURATION -write_xing 0 "/var/www/test/audio/${1}_${date}.mp3" else exit fi
参考にしたサイト:
上述の技術情報は次のサイトを参考にした:
らじるらじる m3u8 を ffmpeg で録音する(8放送局)2017/9 以降対応