Splitmuxsrc, Multiple Audio Tracks, and Seeking

I am using splitmuxsink to MKV, and then playing that using uridecodebin3 using splitmux:// uri. I’m muxing 8 stereo channels along with one video.

If I only use one video and one of the audio channels, things seem to work ok. However, when I play all tracks, the playback always fails at some point. A surefire way for it to fail is attempting to seek forward. Usually, parts that have already played can be seeked.

I am using an audiomixer to mix each stereo track into a 16-channel output for a Decklink card.

Using Debian Trixie using Gstreamer 1.24.10, but I’ve seen it on at least 1.24.8 and .9.

Here’s what I’m doing:

# This will work and play the entire splitmux ok
gst-launch-1.0 uridecodebin3 uri="splitmux://video/video*.ts" name="dbin" ! queue ! videoconvert ! videoscale ! videorate ! video/x-raw,width=1920,height=1080,framerate=60000/1001 ! multiqueue name="sinkmq" max-size-time=3000000000 sinkmq. ! decklinkvideosink name="dl-vsink0"   device-number=0   mode=1080p5994   mapping-format=default   sync=true dbin. ! multiqueue   name="audiomq" audiomq. ! audioconvert mix-matrix="<<(float)1,(float)0>,<(float)0,(float)1>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>>" ! audiomixer name=m ! level interval=200000000 ! sinkmq. sinkmq. ! decklinkaudiosink    name="dl-asink0"    buffer-time=50000    device-number=0    sync=true

# Other audio channels will start playing ok, but will eventually fail
# (of course, this won't play from cli due to stream selection, which I am doing in code -- note that a non-splitmux file works fine with the same exact pipeline, minux the splitmux, obviously)
gst-launch-1.0 uridecodebin3 uri="splitmux://video/video*.mkv" name="dbin" ! queue ! videoconvert ! videoscale ! videorate ! video/x-raw,width=1920,height=1080,framerate=60000/1001 ! multiqueue name="sinkmq" max-size-time=3000000000 sinkmq. ! decklinkvideosink name="dl-vsink0"   device-number=0   mode=1080p5994   mapping-format=default   sync=true dbin. ! multiqueue   name="audiomq" audiomq. ! audioconvert mix-matrix="<<(float)1,(float)0>,<(float)0,(float)1>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>>" ! audiomixer name=m ! sinkmq. sinkmq. ! decklinkaudiosink    name="dl-asink0"    buffer-time=50000    device-number=0    sync=true dbin. ! audiomq. audiomq. ! audioconvert mix-matrix="<<(float)0,(float)0>,<(float)0,(float)0>,<(float)1,(float)0>,<(float)0,(float)1>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>>" ! m. dbin. ! audiomq. audiomq. ! audioconvert mix-matrix="<<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)1,(float)0>,<(float)0,(float)1>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>>" ! m. dbin. ! audiomq. audiomq. ! audioconvert mix-matrix="<<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)1,(float)0>,<(float)0,(float)1>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>>" ! m. dbin. ! audiomq. audiomq. ! audioconvert mix-matrix="<<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)1,(float)0>,<(float)0,(float)1>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>>" ! m. dbin. ! audiomq. audiomq. ! audioconvert mix-matrix="<<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)1,(float)0>,<(float)0,(float)1>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>>" ! m. dbin. ! audiomq. audiomq. ! audioconvert mix-matrix="<<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)1,(float)0>,<(float)0,(float)1>,<(float)0,(float)0>,<(float)0,(float)0>>" ! m. dbin. ! audiomq. audiomq. ! audioconvert mix-matrix="<<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)0,(float)0>,<(float)1,(float)0>,<(float)0,(float)1>>" ! m.

Any light anyone can shed on how I can fix this or even alternate methods to do the same thing (split file recording) that might work, I’d love to know.