The nvcamerasrc sets the maximum framerate at 120. We want to test the maximum FPS per second H.264 encoding that the TX2 is capable of. Is there a method for going above 120 FPS ?
Thanks,
K-
Hi kunice, the cap is removed in next release.
Could you feed a raw file in instead of a camera capture? A raw file pre-loaded into memory would make sure you’re not limited on anything else.
DaneLLL Thanks for the response
snarky, Thanks I will try that.
Its interesting. I use the following encode:
gst-launch-1.0 nvcamerasrc fpsRange=“120.0 120.0” intent=3 ! nvvidconv flip-method=2 ! ‘video/x-raw(memory:NVMM), width=(int)1920, height=(int)1280, format=(string)I420, framerate=(fraction)120/1’ ! omxh265enc control-rate=2 bitrate=10000000 ! ‘video/x-h265, stream-format=(string)byte-stream, framerate=(fraction)120/1’ ! h265parse ! rtph265pay mtu=1400 ! udpsink host=$CLIENT_IP port=5000 sync=false async=false
Then i use this decode:
gst-launch-1.0 udpsrc port=5000 ! application/x-rtp,encoding-name=H265,payload=96 ! rtph265depay ! h265parse ! omxh265dec ! nvoverlaysink sync=false async=false -e
While the decoder is running, it keeps printing out '30.xxxxx FPS", so how does one get more than 30 FPS… or am i missing something?
K-
Hi kunice, what is the camera source? Does it support 1080p120?
DaneLLL,
I am using the standard Tegra X2 Jetson evaluation board with the onboard camera that comes with the evaluation system. I use nvcamerasrc as the video input (see first post comment).
K-
Hey Snarky,
I decided to try encoding a raw file with this command:
-
CLIENT_IP=127.0.0.1
-
gst-launch-1.0 -v filesrc location=/home/nvidia/KristenAndSara_1280x720_60.y4m ! y4mdec ! nvvidconv ! video/x-raw(memory:NVMM), height=(int)720, width=(int)1280, format=I420 ! omxh265enc control-rate=2 bitrate=10000000 ! video/x-h265, stream-format=(string)byte-stream, framerate=(fraction)120/1 ! h265parse ! rtph265pay mtu=1400 ! udpsink host=127.0.0.1 port=5000 sync=false async=false
Setting pipeline to PAUSED …
Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is PREROLLED …
/GstPipeline:pipeline0/GstY4mDec:y4mdec0.GstPad:src: caps = “video/x-raw,\ format=(string)I420,\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ chroma-site=(string)mpeg2,\ colorimetry=(string)bt709,\ framerate=(fraction)60/1”
Setting pipeline to PLAYING …
New clock: GstSystemClock
ERROR: from element /GstPipeline:pipeline0/GstFileSrc:filesrc0: Internal data flow error.
Additional debug info:
gstbasesrc.c(2948): gst_base_src_loop (): /GstPipeline:pipeline0/GstFileSrc:filesrc0:
streaming task paused, reason not-negotiated (-4)
Execution ended after 0:00:00.006337619
Setting pipeline to PAUSED …
Setting pipeline to READY …
Setting pipeline to NULL …
Freeing pipeline …
nvidia@tegra-ubuntu:~$
Okay got it working, but I am unable to up the framerate above 60 FPS (what is in the file). So how do I setup a file as input and have an arbitrary framerate through the pipeline?
- CLIENT_IP=127.0.0.1
- gst-launch-1.0 -v filesrc location=/home/nvidia/KristenAndSara_1280x720_60.y4m ! y4mdec ! nvvidconv ! video/x-raw(memory:NVMM), height=(int)720, width=(int)1280, format=I420 ! tee name=np np. ! omxh265enc control-rate=2 bitrate=10000000 ! video/x-h265, stream-format=(string)byte-stream ! h265parse ! rtph265pay mtu=1400 ! udpsink host=127.0.0.1 port=5000 sync=false async=false np. ! nvoverlaysink -e
Setting pipeline to PAUSED …
Inside NvxLiteH264DecoderLowLatencyInitNvxLiteH264DecoderLowLatencyInit set DPB and MjstreamingInside NvxLiteH265DecoderLowLatencyInitNvxLiteH265DecoderLowLatencyInit set DPB and MjstreamingPipeline is PREROLLING …
/GstPipeline:pipeline0/GstY4mDec:y4mdec0.GstPad:src: caps = “video/x-raw,\ format=(string)I420,\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ chroma-site=(string)mpeg2,\ colorimetry=(string)bt709,\ framerate=(fraction)60/1”
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:src: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
/GstPipeline:pipeline0/GstTee:np.GstTeePad:src_0: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
Framerate set to : 60 at NvxVideoEncoderSetParameterNvMMLiteOpen : Block : BlockType = 8
===== MSENC =====
NvMMLiteBlockCreate : Block : BlockType = 8
/GstPipeline:pipeline0/GstOMXH265Enc-omxh265enc:omxh265enc-omxh265enc0.GstPad:sink: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
/GstPipeline:pipeline0/GstTee:np.GstTeePad:src_1: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
/GstPipeline:pipeline0/GstNvOverlaySink-nvoverlaysink:nvoverlaysink-nvoverlaysink0.GstPad:sink: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
/GstPipeline:pipeline0/GstTee:np.GstPad:sink: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
/GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = “video/x-raw(memory:NVMM),\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ format=(string)I420”
/GstPipeline:pipeline0/Gstnvvconv:nvvconv0.GstPad:sink: caps = “video/x-raw,\ format=(string)I420,\ width=(int)1280,\ height=(int)720,\ interlace-mode=(string)progressive,\ pixel-aspect-ratio=(fraction)1/1,\ chroma-site=(string)mpeg2,\ colorimetry=(string)bt709,\ framerate=(fraction)60/1”
Pipeline is PREROLLED …
Setting pipeline to PLAYING …
New clock: GstSystemClock
===== NVENC blits (mode: 1) into block linear surfaces =====
/GstPipeline:pipeline0/GstOMXH265Enc-omxh265enc:omxh265enc-omxh265enc0.GstPad:src: caps = “video/x-h265,\ alignment=(string)au,\ stream-format=(string)byte-stream,\ width=(int)1280,\ height=(int)720,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1”
/GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:src: caps = “video/x-h265,\ alignment=(string)au,\ stream-format=(string)byte-stream,\ width=(int)1280,\ height=(int)720,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1”
/GstPipeline:pipeline0/GstH265Parse:h265parse0.GstPad:sink: caps = “video/x-h265,\ alignment=(string)au,\ stream-format=(string)byte-stream,\ width=(int)1280,\ height=(int)720,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1”
/GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:sink: caps = “video/x-h265,\ alignment=(string)au,\ stream-format=(string)byte-stream,\ width=(int)1280,\ height=(int)720,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1”
/GstPipeline:pipeline0/GstH265Parse:h265parse0.GstPad:src: caps = “video/x-h265,\ alignment=(string)au,\ stream-format=(string)byte-stream,\ width=(int)1280,\ height=(int)720,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ parsed=(boolean)true,\ profile=(string)main,\ tier=(string)main”
/GstPipeline:pipeline0/GstRtpH265Pay:rtph265pay0.GstPad:sink: caps = “video/x-h265,\ alignment=(string)au,\ stream-format=(string)byte-stream,\ width=(int)1280,\ height=(int)720,\ pixel-aspect-ratio=(fraction)1/1,\ framerate=(fraction)60/1,\ parsed=(boolean)true,\ profile=(string)main,\ tier=(string)main”
/GstPipeline:pipeline0/GstRtpH265Pay:rtph265pay0.GstPad:src: caps = “application/x-rtp,\ media=(string)video,\ payload=(int)96,\ clock-rate=(int)90000,\ encoding-name=(string)H265,\ ssrc=(uint)909738154,\ timestamp-offset=(uint)2280259033,\ seqnum-offset=(uint)17788,\ a-framerate=(string)60”
/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = “application/x-rtp,\ media=(string)video,\ payload=(int)96,\ clock-rate=(int)90000,\ encoding-name=(string)H265,\ ssrc=(uint)909738154,\ timestamp-offset=(uint)2280259033,\ seqnum-offset=(uint)17788,\ a-framerate=(string)60”
/GstPipeline:pipeline0/GstRtpH265Pay:rtph265pay0.GstPad:src: caps = “application/x-rtp,\ media=(string)video,\ clock-rate=(int)90000,\ encoding-name=(string)H265,\ sprop-parameter-sets=(string)“QAEMAf//AUAAAAMAAAMAAAMAAAMAEKwJAA\=\=\,QgEBAUAAAAMAAAMAAAMAAAMAEKACgIAuHxOWt5CEZLggAA\=\=\,RAHAc8DMkAA\=”,\ payload=(int)96,\ seqnum-offset=(uint)17788,\ timestamp-offset=(uint)2280259033,\ ssrc=(uint)909738154,\ a-framerate=(string)60”
/GstPipeline:pipeline0/GstUDPSink:udpsink0.GstPad:sink: caps = “application/x-rtp,\ media=(string)video,\ clock-rate=(int)90000,\ encoding-name=(string)H265,\ sprop-parameter-sets=(string)“QAEMAf//AUAAAAMAAAMAAAMAAAMAEKwJAA\=\=\,QgEBAUAAAAMAAAMAAAMAAAMAEKACgIAuHxOWt5CEZLggAA\=\=\,RAHAc8DMkAA\=”,\ payload=(int)96,\ seqnum-offset=(uint)17788,\ timestamp-offset=(uint)2280259033,\ ssrc=(uint)909738154,\ a-framerate=(string)60”
/GstPipeline:pipeline0/GstRtpH265Pay:rtph265pay0: timestamp = 2280259033
/GstPipeline:pipeline0/GstRtpH265Pay:rtph265pay0: seqnum = 17788
Got EOS from element “pipeline0”.
Execution ended after 0:00:10.016558498
Setting pipeline to PAUSED …
Setting pipeline to READY …
Setting pipeline to NULL …
Freeing pipeline …
Hi kunice, we are not sure how y4m works. Other user can share experience.
Here is a post about 240fps on TX1:
https://devtalk.nvidia.com/default/topic/1006894/jetson-tx1/nvcamerasrc-gst-plugin-frame-rate-limitation/post/5154382/#5154382
It should also work fine on TX2.
I just I reach 8fps with the tx2 board camera ,but my last tx2 board can only reach 5fps,It’s odd