1,189
edits
Line 913: | Line 913: | ||
*Latency=251ms | *Latency=251ms | ||
<br> | <br> | ||
= | = nvgstcapture-1.0 = | ||
<br> | |||
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 Linx 4 Tegra (L4T), you can read about it at [https://devtalk.nvidia.com/default/topic/898129/jetson-tx1/enabling-camera-on-jetson-tx1-board/ Nvidia Embedded Computing Forum] | |||
<pre> | |||
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' | |||
</pre> | |||
== 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: | |||
<pre> | |||
nvgstcapture-1.0 | |||
#then press j to take an snapshot | |||
q | |||
</pre> | |||
Resolutions available to create snapshot: | |||
<pre> | |||
(2) : 640x480 | |||
(3) : 1280x720 | |||
(4) : 1920x1080 | |||
(5) : 2104x1560 | |||
(6) : 2592x1944 | |||
(7) : 2616x1472 | |||
(8) : 3840x2160 | |||
(9) : 3896x2192 | |||
(10): 4208x3120 | |||
(11): 5632x3168 | |||
(12): 5632x4224 | |||
</pre> | |||
<pre> | |||
nvgstcapture-1.0 -m 1 --image-res=10 #set 1 to snapshot mode | |||
</pre> | |||
In general the application is consuming 15% of each of four cores. It is always displaying video this could affect. | |||
== Capture and record video == | |||
<pre> | |||
nvgstcapture-1.0 -m 2 # set the mode in video | |||
1 # start video recording | |||
2 # take a snapshot | |||
0 # stop video recording | |||
</pre> | |||
In case of video it should support: | |||
<pre> | |||
(2) : 640x480 | |||
(3) : 1280x720 | |||
(4) : 1920x1080 | |||
(5) : 2104x1560 | |||
(6) : 2592x1944 | |||
(7) : 2616x1472 | |||
(8) : 3840x2160 | |||
(9) : 3896x2192 | |||
</pre> | |||
However, it is not possible to set other value than 2,3,4,5 up to 9. | |||
<pre> | |||
nvgstcapture-1.0 -m 2 --video-res=5 | |||
</pre> | |||
'''top''' | |||
<pre> | |||
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. | |||
</pre> | |||
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. | |||
= How to Contact = | = How to Contact = | ||