gstreamer

Important

preview

  • device=/dev/video 뒤의 숫자는 camera의 번호입니다.

#!/bin/bash

export DISPLAY=:0
WIDTH=3840
HEIGHT=2160

gst-launch-1.0 \
nvv4l2camerasrc device=/dev/video0 \
! "video/x-raw(memory:NVMM),format=(string)UYVY,width=(int)$WIDTH,height=(int)$HEIGHT,framerate=(fraction)30/1" \
! nvvidconv \
! "video/x-raw(memory:NVMM),format=(string)NV12" \
! nv3dsink sync=false -e

jpeg capture

  • filesink location=test.jpg 뒤의 test.jpg외의 파일명을 입력하면 해당 파일명으로 저장됩니다.

#!/bin/bash

export DISPLAY=:0
WIDTH=3840
HEIGHT=2160

gst-launch-1.0 \
nvv4l2camerasrc device=/dev/video0 num-buffers=1 \
! "video/x-raw(memory:NVMM),format=(string)UYVY,width=(int)$WIDTH,height=(int)$HEIGHT,framerate=(fraction)30/1" \
! nvvidconv \
! "video/x-raw(memory:NVMM),format=(string)NV12" \
! nvjpegenc \
! filesink location=test.jpg

Encoding h265 and save it to file

Display it simultaneously

#!/bin/sh

export DISPLAY=:0

WIDTH=3840
HEIGHT=2160
FRAMERATE=30

gst-launch-1.0 nvv4l2camerasrc device=/dev/video$1 \
! "video/x-raw(memory:NVMM),format=(string)UYVY, width=(int)$WIDTH, height=(int)$HEIGHT, framerate=(fraction)$FRAMERATE/1" \
! nvvidconv \
! "video/x-raw(memory:NVMM),format=(string)NV12, width=(int)$WIDTH, height=(int)$HEIGHT, framerate=(fraction)$FRAMERATE/1" \
! tee name=t \
t. \
! queue \
! nvegltransform \
! nveglglessink sync=false async=false \
t. \
! queue \
! nvv4l2h265enc bitrate=10000000 \
! h265parse \
! matroskamux \
! filesink location=$2