はじめに
NACK5リスナーの皆様が東京圏のFMラジオを日本全国、そして端末を選ばすいつでも聴けるそんな支局があればいいんじゃないかと思いこのプロジェクトを立ち上げました。SDR(ソフトフェア無線)が少しでも身近な物になって頂ければと思います。
STiNCへ備忘録を兼ねて記事を掲載させていただきます。
構成
構想自体はかなりまえからあったものの、試作を始めるまでに時間がたってしまいました。
一旦LAN内での稼働するシンプルな構成で作成しています。
- RTL-SDR V4
- Raspberry Pi 4(Ubuntu Server 24.04.4 LTS 64bit)
- アンテナ
- PC
初期設定
Raspberry Pi ImagerでOSのインストールを行います。SSH、固定IP、UFWの初期設定は割愛させて頂きます。便利ツールたちも入れておきます。
user:~$ sudo apt install -y vim curl wget git htop net-tools usbutils
RTL-SDRのインストール
user:~$ sudo apt install -y rtl-sdr librtlsdr-dev #インストール
user:~$ rtl_test -t #SDRを認識していると下記のような表示が出ます。
Found 1 device(s):
0: Realtek, RTL2838UHIDIR, SN: 00000001
ブラックリストの設定
デフォルトドライバと競合するため、無効化を行います。
user:~$ echo 'blacklist dvb_usb_rtl28xxu' | sudo tee /etc/modprobe.d/blacklist-rtl.conf
一般ユーザでも使えるようにして、再起動。
user:~$ sudo modprobe -r dvb_usb_rtl28xxu
user:~$ sudo reboot
ffmpegのインストール
user:~$ sudo apt install -y ffmpeg
user:~$ ffmpeg -version #確認
nginxのインストール
user:~$ sudo apt install -y nginx
user:~$ sudo systemctl status nginx #確認
HLS出力ディレクトリの作成
user:~$ sudo mkdir -p /var/www/html/hls
user:~$ sudo chown $USER:$USER /var/www/html/hls
配信スクリプト
user:~$ nano /etc/nginx/sites-available/radio
FREQ="80.0M"
GAIN=40
HLS_DIR="/var/www/html/hls"
SEGMENT_TIME=4
LIST_SIZE=10
rm -f ${HLS_DIR}/*.ts ${HLS_DIR}/*.m3u8
rtl_fm -f ${FREQ} -M wbfm -s 200000 -r 44100 -g ${GAIN} - | \
ffmpeg -re \
-f s16le -ar 44100 -ac 1 -i pipe:0 \
-c:a aac -b:a 128k -ar 44100 \
-f hls \
-hls_time ${SEGMENT_TIME} \
-hls_list_size ${LIST_SIZE} \
-hls_flags delete_segments \
-hls_segment_filename "${HLS_DIR}/seg%05d.ts" \
"${HLS_DIR}/stream.m3u8"
権限付与
chmod +x ~/radio_stream.sh
ブラウザ又はVLC(メディア→ネットワークストリームを開く)で
http://(サーバーのIP):8080/hls/stream.m3u8
上記へアクセスでとりあえず聞けます。


コメント