rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

NHKラジオ ライブ配信を録音するスクリプト

2026 Sep. 27.
2025 Oct. 04.

NHKラジオライブ配信URL(数年ごとに変更されている)


2026年9月27日現在
改)NHKネットラジオのストリームURLが変更された (2026年8月)(2025年9月) - pekop20’s diary

地域、R1、R2、FMの別になっている。
https://www.nhk.or.jp/radio/config/config_web.xml より
(Firefoxブラウザでは「ページのソースを表示」モードで全体を表示できた)

<?xml version="1.0" encoding="UTF-8"?>
<radiru_config>

    <!-- お知らせ -->
    <info><![CDATA[/radio/include/oshirase.txt]]></info>
    
    <!-- 各地域のストリームURL -->
    <stream_url>
        <data>
            <areajp>札幌</areajp>
            <area>sapporo</area>
            <apikey>700</apikey>
            <areakey>010</areakey>
            
            <r1hls><![CDATA[https://simul2.drdi.st.nhk/live/6/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul2.drdi.st.nhk/live/7/joined/master.m3u8]]></fmhls>
            
        </data>
        <data>
            <areajp>仙台</areajp>
            <area>sendai</area>
            <apikey>600</apikey>
            <areakey>040</areakey>
            
            <r1hls><![CDATA[https://simul2.drdi.st.nhk/live/8/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul2.drdi.st.nhk/live/9/joined/master.m3u8]]></fmhls>
            
        </data>
        <data>
            <areajp>東京</areajp>
            <area>tokyo</area>
            <apikey>001</apikey>
            <areakey>130</areakey>

            <r1hls><![CDATA[https://simul2.drdi.st.nhk/live/3/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul2.drdi.st.nhk/live/5/joined/master.m3u8]]></fmhls>
        </data>
        <data>
            <areajp>名古屋</areajp>
            <area>nagoya</area>
            <apikey>300</apikey>
            <areakey>230</areakey>
            
            <r1hls><![CDATA[https://simul2.drdi.st.nhk/live/10/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul2.drdi.st.nhk/live/11/joined/master.m3u8]]></fmhls>
            
        </data>
        <data>
            <areajp>大阪</areajp>
            <area>osaka</area>
            <apikey>200</apikey>
            <areakey>270</areakey>
            
            <r1hls><![CDATA[https://simul2.drdi.st.nhk/live/12/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul2.drdi.st.nhk/live/13/joined/master.m3u8]]></fmhls>
            
        </data>
        <data>
            <areajp>広島</areajp>
            <area>hiroshima</area>
            <apikey>400</apikey>
            <areakey>340</areakey>
            
            <r1hls><![CDATA[https://simul2.drdi.st.nhk/live/14/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul2.drdi.st.nhk/live/15/joined/master.m3u8]]></fmhls>
            
        </data>
        <data>
            <areajp>松山</areajp>
            <area>matsuyama</area>
            <apikey>800</apikey>
            <areakey>380</areakey>
            
            <r1hls><![CDATA[https://simul2.drdi.st.nhk/live/16/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul2.drdi.st.nhk/live/17/joined/master.m3u8]]></fmhls>
            
        </data>
        <data>
            <areajp>福岡</areajp>
            <area>fukuoka</area>
            <apikey>501</apikey>
            <areakey>400</areakey>
            
            <r1hls><![CDATA[https://simul2.drdi.st.nhk/live/18/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul2.drdi.st.nhk/live/19/joined/master.m3u8]]></fmhls>
            
        </data>
    </stream_url>
    
    <!-- noa api -->
    <url_program_noa><![CDATA[//api.nhk.jp/r8/pg/now/radio/{area}/now.json]]></url_program_noa>

    <!-- program detail api -->
    <url_program_day><![CDATA[//api.nhk.jp/r8/pg/date/{service}/{area}/[YYYY-MM-DD].json]]></url_program_day>

    <!-- program info api -->
    <url_program_detail><![CDATA[//api.nhk.jp/r8/t/broadcastevent/be/{broadcastEventId}.json]]></url_program_detail>

    <!-- tweet cgi @radiru -->
    <radiru_twitter_timeline><![CDATA[//cgi4.nhk.or.jp/tweet/api/tweet.cgi?twname=nhk_radiru]]></radiru_twitter_timeline>

</radiru_config>


旧)2025年10月4日現在
地域、R1、R2、FMの別になっている。

<?xml version="1.0" encoding="UTF-8"?>
<radiru_config>

    <!-- お知らせ -->
    <info><![CDATA[/radio/include/oshirase.txt]]></info>
    
    <!-- 各地域のストリームURL -->
    <stream_url>
        <data>
            <areajp>札幌</areajp>
            <area>sapporo</area>
            <apikey>700</apikey>
            <areakey>010</areakey>
            
            <r1hls><![CDATA[https://simul.drdi.st.nhk/live/6/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul.drdi.st.nhk/live/7/joined/master.m3u8]]></fmhls>
            
        </data>
        <data>
            <areajp>仙台</areajp>
            <area>sendai</area>
            <apikey>600</apikey>
            <areakey>040</areakey>
            
            <r1hls><![CDATA[https://simul.drdi.st.nhk/live/8/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul.drdi.st.nhk/live/9/joined/master.m3u8]]></fmhls>
            
        </data>
        <data>
            <areajp>東京</areajp>
            <area>tokyo</area>
            <apikey>001</apikey>
            <areakey>130</areakey>

            <r1hls><![CDATA[https://simul.drdi.st.nhk/live/3/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul.drdi.st.nhk/live/5/joined/master.m3u8]]></fmhls>
        </data>
        <data>
            <areajp>名古屋</areajp>
            <area>nagoya</area>
            <apikey>300</apikey>
            <areakey>230</areakey>
            
            <r1hls><![CDATA[https://simul.drdi.st.nhk/live/10/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul.drdi.st.nhk/live/11/joined/master.m3u8]]></fmhls>
            
        </data>
        <data>
            <areajp>大阪</areajp>
            <area>osaka</area>
            <apikey>200</apikey>
            <areakey>270</areakey>
            
            <r1hls><![CDATA[https://simul.drdi.st.nhk/live/12/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul.drdi.st.nhk/live/13/joined/master.m3u8]]></fmhls>
            
        </data>
        <data>
            <areajp>広島</areajp>
            <area>hiroshima</area>
            <apikey>400</apikey>
            <areakey>340</areakey>
            
            <r1hls><![CDATA[https://simul.drdi.st.nhk/live/14/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul.drdi.st.nhk/live/15/joined/master.m3u8]]></fmhls>
            
        </data>
        <data>
            <areajp>松山</areajp>
            <area>matsuyama</area>
            <apikey>800</apikey>
            <areakey>380</areakey>
            
            <r1hls><![CDATA[https://simul.drdi.st.nhk/live/16/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul.drdi.st.nhk/live/17/joined/master.m3u8]]></fmhls>
            
        </data>
        <data>
            <areajp>福岡</areajp>
            <area>fukuoka</area>
            <apikey>501</apikey>
            <areakey>400</areakey>
            
            <r1hls><![CDATA[https://simul.drdi.st.nhk/live/18/joined/master.m3u8]]></r1hls>
            <r2hls><![CDATA[https://simul.drdi.st.nhk/live/4/joined/master.m3u8]]></r2hls>
            <fmhls><![CDATA[https://simul.drdi.st.nhk/live/19/joined/master.m3u8]]></fmhls>
            
        </data>
    </stream_url>
    
    <!-- noa api -->
    <url_program_noa><![CDATA[//api.nhk.jp/r7/pg/now/radio/{area}/now.json]]></url_program_noa>

    <!-- program detail api -->
    <url_program_day><![CDATA[//api.nhk.jp/r7/pg/date/{service}/{area}/[YYYY-MM-DD].json]]></url_program_day>

    <!-- program info api -->
    <url_program_detail><![CDATA[//api.nhk.jp/r7/t/broadcastevent/be/{broadcastEventId}.json]]></url_program_detail>

    <!-- tweet cgi @radiru -->
    <radiru_twitter_timeline><![CDATA[//cgi4.nhk.or.jp/tweet/api/tweet.cgi?twname=nhk_radiru]]></radiru_twitter_timeline>

</radiru_config>


録音シェルスクリプト


rec_nhk.sh

#!/bin/bash
# 2026 Sep. 27.
# 2025 Oct. 04.
# from https://gist.github.com/matchy256/9515cecbea40918add594203dc61406c

# URL of each station was changed on Aug. 2026.
# URL of each station was changed on Sep. 2025.

pid=$$
date=`date '+%Y-%m-%d-%H_%M'`
outdir="."

if [ $# -le 1 ]; then
  echo "usage : $0 channel_name duration(minuites) [outputdir] [prefix]"
  exit 1
fi

if [ $# -ge 2 ]; then
  channel=$1
  DURATION=`expr $2 \* 60 + 15`
fi
if [ $# -ge 3 ]; then
  outdir=$3
fi
PREFIX=${channel}
if [ $# -ge 4 ]; then
  PREFIX=$4
fi

#
# set channel
#
case $channel in
  "NHK1_TOKYO")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023229/nhkradiruakr1/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/3/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/3/joined/master.m3u8"
    ;;
  "NHK2_TOKYO")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023501/nhkradiruakr2/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    ;;
  "FM_TOKYO")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023507/nhkradiruakfm/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/5/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/5/joined/master.m3u8"
    ;;
  "NHK1_SAPPORO")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023545/nhkradiruikr1/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/6/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/6/joined/master.m3u8"
    ;;
  "NHK2_SAPPORO")
    #aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    ;;
  "FM_SAPPORO")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023546/nhkradiruikfm/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/7/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/7/joined/master.m3u8"
    ;;
  "NHK1_SENDAI")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023543/nhkradiruhkr1/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/8/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/8/joined/master.m3u8"
    ;;
  "NHK2_SENDAI")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023543/nhkradiruhkr1/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    ;;
  "FM_SENDAI")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023544/nhkradiruhkfm/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/9/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/9/joined/master.m3u8"
    ;;
  "NHK1_NAGOYA")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023510/nhkradiruckr1/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/10/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/10/joined/master.m3u8"
    ;;
  "NHK2_NAGOYA")
    #aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    ;;
  "FM_NAGOYA")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023511/nhkradiruckfm/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/11/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/11/joined/master.m3u8"
    ;;
  "NHK1_OSAKA")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023508/nhkradirubkr1/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/12/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/12/joined/master.m3u8"
    ;;
  "NHK2_OSAKA")
    #aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    ;;
  "FM_OSAKA")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023509/nhkradirubkfm/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/13/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/13/joined/master.m3u8"
    ;;
  "NHK1_HIROSHIMA")
    #aspx="https://simul.drdi.st.nhk/live/14/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/14/joined/master.m3u8"
    ;;
  "NHK2_HIROSHIMA")
    #aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    ;;
  "FM_HIROSHIMA")
    #aspx="https://simul.drdi.st.nhk/live/15/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/15/joined/master.m3u8"
    ;;
  "NHK1_MATSUYAMA")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023547/nhkradiruzkr1/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/16/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/16/joined/master.m3u8"
    ;;
  "NHK2_MATSUYAMA")
    #aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    ;;
  "FM_MATSUYAMA")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023548/nhkradiruzkfm/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/17/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/17/joined/master.m3u8"
    ;;
  "NHK1_FUKUOKA")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023541/nhkradirulkr1/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/18/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/18/joined/master.m3u8"
    ;;
  "NHK2_FUKUOKA")
    #aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    aspx="https://simul.drdi.st.nhk/live/4/joined/master.m3u8"
    ;;
  "FM_FUKUOKA")
    #aspx="https://radio-stream.nhk.jp/hls/live/2023542/nhkradirulkfm/master48k.m3u8"
    #aspx="https://simul.drdi.st.nhk/live/19/joined/master.m3u8"
    aspx="https://simul2.drdi.st.nhk/live/19/joined/master.m3u8"
    ;;
  *)
    echo "failed channel"
    exit 1
    ;;
esac

# MP3に変換する場合
#ffmpeg -loglevel quiet -y -t ${DURATION} -i ${aspx} -acodec libmp3lame -ab 128k "${outdir}/${PREFIX}_${date}.mp3"
ffmpeg -y -t ${DURATION} -i ${aspx} -acodec libmp3lame -ab 128k "${outdir}/${PREFIX}_${date}.mp3"
#avconv -loglevel quiet -y -t ${DURATION} -i ${aspx} -acodec mp3 -ab 128k "${outdir}/${PREFIX}_${date}.mp3"

# AACでとりだす場合
#ffmpeg -loglevel quiet -y -t ${DURATION} -i ${aspx} -vn -acodec copy -bsf:a aac_adtstoasc "${outdir}/${PREFIX}_${date}.m4a"
#ffmpeg -y -t ${DURATION} -i ${aspx} -vn -c:a aac -ar 48000 -ab 192k -ac 2 "${outdir}/${PREFIX}_${date}.aac"

exit 0