Hello,
I'm currently using gstreamer to decode and playback opus audio that is being received from the network (from a Mumble server). I'm currently only working with one audio stream (one other user on the server). The pipeline I'm currently using is setup as follows:
appsrc -> opusparse -> opusdec -> audiomixer -> autoaudiosink (which is resolving to pulseaudio).
This pipeline initially decodes and outputs the opus audio data correctly. The pipeline will function correctly as long as audio is sent continuously. As soon as audio stops being received (the other user on the Mumble server stops talking), the pipeline will not playback audio the next time the other user starts speaking. Note that opus data is still being recieved from the network and being pushed into the appsrc, it just never comes out the other end of the pipeline
The only way I've found to fix this is to restart the entire pipeline everytime there is a break in speech (set to NULL and then back to PLAYING). This is not ideal as it causes some choppyness and I don't think this will be possible once there are multiple people talking simultaneously. The Mumble protocol encodes a "Termination bit" in the audio packets so I am aware when the audio is stopping, but I'm not sure if the problem is that I need to pass this information to the opus decoder, that my opus decoder is just configured incorrectly, or something else that I am overlooking entirely.
--
_______________________________________________
gstreamer-devel mailing list
[hidden email]
https://lists.freedesktop.org/mailman/listinfo/gstreamer-devel