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.