Using splitmuxsink with imxv4l2sink

I am trying to display and record at the same time after capturing a video from usb camera. I have trouble in displaying video on screen when I use splitmuxsink. When I use multifilesink instead of splitmuxsink, I can get video on screen. As you see the below, when I use splitmuxsink, I don’t see “v4l2sink need allocate 3 buffers.”.

Am I using splitmuxsink wrong?
Please refer to the below.
Thank you

root@apalis-imx6:~# uname -a
Linux apalis-imx6 4.1.44-2.7.4+gb1555bf #1 SMP Wed Oct 4 22:39:51 UTC 2017 armv7l GNU/Linux

root@apalis-imx6:~# gst-launch-1.0 imxv4l2src device=/dev/video1 ! capsfilter caps="video/x-raw,width=1920, height=1080, framerate=30/1" ! tee name=t ! queue ! imxv4l2sink sync=false t. ! queue ! vpuenc_h264 ! multifilesink location=/media/sda1/%d.264 next-file=5 max-file-duration=60000000000 sync=false

[   23.745257] ERROR: v4l2 capture: slave not found! V4L2_CID_HUE
[   24.392659] ov5640_set_virtual_channel: virtual channel=1
[   24.937070] ERROR: v4l2 capture: slave not found! V4L2_CID_HUE
====== IMXV4L2SRC: 4.1.4 build on Oct  4 2017 23:03:28. ======
====== IMXV4L2SINK: 4.1.4 build on Oct  4 2017 23:03:28. ======
Setting pipeline to PAUSED ...
display(/dev/fb0) resolution is (640x480).
[INFO]  Product Info: i.MX6Q/D/S
====== VPUENC: 4.1.4 build on Oct  4 2017 23:03:36. ======
        wrapper: 1.0.68 (VPUWRAPPER_ARM_LINUX Build on Oct  4 2017 22:43:46)
        vpulib: 5.4.35
        firmware: 3.1.1.46072
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
[   25.285041] ov5640_set_virtual_channel: virtual channel=1
[INFO]  ringBufferEnable 0, chromaInterleave 0, mapType 0, linear2TiledEnable 0
v4l2sink need allocate 3 buffers.

root@apalis-imx6:~# gst-launch-1.0 imxv4l2src device=/dev/video1 ! capsfilter caps="video/x-raw,width=1920, height=1080, framerate=30/1" ! tee name=t ! queue ! imxv4l2sink sync=false t. ! queue ! vpuenc_h264 ! splitmuxsink location=/media/sda1/%d.264 max-size-time=60000000000 sync=false
                              
[   95.743239] ERROR: v4l2 capture: slave not found! V4L2_CID_HUE
[   96.385911] ov5640_set_virtual_channel: virtual channel=1
[   96.909589] ERROR: v4l2 capture: slave not found! V4L2_CID_HUE
====== IMXV4L2SRC: 4.1.4 build on Oct  4 2017 23:03:28. ======
====== IMXV4L2SINK: 4.1.4 build on Oct  4 2017 23:03:28. ======
Setting pipeline to PAUSED ...
display(/dev/fb0) resolution is (640x480).
[INFO]  Product Info: i.MX6Q/D/S
====== VPUENC: 4.1.4 build on Oct  4 2017 23:03:36. ======
        wrapper: 1.0.68 (VPUWRAPPER_ARM_LINUX Build on Oct  4 2017 22:43:46)
        vpulib: 5.4.35
        firmware: 3.1.1.46072
Pipeline is live and does not need PREROLL ...
Setting pipeline to PLAYING ...
New clock: GstSystemClock
[   97.297284] ov5640_set_virtual_channel: virtual channel=1
[INFO]  ringBufferEnable 0, chromaInterleave 0, mapType 0, linear2TiledEnable 0

hi @Yoontaek

What is your issue? Why cannot you use multifilesink?

I tried your both commands, I got the following message:

WARNING: erroneous pipeline: could not link imxv4l2src1 to capsfilter0

Could you Flash the Bsp 2.8b4 and try out the command?

Additionally you could also use qtmux and transfer your video to display as described here.

I saw you asked also the same question in the NXP community. Did the answer help you?

Best regards, Jaski

I have looked into it for a while.
I figured out I had to add “async=false” for v4l2src.
Thank you.

Could you share the complete working command? This will be helpful.