工具/软件:
您好!
我将使用 AM62A7 EVM、一个 adrucam v3link d-ch 适配器板插入 FPD3 ISX031摄像头模块。 (这是一款 YUV ~3MP 摄像头模块、不需要 ISP)
我在~30fps 时摄像头流式传输没有问题、但我运行的 gstreamer 流水线只能处理~7ish 帧/秒:
`gst-launch-1.0 -v v4l2src device=/dev/video4 ! 排队! 视频/x-RAW、宽度=1920、高度=1536、格式=UYVY、帧速率=30/1! 视频转换标度! video/x-raw、宽度=1920、高度=1536、格式=NV12、帧速率=30/1! 排队! tiovxmultiscaler! 排队! video/x-raw、format=NV12、width=1920、height=1080! 排队! fpsdisplaysink fps-update-interval=5000 name=rgb text-overlay=false sync=false video-sink="kmssink driver-name=tidss force-modesetting=true sync=false"`
当我`设置` v4l2src IO-mode=5 时、gstreamer 流水线甚至无法启动、说没有存储器:
root@am62xx-evm:/opt/edgeai-gst-apps# gst-launch-1.0 -v v4l2src device=/dev/video4 io-mode=5 ! queue ! video/x-raw, width=1920, height=1536, format=UYVY, framerate=30/1 ! videoconvertscale ! video/x-raw, width=1920, height=1536, format=NV12, framerate=30/1 ! queue ! tiovxmultiscaler ! queue ! video/x-raw, format=NV12, width=1920, height=1080 ! queue ! fpsdisplaysink fps-update-interval=5000 name=rgb text-overlay=false sync=false video-sink="kmssink driver-name=tidss force-modesetting=true sync=false" APP: Init ... !!! 172.756917 s: MEM: Init ... !!! 172.756979 s: MEM: Initialized DMA HEAP (fd=8) !!! 172.757170 s: MEM: Init ... Done !!! 172.757190 s: IPC: Init ... !!! 172.774748 s: IPC: Init ... Done !!! REMOTE_SERVICE: Init ... !!! REMOTE_SERVICE: Init ... Done !!! 172.781660 s: GTC Frequency = 200 MHz APP: Init ... Done !!! 172.785977 s: VX_ZONE_INFO: Globally Enabled VX_ZONE_ERROR 172.786041 s: VX_ZONE_INFO: Globally Enabled VX_ZONE_WARNING 172.786065 s: VX_ZONE_INFO: Globally Enabled VX_ZONE_INFO 172.788326 s: VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-0 172.788516 s: VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-1 172.788739 s: VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-2 172.788861 s: VX_ZONE_INFO: [tivxPlatformCreateTargetId:134] Added target MPU-3 172.788881 s: VX_ZONE_INFO: [tivxInitLocal:126] Initialization Done !!! 172.788895 s: VX_ZONE_INFO: Globally Disabled VX_ZONE_INFO Setting pipeline to PAUSED ... Pipeline is live and does not need PREROLL ... /GstPipeline:pipeline0/GstFPSDisplaySink:rgb/GstKMSSink:kmssink0: display-width = 1920 /GstPipeline:pipeline0/GstFPSDisplaySink:rgb/GstKMSSink:kmssink0: display-height = 1200 /GstPipeline:pipeline0/GstFPSDisplaySink:rgb/GstKMSSink:kmssink0: sync = false Pipeline is PREROLLED ... Setting pipeline to PLAYING ... New clock: GstSystemClock /GstPipeline:pipeline0/GstV4l2Src:v4l2src0.GstPad:src: caps = video/x-raw, width=(int)1920, height=(int)1536, format=(string)UYVY, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709 /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw, width=(int)1920, height=(int)1536, format=(string)UYVY, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709 /GstPipeline:pipeline0/GstQueue:queue0.GstPad:sink: caps = video/x-raw, width=(int)1920, height=(int)1536, format=(string)UYVY, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709 /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:src: caps = video/x-raw, width=(int)1920, height=(int)1536, format=(string)UYVY, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709 /GstPipeline:pipeline0/GstVideoConvertScale:videoconvertscale0.GstPad:src: caps = video/x-raw, width=(int)1920, height=(int)1536, framerate=(fraction)30/1, interlace-mode=(string)progressive, format=(string)NV12, colorimetry=(string)bt709 /GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:src: caps = video/x-raw, width=(int)1920, height=(int)1536, framerate=(fraction)30/1, interlace-mode=(string)progressive, format=(string)NV12, colorimetry=(string)bt709 /GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = video/x-raw, width=(int)1920, height=(int)1536, framerate=(fraction)30/1, interlace-mode=(string)progressive, format=(string)NV12, colorimetry=(string)bt709 /GstPipeline:pipeline0/GstQueue:queue1.GstPad:sink: caps = video/x-raw, width=(int)1920, height=(int)1536, framerate=(fraction)30/1, interlace-mode=(string)progressive, format=(string)NV12, colorimetry=(string)bt709 /GstPipeline:pipeline0/GstCapsFilter:capsfilter1.GstPad:sink: caps = video/x-raw, width=(int)1920, height=(int)1536, framerate=(fraction)30/1, interlace-mode=(string)progressive, format=(string)NV12, colorimetry=(string)bt709 /GstPipeline:pipeline0/GstTIOVXMultiScaler:tiovxmultiscaler0.GstTIOVXMultiScalerPad:src_0: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstQueue:queue2.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstQueue:queue2.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstCapsFilter:capsfilter2.GstPad:src: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstQueue:queue3.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstQueue:queue3.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstCapsFilter:capsfilter2.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstFPSDisplaySink:rgb.GstGhostPad:sink.GstProxyPad:proxypad0: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstFPSDisplaySink:rgb/GstKMSSink:kmssink0.GstPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstFPSDisplaySink:rgb.GstGhostPad:sink: caps = video/x-raw, format=(string)NV12, width=(int)1920, height=(int)1080, framerate=(fraction)30/1 /GstPipeline:pipeline0/GstTIOVXMultiScaler:tiovxmultiscaler0.GstTIOVXMultiScalerPad:sink: caps = video/x-raw, width=(int)1920, height=(int)1536, framerate=(fraction)30/1, interlace-mode=(string)progressive, format=(string)NV12, colorimetry=(string)bt709 /GstPipeline:pipeline0/GstVideoConvertScale:videoconvertscale0.GstPad:sink: caps = video/x-raw, width=(int)1920, height=(int)1536, format=(string)UYVY, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709 /GstPipeline:pipeline0/GstCapsFilter:capsfilter0.GstPad:sink: caps = video/x-raw, width=(int)1920, height=(int)1536, format=(string)UYVY, framerate=(fraction)30/1, interlace-mode=(string)progressive, colorimetry=(string)bt709 ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Failed to allocate required memory. Additional debug info: /usr/src/debug/gstreamer1.0-plugins-good/1.22.12/sys/v4l2/gstv4l2src.c(950): gst_v4l2src_decide_allocation (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Buffer pool activation failed Execution ended after 0:00:00.065207955 Setting pipeline to NULL ... ERROR: from element /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: Internal data stream error. Additional debug info: /usr/src/debug/gstreamer1.0/1.22.12/libs/gst/base/gstbasesrc.c(3134): gst_base_src_loop (): /GstPipeline:pipeline0/GstV4l2Src:v4l2src0: streaming stopped, reason not-negotiated (-4) Freeing pipeline ... APP: Deinit ... !!! REMOTE_SERVICE: Deinit ... !!! REMOTE_SERVICE: Deinit ... Done !!! 173.074086 s: IPC: Deinit ... !!! 173.074615 s: IPC: DeInit ... Done !!! 173.074656 s: MEM: Deinit ... !!! 173.074676 s: DDR_SHARED_MEM: Alloc's: 4 alloc's of 7536696 bytes 173.074689 s: DDR_SHARED_MEM: Free's : 4 free's of 7536696 bytes 173.074698 s: DDR_SHARED_MEM: Open's : 0 allocs of 0 bytes 173.074714 s: MEM: Deinit ... Done !!! APP: Deinit ... Done !!!
如何让系统以30 FPS 显示输出?
谢谢!