Some Internet radio stations offer URLs for streaming with popular software,
some don't. I'll show a way to capture currently runnig audio stream to file
using Pulseaudio and VLC.
Step 1. Pick an output
$ pactl list short | grep RUNNING | awk '{print $2}'
alsa_output.pci-0000_00_1b.0.analog-stereo
alsa_output.pci-0000_00_1b.0.analog-stereo.monitor
(The list of devices also be obtained via VLC GUI: View - Playlist - Audio capture.) Let's pick the second one.
Step 2. Write a Bash script
In the following script replace the value of
pulseaudio_stream
variable with
'pulse://YOUR_OUTPUT'
, where
YOUR_OUTPUT
is the output chosen in the first step.
#!/bin/bash -
set -o nounset
pulseaudio_stream='pulse://alsa_output.pci-0000_00_1b.0.analog-stereo.monitor'
usage() {
IFS= read -r errstr <<-errstr
Captures current pulseaudio stream $pulseaudio_stream and saves it to a file
Usage: $0 <output-path>
Example: $0 ~/Music/radio.mp3
errstr
echo >&2 "$errstr"
exit 1
}
if [[ $# < 1 ]]; then
usage
fi
output="$1"
nvlc "$pulseaudio_stream" ':sout=#transcode{vcodec=none,acodec=mp3,ab=128,channels=2,samplerate=44100}:duplicate{dst=std{access=file,mux=raw,dst='$output'}}'
Save it to
~/scripts/bash/rec-audio.sh
and make it executable.
Step 3. Use it
~/scripts/bash/rec-audio.sh ~/Music/radio.mp3
Currently running audio will be recorded to the file until you quit VLC.