I set my TX1 up with JetPack and Ubuntu 16.04LTS and everything seems to be in order. I am following the Accelerated Gstreamer User Guide 24.2.1 and installed the missing components of Gstreamer1.0 not included in the JetPack load. Gstreamer Version:
gst-inspect-1.0 version 1.8.1
GStreamer 1.8.3
Most of the provided video pipelines work fine. However, when I try to run the following video pipelines from the user’s guide, I get errors which I am sharing for your information. The only ones I really care about resolving are H.265.
H.265 Decode (NVIDIA accelerated decode) {page 4} I used a videotestsrc produced file.
gst-launch-1.0 filesrc location=test.mp4 ! qtdemux name=demux demux.video_0 ! queue ! h265parse ! omxh265dec ! nvoverlaysink -e
Setting pipeline to PAUSED ...
Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is PREROLLING ...
WARNING: from element /GstPipeline:pipeline0/GstQTDemux:demux: Delayed linking failed.
Additional debug info:
./grammar.y(506): gst_parse_no_more_pads (): /GstPipeline:pipeline0/GstQTDemux:demux:
failed delayed linking pad video_0 of GstQTDemux named demux to some pad of GstQueue named queue0
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:demux: GStreamer encountered a general stream error.
Additional debug info:
qtdemux.c(5520): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:demux:
streaming stopped, reason not-linked
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
I also tried an h.265 encoded file from here: http://h265.webmfiles.org/video-h265.mkv It plays fine in my media player. Traceback is different:
gst-launch-1.0 filesrc location=h265.mp4 ! qtdemux name=demux demux.video_0 ! queue ! h265parse ! omxh265dec ! nvoverlaysink -e
Setting pipeline to PAUSED ...
Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is PREROLLING ...
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:demux: This file is invalid and cannot be played.
Additional debug info:
qtdemux.c(699): gst_qtdemux_pull_atom (): /GstPipeline:pipeline0/GstQTDemux:demux:
atom has bogus size 440786851
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
I also tried an h.265 encoded file from videotestsrc but got the same traceback
Multiple displays {page 5 top}
gst-launch-1.0 filesrc location=test.mp4 ! qtdemux name=demux demux.video_0 ! queue ! omxvp8dec ! nvoverlaysink display-id=1 -e
Setting pipeline to PAUSED ...
Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is PREROLLING ...
WARNING: from element /GstPipeline:pipeline0/GstQTDemux:demux: Delayed linking failed.
Additional debug info:
./grammar.y(506): gst_parse_no_more_pads (): /GstPipeline:pipeline0/GstQTDemux:demux:
failed delayed linking pad video_0 of GstQTDemux named demux to some pad of GstQueue named queue0
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:demux: GStreamer encountered a general stream error.
Additional debug info:
qtdemux.c(5520): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:demux:
streaming stopped, reason not-linked
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Freeing pipeline ...
MPEG-4 Decode (NVIDIA accelerated decode)
gst-launch-1.0 filesrc location=test.mp4 ! qtdemux name=demux demux.video_0 ! queue ! mpeg4videoparse ! omxmpeg4videodec ! nveglglessink -e
Setting pipeline to PAUSED ...
Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is PREROLLING ...
Got context from element 'eglglessink0': gst.egl.EGLDisplay=context, display=(GstEGLDisplay)NULL;
WARNING: from element /GstPipeline:pipeline0/GstQTDemux:demux: Delayed linking failed.
Additional debug info:
./grammar.y(506): gst_parse_no_more_pads (): /GstPipeline:pipeline0/GstQTDemux:demux:
failed delayed linking pad video_0 of GstQTDemux named demux to some pad of GstQueue named queue0
ERROR: from element /GstPipeline:pipeline0/GstQTDemux:demux: GStreamer encountered a general stream error.
Additional debug info:
qtdemux.c(5520): gst_qtdemux_loop (): /GstPipeline:pipeline0/GstQTDemux:demux:
streaming stopped, reason not-linked
ERROR: pipeline doesn't want to preroll.
Setting pipeline to NULL ...
Notice the pipeline did not get free’ed
Image Encode
gst-launch-1.0 videotestsrc num-buffers=1 ! 'video/x-raw,width=(int)640, height=(int)480, format=(string)I420' ! nvjpegenc !filesink location=test.jpg -e
bash: !filesink: event not found
As you can tell, I am getting a lot of errors. Then I saw the instructions to build Gstreamer (on page 21 of the user guide - in my opinion this should be at the beginning). I am going to follow the instructions for version 1.6.0 as instructed in the tutorial. If all these errors will be resolved by following this step, please disregard. If not, please help me get the H.265 decode examples working.