How to install Gstreamer 1.12.2

I’m trying to install A most recent Gstreamer 1.12.2

http://developer.download.nvidia.com/embedded/L4T/r23_Release_v1.0/L4T_Tegra_X1_Multimedia_User_Guide.pdf

gst-install --prefix=/home/nvidia/gst-1.12.2

First, I tried to use gst-install. but it’s not work because of cerification error on download (wget)

so I decided to do install GST 1.12.2 manually, then i met a few errors

  • target director /home/nvidia/works/fakeroot
    configure --prefix=/home/nvidia/works/fakeroot
    make install
Making install in check
make[2]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/check'
  CC       elements/libparser_la-parser.lo
  CCLD     libparser.la
ar: `u' modifier ignored since `D' is the default (see `U')
  CC       pipelines/pipelines_streamheader-streamheader.o
  CCLD     pipelines/streamheader
  CC       elements/elements_dash_demux-test_http_src.o
  CC       elements/elements_dash_demux-adaptive_demux_engine.o
  CC       elements/elements_dash_demux-adaptive_demux_common.o
  CC       elements/elements_dash_demux-dash_demux.o
  CCLD     elements/dash_demux
make[3]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/check'
make[3]: Nothing to be done for 'install-exec-am'.
make[3]: Nothing to be done for 'install-data-am'.
make[3]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/check'
make[2]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/check'
Making install in examples
make[2]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples'
Making install in codecparsers
make[3]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/codecparsers'
  CC       parse_jpeg-parse-jpeg.o
  CCLD     parse-jpeg
  CC       parse_vp8-parse-vp8.o
  CCLD     parse-vp8
make[4]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/codecparsers'
make[4]: Nothing to be done for 'install-exec-am'.
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/codecparsers'
make[3]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/codecparsers'
Making install in mpegts
make[3]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/mpegts'
  CC       tsparser-ts-parser.o
  CCLD     tsparser
make[4]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/mpegts'
make[4]: Nothing to be done for 'install-exec-am'.
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/mpegts'
make[3]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/mpegts'
Making install in opencv
make[3]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/opencv'
  CC       gstmotioncells_dynamic_test-gstmotioncells_dynamic_test.o
  CCLD     gstmotioncells_dynamic_test
  CC       gsthanddetect_test-gsthanddetect_test.o
  CCLD     gsthanddetect_test
  CC       gstfacedetect_test-gstfacedetect_test.o
  CCLD     gstfacedetect_test
make[4]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/opencv'
make[4]: Nothing to be done for 'install-exec-am'.
make[4]: Nothing to be done for 'install-data-am'.
make[4]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/opencv'
make[3]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/opencv'
Making install in gl
make[3]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/gl'
Making install in generic
make[4]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/gl/generic'
Making install in cube
make[5]: Entering directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/gl/generic/cube'
  CXX      cube-main.o
  CXXLD    cube
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmMap'
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmCloseOnce'
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmUnmap'
/usr/lib/gcc/aarch64-linux-gnu/5/../../../aarch64-linux-gnu/libGL.so: undefined reference to `drmOpenOnce'
collect2: error: ld returned 1 exit status
Makefile:804: recipe for target 'cube' failed
make[5]: *** [cube] Error 1
make[5]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/gl/generic/cube'
Makefile:807: recipe for target 'install-recursive' failed
make[4]: *** [install-recursive] Error 1
make[4]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/gl/generic'
Makefile:813: recipe for target 'install-recursive' failed
make[3]: *** [install-recursive] Error 1
make[3]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples/gl'
Makefile:936: recipe for target 'install-recursive' failed
make[2]: *** [install-recursive] Error 1
make[2]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests/examples'
Makefile:811: recipe for target 'install-recursive' failed
make[1]: *** [install-recursive] Error 1
make[1]: Leaving directory '/home/nvidia/works/gst/gst-plugins-bad-1.12.2/tests'
Makefile:999: recipe for target 'install-recursive' failed
make: *** [install-recursive] Error 1
nvidia@tegra-ubuntu:/usr/lib/aarch64-linux-gnu$ ls libGL.so -l
lrwxrwxrwx 1 root root 13 Jan 26 00:26 libGL.so -> mesa/libGL.so

How should I proceed? Thanks!

gst-install fail like this (wget certificate error )

nvidia@tegra-ubuntu:~/works$ wget https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_cropped_multilingual.webm
--2017-07-20 00:52:18--  https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_cropped_multilingual.webm
Resolving www.freedesktop.org (www.freedesktop.org)... 131.252.210.176, 2610:10:20:722:a800:ff:feda:470f
Connecting to www.freedesktop.org (www.freedesktop.org)|131.252.210.176|:443... connected.

ERROR: cannot verify www.freedesktop.org’s certificate, issued by ‘CN=Let’s Encrypt Authority X3,O=Let’s Encrypt,C=US’:
Unable to locally verify the issuer’s authority.
To connect to www.freedesktop.org insecurely, use `–no-check-certificate’.

nvidia@tegra-ubuntu:~/works$ wget --no-check-certificate  https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_cropped_multilingual.webm
--2017-07-20 00:52:32--  https://www.freedesktop.org/software/gstreamer-sdk/data/media/sintel_cropped_multilingual.webm
Resolving www.freedesktop.org (www.freedesktop.org)... 131.252.210.176, 2610:10:20:722:a800:ff:feda:470f
Connecting to www.freedesktop.org (www.freedesktop.org)|131.252.210.176|:443... connected.
WARNING: cannot verify www.freedesktop.org's certificate, issued by ‘CN=Let's Encrypt Authority X3,O=Let's Encrypt,C=US’:
  Unable to locally verify the issuer's authority.
HTTP request sent, awaiting response... 200 OK
Length: 5729151 (5.5M) [video/webm]
Saving to: ‘sintel_cropped_multilingual.webm’

sintel_cropped_multilingual.webm              100%[==============================================================================================>]   5.46M  1.67MB/s    in 3.3s

2017-07-20 00:52:38 (1.67 MB/s) - ‘sintel_cropped_multilingual.webm’ saved [5729151/5729151]

Hi johlim,
We have build instructions in https://developer.nvidia.com/embedded/dlc/l4t-accelerated-gstreamer-guide-27-1

It is GStreamer 1.8.1 by default in r27.1. Can you share why you need 1.12.2?

Hi DaneLLL

Because of the new video format, I am tring to install new version.


Below is the new release note
https://gstreamer.freedesktop.org/releases/1.12/

The video library gained support for a number of new video formats:
    GBR_12LE, GBR_12BE, GBRA_12LE, GBRA_12BE (planar 4:4:4 RGB/RGBA, 12 bits per channel)
    GBRA_10LE, GBRA_10BE (planar 4:4:4:4 RGBA, 10 bits per channel)
    GBRA (planar 4:4:4:4 ARGB, 8 bits per channel)
    I420_12BE, I420_12LE (planar 4:2:0 YUV, 12 bits per channel)
    I422_12BE,I422_12LE (planar 4:2:2 YUV, 12 bits per channel)
    Y444_12BE, Y444_12LE (planar 4:4:4 YUV, 12 bits per channel)
    VYUY (another packed 4:2:2 YUV format)

The high-level GstPlayer API was extended with functions for taking video snapshots and enabling accurate seeking. It can optionally also use the still-experimental playbin3 element now.

After gstramer plugin install , then I did copy nvidia_gstreamer-1.0 libraries from /usr/lib/aarch64-linux-gnu/gstreamer-1.0/* to the /home/nvidia/works/fakeroot/lib/gstreamer-1.0/ directory.

Do you have any resources to help?

nvidia@tegra-ubuntu:~/works/gst/gst-rtsp-server-1.12.2$ gst-inspect-1.0

(gst-plugin-scanner:1958): GLib-GObject-WARNING **: specified class size for type 'GstHLSDemux' is smaller than the parent type's 'GstAdaptiveDemux' class size

(gst-plugin-scanner:1958): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(gst-plugin-scanner:1958): GStreamer-CRITICAL **: gst_element_register: assertion 'g_type_is_a (type, GST_TYPE_ELEMENT)' failed
Failed to connect to Mir: Failed to connect to server socket: No such file or directory
Unable to init server: Could not connect: Connection refused

(gst-plugin-scanner:1958): Clutter-CRITICAL **: Unable to initialize Clutter: Could not initialize Gdk

(gst-plugin-scanner:1958): Clutter-Gst-CRITICAL **: Unable to initialize Clutter

(gst-plugin-scanner:1958): GLib-GObject-WARNING **: cannot register existing type 'GstRMDemux'

(gst-plugin-scanner:1958): GStreamer-CRITICAL **: gst_element_register: assertion 'g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(gst-plugin-scanner:1958): GLib-GObject-WARNING **: cannot register existing type 'GstOss4Sink'

(gst-plugin-scanner:1958): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(gst-plugin-scanner:1958): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(gst-plugin-scanner:1958): GStreamer-CRITICAL **: gst_element_register: assertion 'g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(gst-plugin-scanner:1958): GLib-GObject-WARNING **: cannot register existing type 'GstEncodeBin'

(gst-plugin-scanner:1958): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(gst-plugin-scanner:1958): GStreamer-CRITICAL **: gst_element_register: assertion 'g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(gst-plugin-scanner:1958): GLib-GObject-WARNING **: cannot register existing type 'GstSoupHTTPSrc'

(gst-plugin-scanner:1958): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(gst-plugin-scanner:1958): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(gst-plugin-scanner:1958): GStreamer-CRITICAL **: gst_element_register: assertion 'g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(gst-plugin-scanner:1958): GLib-GObject-WARNING **: cannot register existing type 'GstSoupHttpClientSink'

(gst-plugin-scanner:1958): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(gst-plugin-scanner:1958): GStreamer-CRITICAL **: gst_element_register: assertion 'g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(gst-plugin-scanner:1958): GLib-GObject-WARNING **: cannot register existing type 'GstDataURISrc'

(gst-plugin-scanner:1958): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(gst-plugin-scanner:1958): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(gst-plugin-scanner:1958): GStreamer-CRITICAL **: gst_element_register: assertion 'g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(gst-plugin-scanner:1958): GLib-GObject-WARNING **: cannot register existing type 'GstPulseSink'

(gst-plugin-scanner:1958): GLib-GObject-CRITICAL **: g_type_add_interface_static: assertion 'G_TYPE_IS_INSTANTIATABLE (instance_type)' failed

(gst-plugin-scanner:1958): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(gst-plugin-scanner:1958): GStreamer-CRITICAL **: gst_element_register: assertion 'g_type_is_a (type, GST_TYPE_ELEMENT)' failed

(gst-plugin-scanner:1958): GStreamer-WARNING **: Failed to load plugin '/home/nvidia/works/fakeroot/lib/gstreamer-1.0/libgstkms.so': /home/nvidia/works/fakeroot/lib/gstreamer-1.0/libgstkms.so: undefined symbol: drmModeGetFB

(gst-plugin-scanner:1958): GLib-GObject-WARNING **: cannot register existing type 'GstViewfinderBin'

(gst-plugin-scanner:1958): GLib-CRITICAL **: g_once_init_leave: assertion 'result != 0' failed

(gst-plugin-scanner:1958): GStreamer-CRITICAL **: gst_element_register: assertion 'g_type_is_a (type, GST_TYPE_ELEMENT)' failed

my envirionment variable

PATH=/usr/local/cuda-8.0/bin:/usr/local/sbin:/usr/local/bin:/home/nvidia/works/fakeroot/bin:/usr/sbin:/usr/bin:/sbin:/bin
QT_QPA_PLATFORMTHEME=appmenu-qt5
PWD=/home/nvidia/works/gst/gst-rtsp-server-1.12.2
LANG=en_US.UTF-8
SHLVL=1
HOME=/home/nvidia
LOGNAME=nvidia
GST_PLUGIN_PATH=/home/nvidia/works/fakeroot/lib/gstreamer-1.0
PKG_CONFIG_PATH=/home/nvidia/works/fakeroot/lib/pkgconfig

Hi johlim,
It looks like the header files are not identical in 1.8.1 and 1.12.2, so it is impossible upgrade to 1.12.2. All our libraries are built with 1.8.1 headers.

It is also 1.8.1 on the latest r28.1. We will review the request of upgrading to 1.12.2.

Thanks you, DaneLLL

DaneLLL - It looks like support for 1.12.3 is in the 28.2 release for TX-2. Do you know if this will work on TX-1?

So far R28.2 is just a pre-release for TX2 only. I would assume (and likely be correct) that the TX1 and TX2 will both be supported in R28.2 when the full release comes out…and pre-releases would probably not be out unless a full release is planned in the next couple of months or sooner.

linuxdev and DaneLLL - I was trying to ask a more nuanced question. The NVidia Gstreamer libraries have clearly been recompiled in 28.2 to support Gstreamer release 1.12.x per the 28.2 documentation. Do any of these NVidia supplied libraries contain TX-2 specific components?

libgstnvcamera.so
libgstnveglglessink.so
libgstnveglstreamsrc.so
libgstnvegltransform.so
libgstnvivafilter.so
libgstnvvidconv.so
libgstnvvideosink.so
libnvgstjpeg.so
libgstomx.so

If they are not TX-2 specific then I’d be happy to test on TX-1 and see what happens. But if they are TX-2 specific it would save a bit of time for me to understand that before going down that path.

I can’t answer that…all I can do is suggest I doubt the TX1 and TX2 versions of those libraries will differ since they are both user space and aarch64 (CUDA can have hardware-dependent needs, but so long as a user space library links to a standard API/ABI the libraries are probably interchangeable). TX1 is not yet at R28.2 though, so these libraries will not necessarily work on a TX1 which is using R28.1. When R28.2 comes out for TX1 odds are high the TX1 and TX2 will use exactly the same library.

Someone else will need to give you a more definitive answer.

Thanks - that’s positive enough for me to spend a bit of energy, copy the libraries to the TX-1 on 28.1 and give them a cursory try.

Hi sperok,
We suggest you wati for r28.2. The prebuilt of r28.2 dp may not work well with r28.1 kernel.

Thank you!