GStreamer pipelines for DM8168 DM8148 DM385 RidgeRun openmax

From RidgeRun Developer Wiki
Problems running the pipelines shown on this page? Please see our GStreamer Debugging guide for help.


Introduction

On this page you are going to find GStreamer pipelines for the following boards:

  • DM8168 EVM
  • DM8168 Z3[Test Progress Updated]
  • DM8148 EVM [Pending]
  • DM385 [Pending]

The pipelines provided will show multimedia functionality such as live preview, encoding, decoding and streaming. Pipelines for the DM8168EVM and DM8168 Z3 hardware are tested with rromx plugins.

For the tests, other equipment like HD source, monitor and host PC is needed. Here is a table with the colored boxes that will contain the pipelines for each system:

DM8168 EVM DM8168 Z3 DM8148 DM385 Host PC

These pipelines are for the RidgeRun version of the OMX plugins for DM8168. For the old TI based release please check here

Notes

Disable graphics plane for display

echo 0 > /sys/devices/platform/vpss/graphics0/enabled

Or

fbset -disable

DM8168 TVP

The DM8168 has a TVP7002 chip, depending on your board (EVM or Z3) the TVP will have a different initialization, make sure that your TVP hardware is up before running the pipelines.

DM8168 EVM DM8168 Z3 DM8148 EVM
TVP initialization omx_tvp init_7611_edid.sh configure-tvp

DM8168

Maintainer notes

TEST CONDITIONS

DM8168 EVM DM8168 Z3
gstreamer 0.10.36
gst-plugins-base 0.10.36
gst-plugins-good 0.10.31
gst-plugins-ugly 0.10.19
gst-plugins-bad 0.10.23
gst-ffmpeg 0.10.13
gst-rtsp-sink 17488 (gateway)
ezsdk 5_05_02_00
libOMX_dm81xx 5_03_01_15
gst-rr-openmax-dm81xx dfb7417da94883a5d5cd118a306545408fb41226 (gh)

Preview

Preview: 720p30 videotest pattern

gst-launch videotestsrc  peer-alloc=false ! 'video/x-raw-yuv,format=(fourcc)NV12,width=(int)1280,height=(int)720,framerate=(fraction)30/1' ! omx_scaler ! v4l2sink device=/dev/video1 sync=false -v
gst-launch videotestsrc  peer-alloc=false ! 'video/x-raw-yuv,format=(fourcc)NV12,width=(int)1280,height=(int)720,framerate=(fraction)30/1' ! omx_scaler ! v4l2sink device=/dev/video2 sync=false -v

Preview: 720p30 videotest pattern + Upscale

gst-launch videotestsrc  peer-alloc=false ! 'video/x-raw-yuv,format=(fourcc)NV12,width=(int)1280,height=(int)720,framerate=(fraction)30/1' ! omx_scaler ! 'video/x-raw-yuv,format=(fourcc)YUY2,width=(int)1920,height=(int)1080,framerate=(fraction)30/1' ! v4l2sink device=/dev/video1 sync=false -v

Preview: 720p30 videotest pattern + Downscale

gst-launch videotestsrc  peer-alloc=false ! 'video/x-raw-yuv,format=(fourcc)NV12,width=(int)1280,height=(int)720,framerate=(fraction)30/1' ! omx_scaler ! 'video/x-raw-yuv,format=(fourcc)YUY2,width=(int)640,height=(int)480,framerate=(fraction)30/1' ! v4l2sink device=/dev/video1 sync=false -v

Live Preview

Live Preview: 1080p30 (v4l2)

gst-launch -e v4l2src device=/dev/video0 always-copy=false queue-size=8  ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)30/1' ! omxbufferalloc numBuffers=8 ! omx_scaler ! v4l2sink device=/dev/video1

Live Preview: 1080p60 (v4l2)

gst-launch -e v4l2src device=/dev/video0 always-copy=false queue-size=8 ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! omxbufferalloc numBuffers=8 ! omx_scaler ! v4l2sink device=/dev/video1

Live Preview: 1080p30 (omx)

gst-launch -e omx_camera ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)30/1' ! queue ! omx_scaler ! v4l2sink device=/dev/video1 sync=false -v

Live Preview: 1080p60 (omx)

gst-launch -e omx_camera ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! queue ! omx_scaler ! v4l2sink device=/dev/video1 sync=false -v

Encoding

Encoding: 1080p30 videotest in H.264 (no container) to a file

gst-launch videotestsrc peer-alloc=false ! 'video/x-raw-yuv,format=(fourcc)NV12,width=(int)1920,height=(int)1080,framerate=(fraction)30/1' ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! filesink location=sample.h264 -v

Encoding: 1080p30 videotest in H.264 + QuickTime to a file

gst-launch -e videotestsrc peer-alloc=false ! 'video/x-raw-yuv,format=(fourcc)NV12,width=(int)1920,height=(int)1080,framerate=(fraction)30/1' ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! h264parse ! qtmux ! filesink location=sample.mov -v

Encoding: 1080p30 videotest in H.264 + MP4 to a file

gst-launch -e videotestsrc peer-alloc=false ! 'video/x-raw-yuv,format=(fourcc)NV12,width=(int)1920,height=(int)1080,framerate=(fraction)30/1' ! omx_h264enc force-idr-period=30 i-period=30 ! h264parse ! mp4mux ! filesink location=sample.mp4 -v

Encoding: 1080p30 videotest in H.264 + MPEG-TS to a file

gst-launch videotestsrc peer-alloc=false ! 'video/x-raw-yuv,format=(fourcc)NV12,width=(int)1920,height=(int)1080,framerate=(fraction)30/1' ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! mpegtsmux ! filesink location=sample.m2ts -v

Encoding: Videotest + M3/JPEG to file

gst-launch videotestsrc peer-alloc=false num-buffers=1 ! 'video/x-raw-yuv,format=(fourcc)NV12,width=(int)1920,height=(int)1080,framerate=(fraction)30/1' ! omx_jpegenc num-buffers=1 ! filesink location=sample.jpeg

Encoding: Audiotest + WAV encode (no container) to a file

gst-launch audiotestsrc ! 'audio/x-raw-int,rate=(int)44100,channels=(int)2,endianness=(int)1234,signed=(boolean)true,width=(int)16,depth=(int)16' ! wavenc ! filesink location=sample.wav

Recording: (v4l2) 1080p60 + H.264 encode (no container) to a file

gst-launch -e v4l2src device=/dev/video0 always-copy=false queue-size=8  ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! omxbufferalloc numBuffers=8 ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! filesink location=capture60.h264 -v

Recording: (v4l2) 1080p60 + H.264 encode + MPEG-TS to a file

gst-launch -e v4l2src device=/dev/video0 always-copy=false queue-size=8  ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! omxbufferalloc numBuffers=8 ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! mpegtsmux ! filesink location=capture60.m2ts -v

Recording: (omx) 1080p60 + H.264 encode (no container) to a file

gst-launch -e omx_camera ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! filesink location=omxcapture60.h264 -v

Recording: (omx) 1080p60 + H.264 encode + MPEG-TS to a file

gst-launch -e omx_camera ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! mpegtsmux ! filesink location=omxcapture60.m2ts -v

Recording: (omx) 720p60 + H.264 encode + QT to a file

gst-launch -e omx_camera ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1280,height=720,framerate=(fraction)60/1' ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! h264parse ! qtmux ! filesink location=omxcapture60.mp4 

Recording: Audio + AAC + MPEG-TS to a file

gst-launch alsasrc ! omx_aacenc output-format=4 ! aacparse ! mpegtsmux ! filesink location=aacsample.m2ts -v

Recording: (omx) 1080p60 (H.264) + Audio (AAC) + MPEG-TS to a file

gst-launch -e omx_camera ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! mux. alsasrc ! omx_aacenc output-format=4 ! aacparse ! mux. mpegtsmux name=mux ! filesink location=avsample.m2ts sync=false -v

Decoding

Decoding: Display H.264 file

gst-launch filesrc location=sample.h264 ! 'video/x-h264, width=(int)1920, height=(int)1080, framerate=(fraction)30/1, stream-format=(string)byte-stream, alignment=(string)au' ! queue ! omx_h264dec ! omx_scaler ! v4l2sink device=/dev/video1 sync=false -v

Decoding: Display H.264 file

gst-launch filesrc location=omxcapture60.mp4 ! qtdemux ! queue ! h264parse ! 'video/x-h264,stream-format=byte-stream' ! omx_h264dec ! omx_scaler ! v4l2sink device=/dev/video1 enable-last-buffer=false -v

Decoding: Video (H264) + Audio (AAC) 1080@60fps

amixer sset PCM 127
amixer sset 'Line DAC' 118

gst-launch filesrc location= avsample.m2ts  ! tsdemux name=demux ! queue ! h264parse ! 'video/x-h264,stream-format=byte-stream,alignment=au,framerate=60/1' ! omx_h264dec ! omx_scaler ! v4l2sink device=/dev/video1 enable-last-buffer=false demux. ! queue ! aacparse ! omx_aacdec ! alsasink

Streaming

Streaming: videotest + H.264 encode + MPEG-TS + UDP

gst-launch videotestsrc peer-alloc=false ! 'video/x-raw-yuv,format=(fourcc)NV12,width=(int)1920,height=(int)1080,framerate=(fraction)30/1' ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! mpegtsmux ! udpsink host=$HOST_IP_ADDRESS port=3000
vlc udp://@:3000

Streaming: videotest + H.264 encode + RTP payload + UDP

gst-launch videotestsrc peer-alloc=false ! 'video/x-raw-yuv,format=(fourcc)NV12,width=(int)1920,height=(int)1080,framerate=(fraction)30/1' ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! rtph264pay ! udpsink host=$HOST_IP_ADDRESS port=3000 -v

Having the -v option at the end of the pipeline will show the caps negotiation of the elements. The decoding pipe on the host will need the caps of the udpsink srcpad:

gst-launch ..
.
.
/GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0.GstPad:src: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"J0KAKouVAPAET8qAAA\\=\\=\\,KN4BriAA\", payload=(int)96, ssrc=(uint)867669194, clock-base=(uint)146284672, seqnum-base=(uint)58348
.
.

With an editor remove the extra spaces (\):

application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)"J0KAKouVAPAET8qAAA\=\=\,KN4BriAA", payload=(int)96, ssrc=(uint)867669194, clock-base=(uint)146284672, seqnum-base=(uint)58348
gst-launch udpsrc port=3000 ! 'application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)"J0KAKouVAPAET8qAAA\=\=\,KN4BriAA", payload=(int)96, ssrc=(uint)867669194, clock-base=(uint)146284672, seqnum-base=(uint)58348' ! queue ! rtph264depay ! ffdec_h264 ! xvimagesink -v

Streaming: Capture(v4l2) 1080p60 + H.264 + MPEG-TS + UDP

gst-launch -e v4l2src device=/dev/video0 always-copy=false queue-size=8 ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! omxbufferalloc numBuffers=8 ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! mpegtsmux ! udpsink host=$HOST_IP_ADDRESS port=3000
vlc udp://@:3000

Streaming: Capture 1080p60 (H.264) + Audio (AAC) + MPEG-TS + UDP

gst-launch -e omx_camera ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1,buffer-count-requested=4' ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! mux. alsasrc ! omx_aacenc output-format=4 ! aacparse ! mux. mpegtsmux name=mux ! udpsink host=$HOST_IP_ADDRESS port=3000
vlc udp://@:3000

Streaming: Capture(v4l2) 1080p60 + H.264 + RTP payload + UDP

gst-launch -e v4l2src device=/dev/video0 always-copy=false queue-size=8 ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! omxbufferalloc numBuffers=8 ! omx_h264enc force-idr-period=30 i-period=30 bytestream=true ! rtph264pay ! udpsink host=$HOST_IP_ADDRESS port=3000 -v

Having the -v option at the end of the pipeline will show the caps negotiation of the elements. The decoding pipe on the host will need the rtpcaps:

gst-launch ..
.
.
/GstPipeline:pipeline0/GstRtpH264Pay:rtph264pay0.GstPad:src: caps = application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)\"J0KAKouVAPAET8qAAA\\=\\=\\,KN4BriAA\", payload=(int)96, ssrc=(uint)867669194, clock-base=(uint)146284672, seqnum-base=(uint)58348
.
.

With an editor remove the extra spaces (\):

'application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)"J0KAKouVAPAET8qAAA\=\=\,KN4BriAA", payload=(int)96, ssrc=(uint)867669194, clock-base=(uint)146284672, seqnum-base=(uint)58348'
gst-launch udpsrc port=3000 ! 'application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)"J0KAKouVAPAET8qAAA\=\=\,KN4BriAA", payload=(int)96, ssrc=(uint)867669194, clock-base=(uint)146284672, seqnum-base=(uint)58348' ! queue ! rtph264depay ! ffdec_h264 ! xvimagesink -v

RTSP - Video H264 1080@30fps

rr_rtsp_server " ( omx_camera skip-frames=1 output-buffers=10  ! video/x-raw-yuv, format=(fourcc)NV12, width=1920, height=1080, framerate=(fraction)30/1, buffer-count-requested=10 ! omx_tvp ! omx_h264enc force-idr-period=4 i-period=4 bitrate=10000000 \
profile=1 ! gstperf print-arm-load=true print-fps=true ! queue ! video/x-h264, width=(int)1920, height=(int)1080, stream-format=(string)byte-stream, alignment=(string)au ! rtph264pay name=pay0 )"
gst-launch-0.10 rtspsrc location=rtsp://<IPADDRESS>:/test ! rtph264depay ! queue ! ffdec_h264 ! xvimagesink -v

RTSP - Video H264 1080@60fps

rr_rtsp_server " ( omx_camera output-buffers=10  ! video/x-raw-yuv, format=(fourcc)NV12, width=1920, height=1080, framerate=(fraction)60/1, buffer-count-requested=10 ! omx_tvp ! omx_h264enc force-idr-period=4 i-period=4 bitrate=10000000 \
profile=1 ! gstperf print-arm-load=true print-fps=true ! queue ! video/x-h264, width=(int)1920, height=(int)1080, stream-format=(string)byte-stream, alignment=(string)au ! rtph264pay name=pay0 )"
gst-launch-0.10 rtspsrc location=rtsp://<IPADDRESS>:/test ! rtph264depay ! queue ! ffdec_h264 ! xvimagesink -v

RTSP - Video (H264) + Audio (AAC) 1080@30fps

rr_rtsp_server " ( omx_camera skip-frames=1 output-buffers=10  ! video/x-raw-yuv, format=(fourcc)NV12, width=1920, height=1080, framerate=(fraction)30/1, buffer-count-requested=10 ! omx_tvp ! omx_h264enc force-idr-period=4 i-period=4 bitrate=10000000 \
profile=1 ! gstperf print-arm-load=true print-fps=true ! queue ! video/x-h264, width=(int)1920, height=(int)1080, stream-format=(string)byte-stream, alignment=(string)au ! rtph264pay name=pay0 pt=96 alsasrc latency-time=20000 buffer-time=800000 \
! audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)48000, channels=(int)2 ! omx_aacenc output-format=4 ! queue ! aacparse ! rtpmp4apay name=pay1 pt=97 ) "
VLC

RTSP - Video (H264) + Audio (AAC) 1080@60fps

rr_rtsp_server " ( omx_camera output-buffers=10  ! video/x-raw-yuv, format=(fourcc)NV12, width=1920, height=1080, framerate=(fraction)60/1, buffer-count-requested=10 ! omx_tvp ! omx_h264enc force-idr-period=4 i-period=4 bitrate=10000000 \
profile=1 ! gstperf print-arm-load=true print-fps=true ! queue ! video/x-h264, width=(int)1920, height=(int)1080, stream-format=(string)byte-stream, alignment=(string)au ! rtph264pay name=pay0 pt=96 alsasrc latency-time=20000 buffer-time=800000 \
! audio/x-raw-int, endianness=(int)1234, signed=(boolean)true, width=(int)16, depth=(int)16, rate=(int)48000, channels=(int)2 ! omx_aacenc output-format=4 ! queue ! aacparse ! rtpmp4apay name=pay1 pt=97 ) "
VLC

Dual capture

Dual capture: Video recording (H264) 1080@30fps | taking snapshots JPEG - EVM & Z3 board

DM8168 Z3 board

Recording

gst-launch -e v4l2src device=/dev/video0 num-buffers=1500 always-copy=false queue-size=8  ! 'video/x-raw-yuv-strided,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' !  \
omxbufferalloc numBuffers=12 ! omx_h264enc output-buffers=16 input-buffers=10 force-idr-period=30 i-period=30 bitrate=16000000  ! queue ! rr_h264parser ! mp4mux dts-method=0 ! filesink location= video.mp4  

Snapshots

gst-launch -e v4l2src device=/dev/video5 num-buffers=1 always-copy=false queue-size=8  ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! \
rrbufferalloc numBuffers=10 ! queue  ! ffmpegcolorspace ! jpegenc ! jifmux ! filesink location=snapshot.jpeg

Dual capture: Video recording (H264) 1080@30fps & Video recording (MJPEG on M3) 1080@30fps

DM8168EVM

gst-launch -e omx_camera num-buffers=2000 output-buffers=10 skip-frames=1 ! video/x-raw-yuv, format=\(fourcc\)NV12, width=1920, height=1080, framerate=\(fraction\)30/1, buffer-count-requested=10 ! tee name=t ! queue ! gstperf ! omx_h264enc \
output-buffers=6 input-buffers=4 force-idr-period=16 i-period=16 bitrate=16000000 ! rr_h264parser singleNalu=true  ! qtmux dts-method=0  ! filesink location=videoA.mp4 t. ! queue ! gstperf ! omx_jpegenc ! qtmux dts-method=0  ! filesink location=videoB.mov

Dual Capture and dual display

DM8168EVM

gst-launch v4l2src device=/dev/video0 always-copy=false queue-size=8  ! 'video/x-raw-yuv,format=(fourcc)YUY2,width=1920,height=1080,framerate=(fraction)60/1' !  omxbufferalloc numBuffers=10 ! gstperf ! v4l2sink device=/dev/video2 v4l2src device=/dev/video5 \
always-copy=false queue-size=8  ! 'video/x-raw-yuv,format=(fourcc)YUY2,width=1920,height=1080,framerate=(fraction)60/1' !  omxbufferalloc numBuffers=10 ! gstperf ! v4l2sink device=/dev/video1

Dual H264 encoding 1080p@30fps - single Capture

DM8168 Z3 board

gst-launch -e omx_camera num-buffers=2000 output-buffers=10 skip-frames=1 ! video/x-raw-yuv, format=\(fourcc\)NV12, width=1920, height=1080, framerate=\(fraction\)30/1, buffer-count-requested=10 ! tee \
name=t ! queue ! gstperf ! omx_h264enc output-buffers=6 input-buffers=4 force-idr-period=16 i-period=16 bitrate=16000000 ! rr_h264parser singleNalu=true  ! qtmux dts-method=0  ! filesink \
location=videoA.mp4 t. ! queue ! gstperf ! omx_h264enc output-buffers=6 input-buffers=4 force-idr-period=16 i-period=16 bitrate=16000000 ! rr_h264parser singleNalu=true  ! \
qtmux dts-method=0  ! filesink location=videoB.mp4

Dual Capture - Dual H264 encoding 1080p@30fps/60fps

DM8168 Z3 board

gst-launch -e omx_camera num-buffers=2000 output-buffers=10 skip-frames=1 ! video/x-raw-yuv, format=\(fourcc\)NV12, width=1920, height=1080, framerate=\(fraction\)30/1, buffer-count-requested=10 \
 ! gstperf ! omx_h264enc output-buffers=6 input-buffers=4 force-idr-period=16 i-period=16 bitrate=16000000 ! rr_h264parser singleNalu=true  ! qtmux dts-method=0  ! filesink location=videoA.mp4 v4l2src \ 
device=/dev/video5 always-copy=false queue-size=8  ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' !  omxbufferalloc numBuffers=8 ! gstperf ! omx_h264enc \
output-buffers=6 input-buffers=4 force-idr-period=16 i-period=16 bitrate=16000000 ! rr_h264parser singleNalu=true  ! qtmux dts-method=0  ! filesink location=videoB.mp4

DM8168EVM


gst-launch -e v4l2src device=/dev/video5 always-copy=false queue-size=8  ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' !  omxbufferalloc numBuffers=8 ! gstperf ! omx_h264enc output-buffers=6 input-buffers=4 force-idr-period=16 i-period=16 bitrate=16000000 ! \
 rr_h264parser singleNalu=true  ! qtmux dts-method=0  ! filesink location=videoA.mp4 v4l2src device=/dev/video5 always-copy=false queue-size=8  ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' !  omxbufferalloc numBuffers=8 ! gstperf ! \
omx_h264enc output-buffers=6 input-buffers=4 force-idr-period=16 i-period=16 bitrate=16000000 ! rr_h264parser singleNalu=true  ! qtmux dts-method=0  ! filesink location=videoB.mp4

Dual Capture - Dual H264 encoding 1080p@30fps/60fps - Dual RTP streaming

Here you will find an example but likely when doing streaming of your own pipeline you will need to follow the steps [ here ] to get your correct Caps, after that run a similar pipeline to this one:

DM8168 Z3 board

PORTA=3001
PORTB=3002
IP=<IP addess of your host machine>

gst-launch -e omx_camera output-buffers=10 skip-frames=1 ! video/x-raw-yuv, format=\(fourcc\)NV12, width=1920, height=1080, framerate=\(fraction\)30/1, buffer-count-requested=10 ! gstperf ! \
omx_h264enc output-buffers=6 input-buffers=4 force-idr-period=16 i-period=16 bitrate=16000000 ! rtph264pay ! udpsink host=$IP port=3001 v4l2src device=/dev/video5 always-copy=false\
 queue-size=8  ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' !  omxbufferalloc numBuffers=8 ! gstperf ! omx_h264enc output-buffers=6 input-buffers=4 \
force-idr-period=16 i-period=16 bitrate=16000000 ! rtph264pay ! udpsink host=$IP port=3002 -v

Host PC:

gst-launch-0.10 udpsrc port=$PORTB ! 'application/x-rtp, media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)"J0KAKouVAPAET8qAAA\=\=\,KN4BriAA", \
payload=(int)96, ssrc=(uint)1438616454, clock-base=(uint)1676303462, seqnum-base=(uint)64771' ! rtph264depay ! queue ! ffdec_h264 ! fpsdisplaysink sync=false udpsrc port=$PORTA ! 'application/x-rtp, \
media=(string)video, clock-rate=(int)90000, encoding-name=(string)H264, sprop-parameter-sets=(string)"J0KAKouVAPAET8qAAA\=\=\,KN4BriAA", payload=(int)96, ssrc=(uint)3331867104, clock-base=(uint)3123811109, \
seqnum-base=(uint)15982' ! rtph264depay ! queue ! ffdec_h264 ! fpsdisplaysink sync=false

Dual Capture - Dual H264 encoding 1080p@30fps/60fps - Dual RTSP Streaming

Here you will find an example pipeline that demonstrates dual capture, encoding and RTSP streaming. The dual streaming is based on RidgeRun's proprietary RTSP Sink solution. You can use them as a base for your own pipeline design.

DM8168 Z3 board

PORT=554

gst-launch omx_camera input-interface=VIP1_PORTA output-buffers=10 ! 'video/x-raw-yuv, format=(fourcc)NV12, width=1920, height=1080, framerate=(fraction)30/1, buffer-count-requested=10' ! \
gstperf ! omx_h264enc output-buffers=10 input-buffers=10 i-period=30 force-idr-period=90 bitrate=5000000 ! rr_h264parser singleNalu=true  ! video/x-h264, mapping=/stream1 ! rtspsink name=sink service=$PORT \
v4l2src device=/dev/video5 always-copy=false queue-size=8  ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' ! omxbufferalloc numBuffers=12 ! \
gstperf ! omx_h264enc output-buffers=10 input-buffers=10 force-idr-period=90 i-period=30 bitrate=5000000 ! rr_h264parser singleNalu=true ! video/x-h264,mapping=/stream2 ! sink.

Host PC:

vlc rtsp://<z3.ip.address>/stream1

vlc rtsp://<z3.ip.address>/stream2

Capture 1080p30 and Dual resize

Capture 1080p30 resize to 720p and display, at the same time taking 1080p30 and resize to VGA resolution and display

DM8168EVM

gst-launch v4l2src decimate=2 device=/dev/video0 always-copy=false queue-size=8  ! 'video/x-raw-yuv,format=(fourcc)NV12,width=1920,height=1080,framerate=(fraction)60/1' !  omxbufferalloc numBuffers=10 ! omx_mdeiscaler name=d d.src_01 ! gstperf name=scaler1a ! \
omx_mdeiscaler name=e e.src_01 ! gstperf name=scaler2a ! fakesink e.src_00 ! 'video/x-raw-yuv, width=(int)640, height=(int)480' ! gstperf name=scaler2b ! v4l2sink device=/dev/video2 d.src_00 ! \
gstperf name=scaler1b ! 'video/x-raw-yuv, width=(int)1280, height=(int)720' ! v4l2sink device=/dev/video1