I'm in the process of doing this (in python) with opus. Sending audio to icecast works
with a PUT request to the source mount point along with the source password. So if you
have an audio stream, like if you use opusenc (from the opus-tools package) and pipe it to
something that can stream the data as an http request, either a small script or using
oggfwd, then you'll have opus as your encoding format. Seems like you got it working
with ffmpeg though too.