JetsonTX2/GStreamer/nvgstcapture-1.0: Difference between revisions
m (Spalli moved page Jetson TX2/GStreamer/nvgstcapture-1.0 to JetsonTX2/GStreamer/nvgstcapture-1.0 without leaving a redirect) |
mNo edit summary |
||
Line 1: | Line 1: | ||
<noinclude> | <noinclude> | ||
{{ | {{JetsonTX2/Head|next=|previous=|keywords=}} | ||
</noinclude> | </noinclude> | ||
Line 434: | Line 434: | ||
<noinclude> | <noinclude> | ||
{{ | {{JetsonTX2/Foot||}} | ||
</noinclude> | </noinclude> |
Revision as of 07:44, 9 July 2019
nvgstcapture-1.0
This is an application based on gstreamer and omx to capture, encode and save video to the filesystem. It has a lot of options. The source code is not released by NVIDIA yet but they are planning to release in future versions of Linux 4 Tegra (L4T), you can read about it at Nvidia Embedded Computing Forum
nvidia@tegra-ubuntu:~$ nvgstcapture-1.0 --help Encoder null, cannot set bitrate! Encoder Profile = Baseline Usage: nvgstcapture-1.0 [OPTION...] Nvidia GStreamer Camera Model Test Help Options: -h, --help Show help options --help-all Show all help options --help-gst Show GStreamer Options Application Options: --prev-res Preview width & height. USB Range: 0 to 12 (5632x4224) and CSI Range: 2 to 12 (5632x4224) e.g., --prev-res=3 --cus-prev-res Custom Preview width & height [for CSI only] e.g., --cus-prev-res=1920x1080 --image-res Image width & height. Range: 0 to 12 (5632x4224) e.g., --image-res=3 --video-res Video width & height. Range: 0 to 9 (3896x2192) e.g., --video-res=3 -m, --mode Capture mode value (1=still 2=video) -v, --video-enc Video encoder type (0=h264[HW] 1=vp8[HW] 2=h265[HW] 3=vp9[HW]) -b, --enc-bitrate Video encoding Bit-rate(in bytes) e.g., --enc-bitrate=4000000 --enc-profile Video encoder profile (Only for H.264) (0=Baseline, 1=Main, 2=High) -J, --image-enc Image encoder type (0=jpeg_SW[jpegenc] 1=jpeg_HW[nvjpegenc]) -k, --file-type Container file type (0=mp4 1=3gp 2=mkv) --cap-dev-node Video capture device node (0=/dev/video0[default], 1=/dev/video1, 2=/dev/video2) e.g., --cap-dev-node=0 --svs [For USB] (=) chain for video Preview. [For CSI only] use "nvoverlaysink" --file-name Captured file name. nvcamtest is used by default --camsrc Camera Source to use (0=v4l2, 1=csi[default], 2=videotest, 3=eglstream) --orientation [For CSI only] Camera sensor orientation value -w, --whitebalance [For CSI only] Capture whitebalance value -s, --scene-mode [For CSI only] Camera Scene-Mode value -c, --color-effect [For CSI only] Camera Color Effect value --auto-exposure [For CSI only] Camera Auto-Exposure value --flash [For CSI only] Camera Flash value --flicker [For CSI only] Camera Flicker Detection and Avoidance Mode value --contrast [For CSI only] Camera Contrast value --saturation [For CSI only] Camera Saturation value --edge-enhancement [For CSI only] Camera Edge Enhancement value --tnr-strength [For CSI only] Camera TNR-Strength value --tnr-mode [For CSI only] Camera TNR Mode value --sensor-id [For CSI only] Camera Sensor ID value --eglstream-id [For CSI EGLStream Consumer] Select EGLStream Producer ID value. Default value 0 --display-id [For nvoverlaysink only] Display ID value --aeRegion [For CSI Only] ROI for AE coordinates(top,left,bottom,right) and weight in that order.e.g., --aeRegion="30 40 200 200 1.2" --wbRegion [For CSI Only] ROI for AWB coordinates(top,left,bottom,right) and weight in that order.e.g., --wbRegion="30 40 200 200 1.2" --fpsRange [For CSI Only] FPS range values (low, high) e.g., --fpsRange="15 30" --exposure-time [For CSI only] Capture exposure time value. e.g., --exposure-time=0.033 --wbGains [For CSI Only] WB gains values (R, GR, GB, B) in that order. e.g., --wbGains="1.2 1.4 0.8 1.6" --overlayConfig Overlay Configuration Options index and coordinates in (index, x_pos, y_pos, width, height) order e.g. --overlayConfig="0, 0, 0, 1280, 720" --enable-exif Enable Exif data --dump-bayer Dump bayer data in addition to image capture. --eglConfig EGL window Coordinates (x_pos y_pos) in that order e.g., --eglConfig="50 100" --aeLock [For CSI only] Enable auto exposure lock e.g., --aeLock --enable-meta Enable Sensor MetaData reporting --nvvideosink-create-eglstream [For nvvideosink EGLStream Producer] Enable nvvideosink EGLStream Producer --callback Enable User callback to set capture settings per frame --app-profile Enable KPI profiling --kpi-numbers Enable KPI measurement -A, --automate Run application in automation mode -S, --start-time Start capture after specified time in seconds. Default = 5 sec (use with --automate or -A only) -Q, --quit-after Quit application once automation is done after specified time in seconds. Default = 0 sec (use with --automate or -A only) -C, --count Number of iterations of automation testcase. Default = 1 (use with --automate or -A only) --capture-gap Number of milliseconds between successive image/video capture. Default = 250 msec (use with --automate and --capture-auto only) --capture-time Capture video for specified time in seconds. Default = 10 sec (use with --automate and --capture-auto only) --toggle-mode Toggle between still and video capture modes for count number of times (use with --automate or -A only) --toggle-sensor Toggle between sensor-id 0 and 1 (use with --automate or -A only) --capture-auto Do image/video capture in automation mode for count number of times(use with --automate or -A only) --enum-wb Enumerate all white-balance modes for count number of times (use with --automate or -A only) --enum-scm Enumerate all scene modes for count number of times (use with --automate or -A only) --enum-ce Enumerate all color-effect modes for count number of times (use with --automate or -A only) --enum-ae Enumerate all auto-exposure modes for count number of times (use with --automate or -A only) --enum-f Enumerate all flash modes for count number of times (use with --automate or -A only) --enum-fl Enumerate all flicker detection and avoidance modes for count number of times (use with --automate or -A only) --enum-ct Enumerate contrast value through 0 to 1 by a step of 0.1 for count number of times (use with --automate or -A only) --enum-st Enumerate saturation value through 0 to 2 by a step of 0.1 for count number of times (use with --automate or -A only) --enum-ee Enumerate edge-enhancement value through 0 to 1 by a step of 0.1 for count number of times (use with --automate or -A only) --enum-ts Enumerate TNR strength value through 0 to 1 by a step of 0.1 for count number of times (use with --automate or -A only) --enum-tnr Enumerate all TNR modes for count number of times (use with --automate or -A only) --streaming-mode [For CSI Only] Enable streaming mode (1=stream only, 2=stream+record) --streaming-file File to stream instead of camera input Supported resolutions in case of CSI Camera (2) : 640x480 (3) : 1280x720 (4) : 1920x1080 (5) : 2104x1560 (6) : 2592x1944 (7) : 2616x1472 (8) : 3840x2160 (9) : 3896x2192 (10): 4208x3120 (11): 5632x3168 (12): 5632x4224 Runtime CSI Camera Commands: Help : 'h' Quit : 'q' Set Capture Mode: mo:<val> (1): image (2): video Get Capture Mode: gmo Set Sensor Id (0 to 10): sid:<val> e.g., sid:2 Get Sensor Id: gsid Set sensor orientation: so:<val> (0): none (1): Rotate counter-clockwise 90 degrees (2): Rotate 180 degrees (3): Rotate clockwise 90 degrees Get sensor orientation: gso Set Whitebalance Mode: wb:<val> (0): off (1): auto (2): incandescent (3): fluorescent (4): warm-fluorescent (5): daylight (6): cloudy-daylight (7): twilight (8): shade (9): manual Get Whitebalance Mode: gwb Set Scene-Mode: scm:<val> (0): face-priority (1): action (2): portrait (3): landscape (4): night (5): night-portrait (6): theatre (7): beach (8): snow (9): sunset (10): steady-photo (11): fireworks (12): sports (13): party (14): candle-light (15): barcode Get Scene-Mode: gscm Set Color Effect Mode: ce:<val> (1): off (2): mono (3): negative (4): solarize (5): sepia (6): posterize (7): aqua Get Color Effect Mode: gce Set Auto-Exposure Mode: ae:<val> (1): off (2): on (3): OnAutoFlash (4): OnAlwaysFlash (5): OnFlashRedEye Get Auto-Exposure Mode: gae Set Flash Mode: f:<val> (0): off (1): on (2): torch (3): auto Get Flash Mode: gf Set Flicker Detection and Avoidance Mode: fl:<val> (0): off (1): 50Hz (2): 60Hz (3): auto Get Flicker Detection and Avoidance Mode: gfl Set Contrast (0 to 1): ct:<val> e.g., ct:0.75 Get Contrast: gct Set Saturation (0 to 2): st:<val> e.g., st:1.25 Get Saturation: gst Set Exposure Time in seconds: ext:<val> e.g., ext:0.033 Get Exposure Time: gext Set Auto Exposure Lock(0/1): ael:<val> e.g., ael:1 Get Auto Exposure Lock: gael Set Edge Enhancement (0 to 1): ee:<val> e.g., ee:0.75 Get Edge Enhancement: gee Set ROI for AE: It needs five values, ROI coordinates(top,left,bottom,right) and weight in that order aer:<val> e.g., aer:20 20 400 400 1.2 Get ROI for AE: gaer Set ROI for AWB: It needs five values, ROI coordinates(top,left,bottom,right) and weight in that order wbr:<val> e.g., wbr:20 20 400 400 1.2 Get ROI for AWB: gwbr Set FPS range: It needs two values, FPS Range (low, high) in that order fpsr:<val> e.g., fpsr:15 30 Get FPS range: gfpsr Set WB Gains: It needs four values (R, GR, GB, B) in that order wbg:<val> e.g., wbg:1.2 2.2 0.8 1.6 Get WB Gains: gwbg Set TNR Strength (0 to 1): ts:<val> e.g., ts:0.75 Get TNR Strength: gts Set TNR Mode: tnr:<val> (0): NoiseReduction_Off (1): NoiseReduction_Fast (2): NoiseReduction_HighQuality Get TNR Mode: gtnr Capture: enter 'j' OR followed by a timer (e.g., jx5000, capture after 5 seconds) OR followed by multishot count (e.g., j:6, capture 6 images) timer/multihot values are optional, capture defaults to single shot with timer=0s Start Recording : enter '1' Stop Recording : enter '0' Video snapshot : enter '2' (While recording video) Set Preview Resolution: pcr:<val> e.g., pcr:3 (2) : 640x480 (3) : 1280x720 (4) : 1920x1080 (5) : 2104x1560 (6) : 2592x1944 (7) : 2616x1472 (8) : 3840x2160 (9) : 3896x2192 (10): 4208x3120 (11): 5632x3168 (12): 5632x4224 Note - For preview resolutions 4208x3120 and more use option --svs=nveglglessink Get Preview Resolution: gpcr Set Image Resolution: icr:<val> e.g., icr:3 (2) : 640x480 (3) : 1280x720 (4) : 1920x1080 (5) : 2104x1560 (6) : 2592x1944 (7) : 2616x1472 (8) : 3840x2160 (9) : 3896x2192 (10): 4208x3120 (11): 5632x3168 (12): 5632x4224 Get Image Capture Resolution: gicr Set Video Resolution: vcr:<val> e.g., vcr:3 (2) : 640x480 (3) : 1280x720 (4) : 1920x1080 (5) : 2104x1560 (6) : 2592x1944 (7) : 2616x1472 (8) : 3840x2160 (9) : 3896x2192 Get Video Capture Resolution: gvcr Runtime USB Camera Commands: Help : 'h' Quit : 'q' Set Capture Mode: mo:<val> (1): image (2): video Get Capture Mode: gmo Capture: enter 'j' OR followed by a timer (e.g., jx5000, capture after 5 seconds) OR followed by multishot count (e.g., j:6, capture 6 images) timer/multihot values are optional, capture defaults to single shot with timer=0s Start Recording : enter '1' Stop Recording : enter '0' Set Preview Resolution: pcr:<val> e.g., pcr:2 (0) : 176x144 (1) : 320x240 (2) : 640x480 (3) : 1280x720 (4) : 1920x1080 NOTE: Preview/Encode resolution will be same as Capture resolution for USB-Camera Get Preview Resolution: gpcr Get Image Capture Resolution: gicr Get Video Capture Resolution: gvcr Set Capture Device Node: cdn:<val> e.g., cdn:0 (0): /dev/video0 (1): /dev/video1 (2): /dev/video2 Get Capture Device Node: gcdn Runtime encoder configuration options: Set Encoding Bit-rate(in bytes): br:<val> e.g., br:4000000 Get Encoding Bit-rate(in bytes): gbr Set Encoding Profile(only for H.264): ep:<val> e.g., ep:1 (0): Baseline (1): Main (2): High Get Encoding Profile(only for H.264): gep Force IDR Frame on video Encoder(only for H.264): Enter 'f'
Capture snapshots
Sometimes when the board has been just flashed you need to run reboot in order to run nvgstcapture-1.0 successfully. To take snapshots:
nvgstcapture-1.0 #then press j to take an snapshot q
Resolutions available to create snapshot:
(2) : 640x480 (3) : 1280x720 (4) : 1920x1080 (5) : 2104x1560 (6) : 2592x1944 (7) : 2616x1472 (8) : 3840x2160 (9) : 3896x2192 (10): 4208x3120 (11): 5632x3168 (12): 5632x4224
nvgstcapture-1.0 -m 1 --image-res=10 #set 1 to snapshot mode
In general the application is consuming 15% of each of four cores. It is always displaying video this could affect.
Capture and record video
nvgstcapture-1.0 -m 2 # set the mode in video 1 # start video recording 2 # take a snapshot 0 # stop video recording
In case of video it should support:
(2) : 640x480 (3) : 1280x720 (4) : 1920x1080 (5) : 2104x1560 (6) : 2592x1944 (7) : 2616x1472 (8) : 3840x2160 (9) : 3896x2192
However, it is not possible to set other value than 2,3,4,5 up to 9.
nvgstcapture-1.0 -m 2 --video-res=5
top
top - 22:15:09 up 2:30, 4 users, load average: 0.47, 0.45, 0.30 Tasks: 267 total, 1 running, 266 sleeping, 0 stopped, 0 zombie %Cpu(s): 11.0 us, 6.0 sy, 0.0 ni, 83.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 8041332 total, 754840 free, 1611400 used, 5675092 buff/cache KiB Swap: 0 total, 0 free, 0 used. 6303032 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1639 root 20 0 9.979g 264612 45284 S 52.3 3.3 6:14.66 nvcamera-daemon 27513 nvidia 20 0 815040 13932 10272 S 4.3 0.2 0:01.48 nvgstcapture-1.
There is a daemon and a pipeline. Interesting...
While recording the pipeline (nvgstcapture) increases the ARM load to 10% and then it goes down again, even with the highest resolution. It will be interesting to understand what is the daemon doing.