struggling with rtsp-sever
James
jam at tigger.ws
Thu Oct 7 07:14:54 UTC 2021
It seems to me that I need to limit pulsesrc producing data to the (it works) rate that audiotestsrc does.
Can anyone help me here.
To make it double-frustrating I had it working for 1/2 hour, but while trying to solve *sharing* I trashed my setup and cannot re-create it. All based on gst-rtsp-streamer/examples/test-appsrc2.c
Thanks
James
0:00:29.783584309 53501 0x7f5db4003360 WARN audiobasesrc gstaudiobasesrc.c:841:gst_audio_base_src_create:<pulsesrc0> warning: Can't record audio fast enough
0:00:29.783589018 53501 0x7f5db4003360 WARN audiobasesrc gstaudiobasesrc.c:841:gst_audio_base_src_create:<pulsesrc0> warning: Dropped 6160 samples. This is most likely because downstream can't keep up and is consuming samples too slowly.
0:00:30.561856685 53501 0x7f5db4003360 WARN audiobasesrc gstaudiobasesrc.c:838:gst_audio_base_src_create:<pulsesrc0> create DISCONT of 6160 samples at sample 38320
The upstream side:
ctx->generator_pipe = gst_parse_launch
("v4l2src device=/dev/video2 ! "
"video/x-h264,width=1920,height=1080,framerate=30/1 ! "
"h264parse ! appsink name=vid max-buffers=16 drop=true "
// works "audiotestsrc is-live=true ! appsink name=aud max-buffers=32 drop=true",
// stutters "pulsesrc device=2 ! appsink name=aud max-buffers=32 drop=true",
"pulsesrc device=2 ! appsink name=aud max-buffers=32 drop=true",
NULL);
The downstream side
gst_rtsp_media_factory_set_launch (factory,
"( appsrc name=videosrc ! h264parse ! rtph264pay name=pay0 pt=96 "
" appsrc name=audiosrc ! audioconvert ! rtpL24pay name=pay1 pt=97 )");
With these caps
caps = gst_caps_new_simple ("audio/x-raw", "format", G_TYPE_STRING, "S24BE",
"layout", G_TYPE_STRING, "interleaved", "rate", G_TYPE_INT, 8000,
^^^^^ I've tried 8000 to 48000
"channels", G_TYPE_INT, 2, NULL);
ctx->aud_appsrc = appsrc =
gst_bin_get_by_name_recurse_up (GST_BIN (element), "audiosrc");
ctx->aud_appsink = appsink =
gst_bin_get_by_name (GST_BIN (ctx->generator_pipe), "aud");
gst_util_set_object_arg (G_OBJECT (appsrc), "format", "time");
g_object_set (G_OBJECT (appsrc), "caps", caps, NULL);
g_object_set (G_OBJECT (appsink), "caps", caps, NULL);
g_signal_connect (appsrc, "need-data", (GCallback) need_data, ctx);
gst_caps_unref (caps);
More information about the gstreamer-devel
mailing list