What's an exact version of Gstreamer that works with the on-board camera?

Update: The simple Gstreamer pipeline works after restarting the Jetson.
Unfortunately I’m not sure which combination of changes made it work. It could have been the restart itself, or the restart combined with a subset of the newly installed packages.

For a list of the newly installed packages see this post:
https://devtalk.nvidia.com/default/topic/978112/jetson-tx1/whats-an-exact-version-of-gstreamer-that-works-with-the-on-board-camera-/post/5024175/#5024175


Old:

Hello, I think I broke my Gstreamer.

My plan:
To reinstall Gstreamer.

My question:
Which version?
There’s a long list even for Gstreamer 1.0.X:
https://gstreamer.freedesktop.org/src/gstreamer/

Background:

  • Gstreamer was working with the on-board camera
  • But then, I experimented with different OpenCV install procedures
  • And then, Gstreamer stopped working with the on-board camera (this is a correlation, but I’m not sure it’s causal)

Debug information:
This command,

gst-launch-1.0 nvcamerasrc ! ‘video/x-raw(memory:NVMM), width=(int)1920, height=(int)1080, format=(string)I420, framerate=(fraction)30/1’ ! nvtee ! nvoverlaysink -e

yields:

[i]0:00:00.038626120
15239
0x516590
WARN
omx gstomx.c:2839:plugin_init:
Failed to load configuration file:
Valid key file could not be found in search dirs
(searched in:
/home/ubuntu/.config:
/etc/xdg/xdg-ubuntu:
/usr/share/upstart/xdg:
/etc/xdg
as per GST_OMX_CONFIG_DIR environment variable,
the xdg user config directory (or XDG_CONFIG_HOME)
and the system config directory (or XDG_CONFIG_DIRS)

Setting pipeline to PAUSED …

Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB
and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB
and Mjstreaming[/i]

Notes:

  • No overlay appears. I sent a keyboard interrupt to stop the process.
  • I formatted the log with newlines.
  • I used export GST_DEBUG=3 to view the WARN message.
  • The command,
    sudo find / -name “gstomx
    yields:
    ./usr/lib/aarch64-linux-gnu/gstreamer-1.0/libgstomx.so
    but not “gstomx.c” or anything else.
  • cat /var/log/syslog | grep gst” yields nothing recent.
  • VLC isn’t working either (I’m not sure it ever did): “Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingBus error”
  • Totem isn’t working either (I’m not sure it every did) (posted long debug info in a reply) (update: totem works after installing gstreamer1.0-libav, but VLC and the simple Gstreamer pipeline still don’t work)

Threads I’ve looked through:
https://devtalk.nvidia.com/default/topic/927182/camera-dpb-and-mjstreamingsocket-read-error/
https://devtalk.nvidia.com/default/topic/907780/jetson-tx1/-python-how-to-use-tx1-camera-with-opencv/
https://devtalk.nvidia.com/default/topic/943129/jetson-tx1/highgui-error-v4l-v4l2-while-opening-camera-with-opencv4tegra-l4t-r24/1
https://devtalk.nvidia.com/default/topic/904949/how-to-get-tx1-camera-in-opencv/
https://devtalk.nvidia.com/default/topic/911535/gstreamer-nvvidconv-plugin-not-working/
https://devtalk.nvidia.com/default/topic/857482/gstreamer-1-0-playbin-can-t-show-video/
https://devtalk.nvidia.com/default/topic/793296/gstreamer-h-263-problem/

Bonus questions:

  1. How could I have answered my question without creating a thread? (e.g. How did you find the answer to my question?)
  2. Can you think of a better plan than reinstalling Gstreamer? (e.g. Maybe targeting the “Failed to load configuration file” problem more directly)

I don’t know that this is official, but Gstreamer 1.8.2 is running correctly on my stock TX-1 flashed from Jetpack 2.3 yesterday.

Debug information from totem:

ubuntu@mwk-jetson:~/Downloads$ totem sample.mp4
0:00:00.427872479 21393 0x558c8c7290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:00.428179559 21393 0x558c8c7290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:00.531814336 21393 0x558c8c7290 WARN basesrc gstbasesrc.c:3489:gst_base_src_start_complete: pad not activated yet
0:00:00.532900784 21393 0x558c8c7290 WARN basesrc gstbasesrc.c:3489:gst_base_src_start_complete: pad not activated yet
0:00:00.533871505 21393 0x558c8c7290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:00.533954838 21393 0x558c8c7290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:00.536981739 21393 0x558c8c7290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:00.537066009 21393 0x558c8c7290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:00.584623200 21393 0x7f48043d40 WARN qtdemux qtdemux_types.c:222:qtdemux_type_get: unknown QuickTime node type iods
0:00:00.584814552 21393 0x7f48043d40 WARN qtdemux qtdemux.c:2642:qtdemux_parse_trex: failed to find fragment defaults for stream 1
0:00:00.584973196 21393 0x7f48043d40 WARN qtdemux qtdemux.c:2642:qtdemux_parse_trex: failed to find fragment defaults for stream 2
0:00:00.586200634 21393 0x7f48043d40 WARN basesrc gstbasesrc.c:2396:gst_base_src_update_length: processing at or past EOS
0:00:00.588003587 21393 0x7f48043d40 WARN uridecodebin gsturidecodebin.c:939:unknown_type_cb: warning: No decoder available for type ‘video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)2.1, profile=(string)constrained-baseline, codec_data=(buffer)0142c015ffe100176742c015da0200979e4c04400000fa40002ee003c58ba801000468ce3c80, max-input-size=(int)22561, width=(int)500, height=(int)282, framerate=(fraction)24000/1001, pixel-aspect-ratio=(fraction)1/1’.
0:00:00.595908674 21393 0x7f400049e0 WARN uridecodebin gsturidecodebin.c:939:unknown_type_cb: warning: No decoder available for type ‘audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)2, base-profile=(string)lc, profile=(string)lc, codec_data=(buffer)12100000000000000000000000000000, max-input-size=(int)446, rate=(int)44100, channels=(int)2’.
0:00:00.596484138 21393 0x7f400049e0 WARN decodebin gstdecodebin2.c:4565:gst_decode_bin_expose: error: no suitable plugins found:
Missing decoder: MPEG-4 AAC (audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)2, base-profile=(string)lc, profile=(string)lc, codec_data=(buffer)12100000000000000000000000000000, max-input-size=(int)446, rate=(int)44100, channels=(int)2)
Missing decoder: H.264 (Constrained Baseline Profile) (video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)2.1, profile=(string)constrained-baseline, codec_data=(buffer)0142c015ffe100176742c015da0200979e4c04400000fa40002ee003c58ba801000468ce3c80, max-input-size=(int)22561, width=(int)500, height=(int)282, framerate=(fraction)24000/1001, pixel-aspect-ratio=(fraction)1/1)

0:00:00.597210903 21393 0x7f400049e0 WARN uridecodebin gsturidecodebin.c:1006:no_more_pads_full: error: no suitable plugins found:
gstdecodebin2.c(4565): gst_decode_bin_expose (): /GstPlayBin:play/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
no suitable plugins found:
Missing decoder: MPEG-4 AAC (audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)2, base-profile=(string)lc, profile=(string)lc, codec_data=(buffer)12100000000000000000000000000000, max-input-size=(int)446, rate=(int)44100, channels=(int)2)
Missing decoder: H.264 (Constrained Baseline Profile) (video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)2.1, profile=(string)constrained-baseline, codec_data=(buffer)0142c015ffe100176742c015da0200979e4c04400000fa40002ee003c58ba801000468ce3c80, max-input-size=(int)22561, width=(int)500, height=(int)282, framerate=(fraction)24000/1001, pixel-aspect-ratio=(fraction)1/1)

0:00:00.598554068 21393 0x7f48043d40 WARN qtdemux qtdemux.c:5423:gst_qtdemux_loop: error: streaming stopped, reason not-linked
0:00:00.602509919 21393 0x558c8c7290 WARN structure gststructure.c:1935:priv_gst_structure_append_to_gstring: No value transform to serialize field ‘gerror’ of type ‘GError’
0:00:00.602486690 21393 0x558c8c7290 WARN totem bacon-video-widget.c:2375:bvw_bus_message_cb: Warning message: warning message: 0x7f40002510, time 99:99:99.999999999, seq-num 68, element ‘uridecodebin0’, GstMessageWarning, gerror=(GError)NULL, debug=(string)“gsturidecodebin.c(939):\ unknown_type_cb\ ():\ /GstPlayBin:play/GstURIDecodeBin:uridecodebin0”;
0:00:00.602743146 21393 0x558c8c7290 WARN structure gststructure.c:1935:priv_gst_structure_append_to_gstring: No value transform to serialize field ‘gerror’ of type ‘GError’
0:00:00.602731375 21393 0x558c8c7290 WARN totem bacon-video-widget.c:2375:bvw_bus_message_cb: Warning message: warning message: 0x7f44002230, time 99:99:99.999999999, seq-num 118, element ‘uridecodebin0’, GstMessageWarning, gerror=(GError)NULL, debug=(string)“gsturidecodebin.c(939):\ unknown_type_cb\ ():\ /GstPlayBin:play/GstURIDecodeBin:uridecodebin0”;
0:00:00.602879864 21393 0x558c8c7290 ERROR default totem-gst-helpers.c:61:totem_gst_message_print: message = Your GStreamer installation is missing a plug-in.
0:00:00.602920436 21393 0x558c8c7290 ERROR default totem-gst-helpers.c:63:totem_gst_message_print: domain = 4593 (gst-core-error-quark)
0:00:00.602951894 21393 0x558c8c7290 ERROR default totem-gst-helpers.c:64:totem_gst_message_print: code = 12
0:00:00.602979498 21393 0x558c8c7290 ERROR default totem-gst-helpers.c:65:totem_gst_message_print: debug = gsturidecodebin.c(1006): no_more_pads_full (): /GstPlayBin:play/GstURIDecodeBin:uridecodebin0:

no suitable plugins found:
gstdecodebin2.c(4565): gst_decode_bin_expose (): /GstPlayBin:play/GstURIDecodeBin:uridecodebin0/GstDecodeBin:decodebin0:
no suitable plugins found:
Missing decoder: MPEG-4 AAC (audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)2, base-profile=(string)lc, profile=(string)lc, codec_data=(buffer)12100000000000000000000000000000, max-input-size=(int)446, rate=(int)44100, channels=(int)2)
Missing decoder: H.264 (Constrained Baseline Profile) (video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)2.1, profile=(string)constrained-baseline, codec_data=(buffer)0142c015ffe100176742c015da0200979e4c04400000fa40002ee003c58ba801000468ce3c80, max-input-size=(int)22561, width=(int)500, height=(int)282, framerate=(fraction)24000/1001, pixel-aspect-ratio=(fraction)1/1)

0:00:00.603090904 21393 0x558c8c7290 ERROR default totem-gst-helpers.c:66:totem_gst_message_print: source =
0:00:00.603125851 21393 0x558c8c7290 ERROR default totem-gst-helpers.c:67:totem_gst_message_print: uri = (NULL)

** Message: Missing plugin: gstreamer|1.0|totem|MPEG-4 AAC decoder|decoder-audio/mpeg, mpegversion=(int)4, framed=(boolean)true, stream-format=(string)raw, level=(string)2, base-profile=(string)lc, profile=(string)lc, max-input-size=(int)446 (MPEG-4 AAC decoder)
** Message: Missing plugin: gstreamer|1.0|totem|H.264 (Constrained Baseline Profile) decoder|decoder-video/x-h264, stream-format=(string)avc, alignment=(string)au, level=(string)2.1, profile=(string)constrained-baseline, max-input-size=(int)22561 (H.264 (Constrained Baseline Profile) decoder)
0:00:00.609494494 21393 0x558c8c7290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:00.609562306 21393 0x558c8c7290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
Error: Unknown option --interaction=show-confirm-search
Usage: /usr/bin/gstreamer-codec-install [–prefix=/install/path] [–version=VERSION]
** Message: No installation candidate for missing plugins found.
0:00:01.363659969 21393 0x558c8c7290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.363754708 21393 0x558c8c7290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again

Installing gstreamer1.0-libav makes totem work, but VLC and the simple Gstreamer pipeline still don’t work. The simple pipeline is mentioned in the original post.

Detailed information:

ubuntu@mwk-jetson:~/Downloads$ sudo apt-get install gstreamer1.0-libav
Reading package lists… Done
Building dependency tree
Reading state information… Done
The following additional packages will be installed:
libavfilter-ffmpeg5 libavresample-ffmpeg2 libbs2b0 libflite1 libsodium18 libzmq5
The following NEW packages will be installed:
gstreamer1.0-libav libavfilter-ffmpeg5 libavresample-ffmpeg2 libbs2b0 libflite1 libsodium18 libzmq5
0 upgraded, 7 newly installed, 0 to remove and 238 not upgraded.
Need to get 0 B/13.4 MB of archives.
After this operation, 29.9 MB of additional disk space will be used.
Do you want to continue? [Y/n] Y
Selecting previously unselected package libavresample-ffmpeg2:arm64.
(Reading database … 208357 files and directories currently installed.)
Preparing to unpack …/libavresample-ffmpeg2_7%3a2.8.8-0ubuntu0.16.04.1_arm64.deb …
Unpacking libavresample-ffmpeg2:arm64 (7:2.8.8-0ubuntu0.16.04.1) …
Selecting previously unselected package libbs2b0:arm64.
Preparing to unpack …/libbs2b0_3.1.0+dfsg-2.2_arm64.deb …
Unpacking libbs2b0:arm64 (3.1.0+dfsg-2.2) …
Selecting previously unselected package libflite1:arm64.
Preparing to unpack …/libflite1_2.0.0-release-1_arm64.deb …
Unpacking libflite1:arm64 (2.0.0-release-1) …
Selecting previously unselected package libsodium18:arm64.
Preparing to unpack …/libsodium18_1.0.8-5_arm64.deb …
Unpacking libsodium18:arm64 (1.0.8-5) …
Selecting previously unselected package libzmq5:arm64.
Preparing to unpack …/libzmq5_4.1.4-7_arm64.deb …
Unpacking libzmq5:arm64 (4.1.4-7) …
Selecting previously unselected package libavfilter-ffmpeg5:arm64.
Preparing to unpack …/libavfilter-ffmpeg5_7%3a2.8.8-0ubuntu0.16.04.1_arm64.deb …
Unpacking libavfilter-ffmpeg5:arm64 (7:2.8.8-0ubuntu0.16.04.1) …
Selecting previously unselected package gstreamer1.0-libav:arm64.
Preparing to unpack …/gstreamer1.0-libav_1.8.1-1~ubuntu1_arm64.deb …
Unpacking gstreamer1.0-libav:arm64 (1.8.1-1~ubuntu1) …
Processing triggers for libc-bin (2.23-0ubuntu3) …
Setting up libavresample-ffmpeg2:arm64 (7:2.8.8-0ubuntu0.16.04.1) …
Setting up libbs2b0:arm64 (3.1.0+dfsg-2.2) …
Setting up libflite1:arm64 (2.0.0-release-1) …
Setting up libsodium18:arm64 (1.0.8-5) …
Setting up libzmq5:arm64 (4.1.4-7) …
Setting up libavfilter-ffmpeg5:arm64 (7:2.8.8-0ubuntu0.16.04.1) …
Setting up gstreamer1.0-libav:arm64 (1.8.1-1~ubuntu1) …
Processing triggers for libc-bin (2.23-0ubuntu3) …

ubuntu@mwk-jetson:~/Downloads$ totem sample.mp4 # successfully plays the video
0:00:01.296878419 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.297000397 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.408868245 22471 0x5580e0d290 WARN basesrc gstbasesrc.c:3489:gst_base_src_start_complete: pad not activated yet
0:00:01.409948754 22471 0x5580e0d290 WARN basesrc gstbasesrc.c:3489:gst_base_src_start_complete: pad not activated yet
0:00:01.410883013 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.411081709 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.415161609 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.415378742 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.481646815 22471 0x7f600f2b70 WARN qtdemux qtdemux_types.c:222:qtdemux_type_get: unknown QuickTime node type iods
0:00:01.481849521 22471 0x7f600f2b70 WARN qtdemux qtdemux.c:2642:qtdemux_parse_trex: failed to find fragment defaults for stream 1
0:00:01.482011446 22471 0x7f600f2b70 WARN qtdemux qtdemux.c:2642:qtdemux_parse_trex: failed to find fragment defaults for stream 2
0:00:01.482633522 22471 0x7f600f2b70 WARN basesrc gstbasesrc.c:2396:gst_base_src_update_length: processing at or past EOS
0:00:01.652753186 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.653019641 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.656111688 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.656351424 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.656999177 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.657193706 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.658995820 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.659311650 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.695308726 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.695382944 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.695421329 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.695460912 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.695495547 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again
0:00:01.695662993 22471 0x5580e0d290 FIXME bin gstbin.c:4149:gst_bin_query: implement duration caching in GstBin again

Update: The simple Gstreamer pipeline works after restarting the Jetson.
Unfortunately I’m not sure which combination of changes made it work. It could have been the restart itself, or the restart combined with a subset of the following newly installed packages.


Old:

[b]The simple Gstreamer pipeline still does not display the on-board camera stream, even after installing the following packages:[/b]
gstreamer1.0-plugins-good
gstreamer1.0-plugins-good-dbg
gstreamer1.0-plugins-base
gstreamer1.0-plugins-base-apps
gstreamer1.0-plugins-base-dbg
gstreamer1.0-plugins-ugly
gstreamer1.0-plugins-ugly-dbg
gstreamer1.0-tools
gstreamer-qapt
gstreamer-tools
gstreamer1.0-packagekit
gstreamer1.0-nice
gstreamer1.0-libav-dbg
gstreamer1.0-clutter
gstreamer1.0-dvswitch

I attempted to install these, but received “Unable to fetch some archives” or similar:
gstreamer1.0-plugins-bad
gstreamer1.0-plugins-bad-dbg
gstreamer1.0-plugins-bad-faad
gstreamer1.0-plugins-bad-videoparsers
gstreamer1.0-rtsp
gstreamer1.0-rtsp-dbg
gstreamer1.0-vaapi

These were already installed:
gstreamer1.0-plugins-ugly-amr
gstreamer1.0-x
gstreamer1.0-libav
gstreamer1.0-alsa
gstreamer1.0-clutter-3.0

I found these packages from this list:
http://packages.ubuntu.com/search?suite=xenial&arch=arm64&keywords=gstreamer

The pipeline command still outputs the same warning, and still follows up with “Setting pipeline to PAUSED …”.