owncloud / music

:notes: Music app for ownCloud
GNU Affero General Public License v3.0
563 stars 197 forks source link

Seeking through GStreamer is not working with Subsonic API #1160

Closed jonaski closed 2 weeks ago

jonaski commented 1 month ago

I'm not able find any information if seeking is supported, but gst_element_seek_simple returns false https://gstreamer.freedesktop.org/documentation/gstreamer/gstelement.html?gi-language=c#gst_element_seek_simple

Debug log:

20:45:02.415 DEBUG GstEnginePipeline:1718           Seeking to 76000000000
0:00:05.255567886 224118     0x179016a0 INFO               GST_EVENT gstevent.c:1389:gst_event_new_seek: creating seek rate 1,000000, format TIME, flags 1, start_type 1, start 0:01:16.000000000, stop_type 1, stop 99:99:99.999999999
0:00:05.255641048 224118     0x179016a0 DEBUG              GST_EVENT gstevent.c:337:gst_event_new_custom: creating new event 0x1a15e720 seek 51201
0:00:05.255672001 224118     0x179016a0 DEBUG       GST_ELEMENT_PADS gstelement.c:1992:gst_element_send_event: send seek event on element pipeline-1-pipeline
0:00:05.255694809 224118     0x179016a0 DEBUG       GST_ELEMENT_PADS gstelement.c:1992:gst_element_send_event: send seek event on element playsink
0:00:05.255714200 224118     0x179016a0 DEBUG               playsink gstplaysink.c:4934:gst_play_sink_send_event:<playsink> Sending event to a sink
0:00:05.255735993 224118     0x179016a0 DEBUG       GST_ELEMENT_PADS gstelement.c:1992:gst_element_send_event: send seek event on element abin
0:00:05.255784801 224118     0x179016a0 DEBUG                    bin gstbin.c:3126:gst_bin_send_event:<abin> Sending seek event to sink children
0:00:05.255809275 224118     0x179016a0 DEBUG             GST_STATES gstbin.c:1957:bin_element_is_sink:<abin> child aconv is not sink
0:00:05.255830847 224118     0x179016a0 DEBUG             GST_STATES gstbin.c:1957:bin_element_is_sink:<abin> child aqueue is not sink
0:00:05.255851844 224118     0x179016a0 DEBUG             GST_STATES gstbin.c:1957:bin_element_is_sink:<abin> child audiobin is sink
0:00:05.255873186 224118     0x179016a0 DEBUG       GST_ELEMENT_PADS gstelement.c:1992:gst_element_send_event: send seek event on element audiobin
0:00:05.255894003 224118     0x179016a0 DEBUG                    bin gstbin.c:3126:gst_bin_send_event:<audiobin> Sending seek event to sink children
0:00:05.255915261 224118     0x179016a0 DEBUG             GST_STATES gstbin.c:1957:bin_element_is_sink:<audiobin> child capsfilter0 is not sink
0:00:05.255935637 224118     0x179016a0 DEBUG             GST_STATES gstbin.c:1957:bin_element_is_sink:<audiobin> child pipeline-1-volume_sw is not sink
0:00:05.255955654 224118     0x179016a0 DEBUG             GST_STATES gstbin.c:1957:bin_element_is_sink:<audiobin> child pipeline-1-audiosinkconverter is not sink
0:00:05.255975390 224118     0x179016a0 DEBUG             GST_STATES gstbin.c:1957:bin_element_is_sink:<audiobin> child pipeline-1-audioqueueconverter is not sink
0:00:05.255996327 224118     0x179016a0 DEBUG             GST_STATES gstbin.c:1957:bin_element_is_sink:<audiobin> child pipeline-1-audioqueue is not sink
0:00:05.256016264 224118     0x179016a0 DEBUG             GST_STATES gstbin.c:1957:bin_element_is_sink:<audiobin> child pipeline-1-alsasink is sink
0:00:05.256037536 224118     0x179016a0 DEBUG       GST_ELEMENT_PADS gstelement.c:1992:gst_element_send_event: send seek event on element pipeline-1-alsasink
0:00:05.256107486 224118     0x179016a0 DEBUG               basesink gstbasesink.c:4998:gst_base_sink_send_event:<pipeline-1-alsasink> handling event 0x1a15e720 seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.256161067 224118     0x179016a0 DEBUG               basesink gstbasesink.c:5049:gst_base_sink_send_event:<pipeline-1-alsasink> sending event 0x1a15e720 seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.256211616 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<capsfilter0:src> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.256259324 224118     0x179016a0 DEBUG          basetransform gstbasetransform.c:2003:gst_base_transform_src_eventfunc:<capsfilter0> handling event 0x1a15e720 seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.256323851 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<pipeline-1-audiosinkconverter:src> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.256377246 224118     0x179016a0 DEBUG          basetransform gstbasetransform.c:2003:gst_base_transform_src_eventfunc:<pipeline-1-audiosinkconverter> handling event 0x1a15e720 seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.256425529 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<pipeline-1-volume_sw:src> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.256473202 224118     0x179016a0 DEBUG          basetransform gstbasetransform.c:2003:gst_base_transform_src_eventfunc:<pipeline-1-volume_sw> handling event 0x1a15e720 seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.256521554 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<pipeline-1-audioqueueconverter:src> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.256554558 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:3966:do_probe_callbacks:<pipeline-1-audioqueueconverter:src> data is passed
20:45:02.417 DEBUG GstEnginePipeline:909            1 event seek
0:00:05.256698576 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:3744:probe_hook_marshal:<pipeline-1-audioqueueconverter:src> probe returned OK
0:00:05.256753648 224118     0x179016a0 DEBUG          basetransform gstbasetransform.c:2003:gst_base_transform_src_eventfunc:<pipeline-1-audioqueueconverter> handling event 0x1a15e720 seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.256802636 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<pipeline-1-audioqueue:src> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.256851519 224118     0x179016a0 DEBUG        queue2_dataflow gstqueue2.c:3268:gst_queue2_handle_src_event:<pipeline-1-audioqueue> got event 0x1a15e720 (seek)
0:00:05.256890747 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<sink:proxypad1> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.256946444 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<aconv:src> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257033009 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<resample:src> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257083458 224118     0x179016a0 DEBUG          basetransform gstbasetransform.c:2003:gst_base_transform_src_eventfunc:<resample> handling event 0x1a15e720 seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257129639 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<conv:src> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257176486 224118     0x179016a0 DEBUG          basetransform gstbasetransform.c:2003:gst_base_transform_src_eventfunc:<conv> handling event 0x1a15e720 seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257227521 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<sink:proxypad11> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257276769 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<aqueue:src> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257312159 224118     0x179016a0 DEBUG         queue_dataflow gstqueue.c:1631:gst_queue_handle_src_event:<aqueue> got event 0x1a15e720 (51201)
0:00:05.257343832 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:2999:gst_pad_iterate_internal_links_default:<aqueue:src> Making iterator
0:00:05.257384611 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<sink:proxypad13> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257434980 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<streamsynchronizer0:src_0> have event type seek event: 0x1a15e720, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257477094 224118     0x179016a0 DEBUG        GST_PERFORMANCE gstminiobject.c:440:gst_mini_object_make_writable: copy GstEvent miniobject 0x1a15e720 -> 0x18ff8620
0:00:05.257522905 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<audiotee:src_0> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257561162 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:2999:gst_pad_iterate_internal_links_default:<audiotee:src_0> Making iterator
0:00:05.257596743 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<audio_sink:proxypad8> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257646777 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<uridecodebin3:audio_0> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257676484 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:3966:do_probe_callbacks:<uridecodebin3:audio_0> data is passed
0:00:05.257713730 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<decodebin3-0:audio_0> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257744733 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:3966:do_probe_callbacks:<decodebin3-0:audio_0> data is passed
0:00:05.257765970 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:3966:do_probe_callbacks:<audio_0:proxypad9> data is passed
0:00:05.257787843 224118     0x179016a0 DEBUG             decodebin3 gstdecodebin3.c:4498:ghost_pad_event_probe:<audio_0:proxypad9> Got event 0x18ff8620 seek
0:00:05.257817180 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:3744:probe_hook_marshal:<audio_0:proxypad9> probe returned OK
0:00:05.257853951 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<flacdec1:src> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257889236 224118     0x179016a0 DEBUG           audiodecoder gstaudiodecoder.c:2729:gst_audio_decoder_src_event:<flacdec1> received event 51201, seek
0:00:05.257927593 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<multiqueue0:src_0> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.257958406 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:3966:do_probe_callbacks:<multiqueue0:src_0> data is passed
0:00:05.257996378 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<identity0:src> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.258018871 224118 0x7f6c1803b5e0 DEBUG                   alsa gstalsasink.c:1126:gst_alsasink_write:<pipeline-1-alsasink> written 441 frames out of 441
0:00:05.258079496 224118 0x7f6c1803b5e0 DEBUG             ringbuffer gstaudioringbuffer.c:2045:gst_audio_ring_buffer_advance:<audiosinkringbuffer0> signal waiter
0:00:05.258026325 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:3966:do_probe_callbacks:<identity0:src> data is passed
0:00:05.258150481 224118 0x7f6cc8002460 DEBUG             ringbuffer gstaudioringbuffer.c:1682:default_commit:<audiosinkringbuffer0> pointer at 113, write to 132-0, diff 19, segtotal 20, segsize 3528, base 0
0:00:05.258212882 224118 0x7f6cc8002460 DEBUG             ringbuffer gstaudioringbuffer.c:1713:default_commit:<audiosinkringbuffer0> write @0x7f6c14013ef0 seg 12, sps 441, off 0, avail 3528
0:00:05.258176026 224118     0x179016a0 DEBUG          basetransform gstbasetransform.c:2003:gst_base_transform_src_eventfunc:<identity0> handling event 0x18ff8620 seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.258296065 224118 0x7f6cc8002460 DEBUG             ringbuffer gstaudioringbuffer.c:1740:default_commit: copy 3528 bytes
0:00:05.258337439 224118 0x7f6cc8002460 DEBUG             ringbuffer gstaudioringbuffer.c:1682:default_commit:<audiosinkringbuffer0> pointer at 113, write to 133-0, diff 20, segtotal 20, segsize 3528, base 0
0:00:05.258356470 224118 0x7f6cc8002460 DEBUG             ringbuffer gstaudioringbuffer.c:1473:wait_segment:<audiosinkringbuffer0> waiting..
0:00:05.258305701 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<sink:proxypad0> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.258576086 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<urisourcebin0:src_0> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.258616054 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:3966:do_probe_callbacks:<urisourcebin0:src_0> data is passed
0:00:05.258664047 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<multiqueue1:src_0> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.258719098 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<parsebin0:src_0> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.258751077 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:3966:do_probe_callbacks:<parsebin0:src_0> data is passed
0:00:05.258773355 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:3966:do_probe_callbacks:<src_0:proxypad4> data is passed
0:00:05.258809871 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<flacparse0:src> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.258845656 224118     0x179016a0 DEBUG              baseparse gstbaseparse.c:1705:gst_base_parse_src_event:<flacparse0> event 51201, seek
0:00:05.258883573 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<typefind:src> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.258930545 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<sink:proxypad3> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.258981870 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<typefindelement1:src> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.259051940 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<souphttpsrc0:src> have event type seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.259100998 224118     0x179016a0 DEBUG                basesrc gstbasesrc.c:2126:gst_base_src_default_event:<souphttpsrc0> handle event seek event: 0x18ff8620, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)time, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)76000000000, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.259131971 224118     0x179016a0 DEBUG                basesrc gstbasesrc.c:2170:gst_base_src_default_event:<souphttpsrc0> is not seekable
0:00:05.259149701 224118     0x179016a0 DEBUG                basesrc gstbasesrc.c:2198:gst_base_src_event:<souphttpsrc0> subclass refused event
0:00:05.259170553 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<souphttpsrc0:src> sent event, ret error
0:00:05.259189419 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<typefindelement1:src> sent event, ret error
0:00:05.259210751 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<sink:proxypad3> sent event, ret error
0:00:05.259229152 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<typefind:src> sent event, ret error
0:00:05.259272367 224118     0x179016a0 DEBUG              baseparse gstbaseparse.c:4628:gst_base_parse_handle_seek:<flacparse0> seek to format time, rate 1,000000, start type 1 at 0:01:16.000000000, end type 1 at 99:99:99.999999999
0:00:05.259299497 224118     0x179016a0 DEBUG              baseparse gstbaseparse.c:4665:gst_base_parse_handle_seek:<flacparse0> configuring seek
0:00:05.259333337 224118     0x179016a0 INFO                 default gstsegment.c:386:gst_segment_do_seek: segment updated: time segment start=0:01:16.000000000, offset=0:00:00.000000000, stop=99:99:99.999999999, rate=1,000000, applied_rate=1,000000, flags=0x01, time=0:01:16.000000000, base=0:00:00.000000000, position 0:01:16.000000000, duration 99:99:99.999999999
0:00:05.259371794 224118     0x179016a0 DEBUG              baseparse gstbaseparse.c:4585:gst_base_parse_find_offset:<flacparse0> no index entry found for 0:01:16.000000000
0:00:05.259397469 224118     0x179016a0 DEBUG              baseparse gstbaseparse.c:1818:gst_base_parse_convert_default:<flacparse0> converting time -> bytes
0:00:05.259422188 224118     0x179016a0 DEBUG              baseparse gstbaseparse.c:1820:gst_base_parse_convert_default:<flacparse0> converted 0:01:16.000000000 to 7491954 bytes
0:00:05.259443780 224118     0x179016a0 DEBUG              baseparse gstbaseparse.c:4716:gst_base_parse_handle_seek:<flacparse0> seek position 76000000000 in bytes: 7491954
0:00:05.259463682 224118     0x179016a0 DEBUG              baseparse gstbaseparse.c:4719:gst_base_parse_handle_seek:<flacparse0> seek stop -1 in bytes: -1
0:00:05.259491748 224118     0x179016a0 DEBUG              baseparse gstbaseparse.c:4830:gst_base_parse_handle_seek:<flacparse0> seek in PUSH mode
0:00:05.259521445 224118     0x179016a0 INFO               GST_EVENT gstevent.c:1396:gst_event_new_seek: creating seek rate 1,000000, format bytes, flags 1, start_type 1, start 7491954, stop_type 1, stop -1
0:00:05.259551012 224118     0x179016a0 DEBUG              GST_EVENT gstevent.c:337:gst_event_new_custom: creating new event 0x1b1310d0 seek 51201
0:00:05.259597369 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<typefind:src> have event type seek event: 0x1b1310d0, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)bytes, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)7491954, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.259648583 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<sink:proxypad3> have event type seek event: 0x1b1310d0, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)bytes, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)7491954, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.259700798 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<typefindelement1:src> have event type seek event: 0x1b1310d0, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)bytes, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)7491954, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.259748230 224118     0x179016a0 DEBUG              GST_EVENT gstpad.c:5892:gst_pad_send_event_unchecked:<souphttpsrc0:src> have event type seek event: 0x1b1310d0, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)bytes, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)7491954, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.259794762 224118     0x179016a0 DEBUG                basesrc gstbasesrc.c:2126:gst_base_src_default_event:<souphttpsrc0> handle event seek event: 0x1b1310d0, time 99:99:99.999999999, seq-num 565, GstEventSeek, rate=(double)1, format=(GstFormat)bytes, flags=(GstSeekFlags)GST_SEEK_FLAG_FLUSH, cur-type=(GstSeekType)set, cur=(gint64)7491954, stop-type=(GstSeekType)set, stop=(gint64)-1, trickmode-interval=(guint64)0;
0:00:05.259825900 224118     0x179016a0 DEBUG                basesrc gstbasesrc.c:2170:gst_base_src_default_event:<souphttpsrc0> is not seekable
0:00:05.259844056 224118     0x179016a0 DEBUG                basesrc gstbasesrc.c:2198:gst_base_src_event:<souphttpsrc0> subclass refused event
0:00:05.259864062 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<souphttpsrc0:src> sent event, ret error
0:00:05.259882798 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<typefindelement1:src> sent event, ret error
0:00:05.259904871 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<sink:proxypad3> sent event, ret error
0:00:05.259923406 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<typefind:src> sent event, ret error
0:00:05.259954624 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<flacparse0:src> sent event, ret error
0:00:05.259977537 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<parsebin0:src_0> sent event, ret error
0:00:05.259996228 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<multiqueue1:src_0> sent event, ret error
0:00:05.260015289 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<urisourcebin0:src_0> sent event, ret error
0:00:05.260036211 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<sink:proxypad0> sent event, ret error
0:00:05.260056158 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<identity0:src> sent event, ret error
0:00:05.260074698 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<multiqueue0:src_0> sent event, ret error
0:00:05.260093789 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<flacdec1:src> sent event, ret error
0:00:05.260113320 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<decodebin3-0:audio_0> sent event, ret error
0:00:05.260134453 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<uridecodebin3:audio_0> sent event, ret error
0:00:05.260154949 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<audio_sink:proxypad8> sent event, ret error
0:00:05.260174471 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<audiotee:src_0> sent event, ret error
0:00:05.260196388 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<streamsynchronizer0:src_0> sent event, ret error
0:00:05.260216035 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<sink:proxypad13> sent event, ret error
0:00:05.260235531 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<aqueue:src> sent event, ret error
0:00:05.260255142 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<sink:proxypad11> sent event, ret error
0:00:05.260274428 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<conv:src> sent event, ret error
0:00:05.260293079 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<resample:src> sent event, ret error
0:00:05.260347125 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<aconv:src> sent event, ret error
0:00:05.260366671 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<sink:proxypad1> sent event, ret error
0:00:05.260386137 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<pipeline-1-audioqueue:src> sent event, ret error
0:00:05.260405068 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<pipeline-1-audioqueueconverter:src> sent event, ret error
0:00:05.260434180 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<pipeline-1-volume_sw:src> sent event, ret error
0:00:05.260453181 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<pipeline-1-audiosinkconverter:src> sent event, ret error
0:00:05.260473543 224118     0x179016a0 DEBUG               GST_PADS gstpad.c:5986:gst_pad_send_event_unchecked:<capsfilter0:src> sent event, ret error
0:00:05.260493709 224118     0x179016a0 DEBUG               basesink gstbasesink.c:5137:gst_base_sink_send_event:<pipeline-1-alsasink> handled event: 0
0:00:05.260519414 224118     0x179016a0 DEBUG                    bin gstbin.c:3166:gst_bin_send_event:<audiobin> Sending seek event to src pads
0:00:05.260543443 224118     0x179016a0 DEBUG                    bin gstbin.c:3166:gst_bin_send_event:<abin> Sending seek event to src pads
0:00:05.260563194 224118     0x179016a0 DEBUG               playsink gstplaysink.c:4907:gst_play_sink_send_event_to_sink:<playsink> Event failed when sent to audio sink
0:00:05.267942387 224118 0x7f6c1803b5e0 DEBUG                   alsa gstalsasink.c:1126:gst_alsasink_write:<pipeline-1-alsasink> written 441 frames out of 441
0:00:05.267961440 224118 0x7f6c1803b5e0 DEBUG             ringbuffer gstaudioringbuffer.c:2045:gst_audio_ring_buffer_advance:<audiosinkringbuffer0> signal waiter
0:00:05.267980273 224118 0x7f6cc8002460 DEBUG             ringbuffer gstaudioringbuffer.c:1682:default_commit:<audiosinkringbuffer0> pointer at 114, write to 133-0, diff 19, segtotal 20, segsize 3528, base 0
0:00:05.267990320 224118 0x7f6cc8002460 DEBUG             ringbuffer gstaudioringbuffer.c:1713:default_commit:<audiosinkringbuffer0> write @0x7f6c14014cb8 seg 13, sps 441, off 0, avail 3528
0:00:05.267996540 224118 0x7f6cc8002460 DEBUG             ringbuffer gstaudioringbuffer.c:1740:default_commit: copy 3528 bytes
0:00:05.268005788 224118 0x7f6cc8002460 DEBUG             ringbuffer gstaudioringbuffer.c:1682:default_commit:<audiosinkringbuffer0> pointer at 114, write to 134-0, diff 20, segtotal 20, segsize 3528, base 0
0:00:05.268010774 224118 0x7f6cc8002460 DEBUG             ringbuffer gstaudioringbuffer.c:1473:wait_segment:<audiosinkringbuffer0> waiting..
paulijar commented 1 month ago

That's a lot of client-side log and I don't know what I should be looking at. Can you tell, what kind of requests are sent to the server and what kind or responses the client gets?

Did I understand correctly that this GStreamer is the underlying framework used by Strawberry Music Player to connect to the Subsonic backend?

I tested Strawberry Music Player 0.9.3 on Windows and 1.1.0 on Ubuntu, and for me, the seeking was working fine. However, it's possible to set up Nextcloud with many kinds of external data storages, and it's possible that not all of those support the fseek function which would be needed to properly serve the HTTP range requests (assuming those are used here by the client).

jonaski commented 1 month ago

Seeking also fails with gst-play-1.0, so this is either a GStreamer bug or a server issue, but since it works with VLC I've reported this issue to GStreamer here: https://gitlab.freedesktop.org/gstreamer/gstreamer/-/issues/3700

jonaski commented 1 month ago

The HTTP is response is missing Content-Length header which is why seeking is not possible with GStreamer.

paulijar commented 2 weeks ago

As stated in the linked issue https://github.com/strawberrymusicplayer/strawberry/issues/1474, the Nextcloud Music actually does set the Content-Length to the response but for some reason, it is missing on the responses on the system of the original reporter of the problem. It remains a mystery, who/what actually maims the HTTP headers on that system but it seems clear that this is not a bug in the Music app.