You don't need Icecast unless you are setting up your own private streaming server. If you're feeding BCFY then liquidsoap is all that is necessary to stream to their servers. One suggestion. Include audio AGC to level out some of the audio differences.
Below is an example op25.liq file to stream audio to broadcastify.com that includes some audio compression.
Edit host, mount point, and passwords to match your assigned values.
Additionally, you can include metadata on your feed if you create a tag file to be called by your trunk.tsv file.
You'll need to edit
meta.json with the same values as those specified in op25.liq to stream to BCFY and then add
-M meta.json to your rx.py command line.
op25.liq
#!/usr/bin/liquidsoap
# Example liquidsoap streaming from op25 to icecast
# (c) 2019,
gnorbury@bondcar.com
#
set("log.stdout", true)
set("log.file", false)
set("log.level", 1)
# Make the native sample rate compatible with op25
set("frame.audio.samplerate", 8000)
# Compress and normalize, producing a more uniform and "full" sound.
# @category Source / Sound Processing
# @param s The input source.
def nrj(s)
compress(threshold=-20.,ratio=3.,gain=3.,normalize(s))
end
input = nrj(mksafe(input.external(buffer=0.25, channels=2, samplerate=8000, restart_on_error=false, "./audio.py -s -x 2")))
# Consider increasing the buffer value on slow systems such as RPi3. e.g. buffer=0.25
# Longer buffer results in less choppy audio but at the expense of increased latency.
# LOCAL AUDIO
# Uncomment the appropriate line below to enable local sound
#
# Default audio subsystem
#out (input)
#
# PulseAudio
#output.pulseaudio(input)
#
# ALSA
#output.alsa(input)
# ICECAST STREAMING
# Uncomment to enable output to an icecast server
# Change the "host", "password", and "mount" strings appropriately first!
# For metadata to work properly, the host address given here MUST MATCH the address in op25's meta.json file
#
output.icecast(%mp3(bitrate=16, samplerate=22050, stereo=false), description="op25", genre="Public Safety", url="", fallible=false, icy_metadata="false", host="audio3.broadcastify.com", port=80, mount="your_mount_point", password="hackme", mean(input))
(Bill)