Using gstreamer on Nvidia Jetson Nano, I want to read from MKV file and encode it as H264 to stream via RTP. I successfully did it with MP4 file this way:
./grammar.y(510): gst_parse_no_more_pads ():
/GstPipeline:pipeline0/GstMatroskaDemux:matroskademux0:
failed delayed linking some pad of GstMatroskaDemux named matroskademux0 to some pad of GstVideoConvert named videoconvert0
ERROR: from element /GstPipeline:pipeline0/GstMatroskaDemux:matroskademux0: Internal data stream error.
Additional debug info:
matroska-demux.c(5213): get_matroska_demux_loop (): /GstPipeline:pipeline0/GstMatroskaDemux:matroskademux0:
streaming stopped, reason not-linked (-1)
I then tried removing the videoconvert pipe and go straight to encoding H264, but it didnāt work also.
Setting pipeline to PAUSED ā¦
Using winsys: x11
Pipeline is live and does not need PREROLL ā¦
Got context from element āeglglessink0ā: gst.egl.EGLDisplay=context, display=(GstEGLDisplay)NULL;
Setting pipeline to PLAYING ā¦
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0: No RTP format was negotiated.
Additional debug info:
gstrtpbasedepayload.c(458): gst_rtp_base_depayload_handle_buffer (): /GstPipeline:pipeline0/GstRtpH264Depay:rtph264depay0:
Input buffers need to have RTP caps set on them. This is usually achieved by setting the ācapsā property of the upstream source element (often udpsrc or appsrc), or by putting a capsfilter element before the depayloader and setting the ācapsā property on that. Also see README\rtp\gst - gstreamer/gst-plugins-good - 'Good' GStreamer plugins (mirrored from https://gitlab.freedesktop.org/gstreamer/gst-plugins-good)
EOS on shutdown enabled ā waiting for EOS after Error
Waiting for EOSā¦
ERROR: from element /GstPipeline:pipeline0/GstUDPSrc:udpsrc0: Internal data stream error.
Additional debug info:
gstbasesrc.c(3055): gst_base_src_loop (): /GstPipeline:pipeline0/GstUDPSrc:udpsrc0:
streaming stopped, reason not-negotiated (-4)
This is done from the same Nano, so why is it not working?
Then it seems to accept it, shows that pipeline is PLAYING and ending with āNew clock: GstSystemClockā line,
but doesnāt show anything on my screen.
Hi, thanks again for the quick reply.
It thinks it is playing, but nothing is showing on the screen.
After a few seconds a critical error message appears.
Hereās the output:
Setting pipeline to PAUSED ā¦
Opening in BLOCKING MODE
Pipeline is live and does not need PREROLL ā¦
Setting pipeline to PLAYING ā¦
New clock: GstSystemClock
NvMMLiteOpen : Block : BlockType = 261
NVMEDIA: Reading vendor.tegra.display-size : status: 6
NvMMLiteBlockCreate : Block : BlockType = 261
Iām really sorry to trouble you with this.
I really read the Gstreamer user guide and examples and gazillion forum topics, but none seem to produce the result that Iām after.
Perhaps, you could show me the correct pipeline from server to client to play a simple 4k mkv file from jellyfish over rtp/udp?
Hi,
Would like to get more information about the use-case. Do you put MKV files in Jetson Nano as a server and other devices can connect to Jetson Nano and play the MKV files?
As a first stage, I put the MKV files on the Jetson Nano, and I want to be able to stream them over RTP/UDP and play them using HW decoding on the Nano itself.
Second stage will be to receive the stream from an outside source, like a camera (MIPI), using HW encoding over RTP/UDP to another Jetson Nano on the network, which will decode and play.
Hi,
It might be better to run a RTSP server on Jetson Nano as on-demand service. Please check steps in Jetson Nano FAQ
[Q: Is there any example of running RTSP streaming?]
How can I affect the outgoing stream resolution?
I want to stream 2 types of streams - one of 4K and one of 720p - and test the CPU usage and power consumption while encoding it to H264 over RTSP
Hi, test-launch is a test sample and it can only construct one connection. For multiple connections with different resolutions, would need other users to share experience about implementing the use-case.
I managed to stream twice in two different ports. I just donāt know how to change resolution and stream in HW encoding of my choosingā¦This is so hard, this device is very frustrating.