GNOME Bugzilla – Bug 794143
support for rtsp onvif audio backchannel does not work correctly
Last modified: 2018-03-07 14:16:45 UTC
Try to play back with the test-onvif example as client from gst-plugins-good/tests/examples/rtsp. But made a little modification on the source code of the test-onvif-backchannel example from gst-rtsp-server\examples\test-onvif-backchannel.c. The original backchannel pipeline is created by code snippet gst_rtsp_onvif_media_factory_set_backchannel_launch (GST_RTSP_ONVIF_MEDIA_FACTORY (factory), "( capsfilter caps=\"application/x-rtp, media=audio, payload=0, clock-rate=8000, encoding-name=PCMU\" name=depay_backchannel ! rtppcmudepay ! fakesink async=false )"); which is replaced by the following code gst_rtsp_onvif_media_factory_set_backchannel_launch (GST_RTSP_ONVIF_MEDIA_FACTORY (factory), "( capsfilter caps=\"application/x-rtp, media=audio, payload=0, clock-rate=8000, encoding-name=PCMU\" name=depay_backchannel ! rtppcmudepay ! mulawdec ! directsoundsink )"); which create backchannel pipeline to play back with directsoundsink. gst-rtsp-server print the error message on console like rtspclient rtsp-client.c:1744:handle_play_request: client 0000000002DF6E00: unsuspend failed.
The sink has to be async=true, otherwise the media pipeline in the server won't ever pre-roll. Pre-rolling is required for sending out the SDP, and pre-rolling would otherwise only happen once we received data on the backchannel.
commit e5527e4403ca096f9c671b626d520b14808ea165 (HEAD -> master) Author: Sebastian Dröge <sebastian@centricular.com> Date: Wed Mar 7 12:20:05 2018 +0200 rtsp-onvif-media-factory: Document that backchannel pipelines must end with async=false sinks https://bugzilla.gnome.org/show_bug.cgi?id=794143