利用樹莓派 + Tube-Pi 播放 Kiss Radio 廣播

之前可能是為了要研究一些播放影音的東西,
所以從網路上買了 Tube Pi 這塊樹莓派
專用的擴充板。

不過現在這塊板子很少用,最近翻出來,想說看看能有什麼用途。Tube Pi 的音質算是不錯的,或許來試試看聽廣播吧。

當然,樹莓派如果要聽廣播的話,完全不用接 Tube Pi 或是搞一些有的沒的,只要安裝 Raspbian 桌面系統,
用瀏覽器就可以做很多事情了,聲音的話就走 HDMI 的聲音通道或是板子上的 3.5mm 接孔。

所以這裡我會用 RPi + Tube Pi 純粹是因為我有空出這些東西,而不是需要這些東西才可以達成上述的目的。

我個人比較喜歡 command line 的環境,所以就試試看吧。

我安裝的是 Raspbian Stretch Lite

pi@raspberrypi:~ $ uname -a
Linux raspberrypi 4.14.98-v7+ #1200 SMP Tue Feb 12 20:27:48 GMT 2019 armv7l GNU/Linux
pi@raspberrypi:~ $

安裝 Tube Pi 的 driver

這部分根據 Tube Pi 網頁上的說明,選用 Hifiberry DAC 就可以。

然後在播放器那邊選取播放的硬體,選取相容裝置 Hifiberry DAC 就可以使用 Tube Pi ~

修改 /boot/config.txt

# 刪除下面這行,直接刪除或是前面加個 # 註解掉
# dtparam=audio=on

# 新增下面這行
dtoverlay=hifiberry-dac

新增 /etc/asound.conf

pcm.!default {
  type hw card 0
}
ctl.!default {
  type hw card 0
}

重開機

$ sudo shutdown -r now

測試

利用 aplay 指令看看有沒有 ALSA 裝置。

pi@raspberrypi:~ $ aplay -l
**** List of PLAYBACK Hardware Devices ****
card 0: sndrpihifiberry [snd_rpi_hifiberry_dac], device 0: HifiBerry DAC HiFi pcm5102a-hifi-0 []
  Subdevices: 1/1
  Subdevice #0: subdevice #0
  
pi@raspberrypi:~ $ aplay -L
null
    Discard all samples (playback) or generate zero samples (capture)
default
sysdefault:CARD=sndrpihifiberry
    snd_rpi_hifiberry_dac,
    Default Audio Device
dmix:CARD=sndrpihifiberry,DEV=0
    snd_rpi_hifiberry_dac,
    Direct sample mixing device
dsnoop:CARD=sndrpihifiberry,DEV=0
    snd_rpi_hifiberry_dac,
    Direct sample snooping device
hw:CARD=sndrpihifiberry,DEV=0
    snd_rpi_hifiberry_dac,
    Direct hardware device without any conversions
plughw:CARD=sndrpihifiberry,DEV=0
    snd_rpi_hifiberry_dac,
    Hardware device with all software conversions
pi@raspberrypi:~ $

接下來就可以安裝應用軟體的部分了。

以我想聽的 Kiss Radio 舉例,它有提供 Twitch 的平台,
我們可以接收串流影音,然後透過 omxplayer 來播放。

一開始我用的是 Livestreamer,可惜的是,它在連接 Twitch 的時候一直有問題。
後來我就改用 Streamlink 就可以用了。
兩者的操作方式大同小異,Streamlink 的更新也貌似也比較活躍。

Streamlink is a CLI utility that pipes flash videos from online streaming services to a variety of video players such as VLC.

The main purpose of streamlink is to convert CPU-heavy flash plugins to a less CPU-intensive format.

Streamlink is a fork of the Livestreamer project.

Please note that by using this application you’re bypassing ads run by sites such as Twitch.tv. Please consider donating or paying for subscription services when they are available for the content you consume and enjoy.

安裝應用軟體

首先,先安裝主要的兩個軟體 omxplayerstreamlink,安裝方式都很簡單。

安裝 omxplayer

$ sudo apt install omxplayer

streamlink 可以用 pip 來安裝,不過我安裝時會報錯。

...
TypeError: unsupported operand type(s) for -=: 'Retry' and 'int'
...

我就改用了其他網站介紹的方式來重新安裝。

$ sudo apt-get remove python-pip python3-pip
$ wget https://bootstrap.pypa.io/get-pip.py
$ sudo python get-pip.py
$ sudo python3 get-pip.py

# 安裝 streamlink。
$ sudo pip install streamlink

都安裝好以後,就可以來下指令了。不過,要使用 Twitch 服務的話,要先取得 OAuth token,取得 token 的方式如下:

$ streamlink --twitch-oauth-authenticate

然後就會跑出一串 URL,把它複製貼上到瀏覽器上。
取得 Twitch oAuth token取得 Twitch oAuth token

把 token 複製下來,等一下 streamlink 會需要用到。
tokentoken

接著就可以下指令試試看了。

# 下面 XXXX 是要填入 token 的地方
$ streamlink --twitch-oauth-token=XXXX twitch.tv/livekiss best --player "omxplayer -o alsa:hw" --player-fifo

omxplayer 的 -o 可以改成你要的輸出裝置。

同樣的方式應該也可以用來看 Youtube 或其他網路平台的內容哦。

以下是完成圖。

rpi + tube pirpi + tube pi

rpi + tube pirpi + tube pi

SpeakerSpeaker