GStreamer pipelines for DM8168 DM8148 DM385 RidgeRun openmax
|
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