PetaLinux使用Gstreamer传输USB摄像头到DP显示屏

PetaLinux使用Gstreamer传输USB摄像头到DP显示屏

  • 开发板:Xilinx Zynq XCZU9EG
  • 虚拟机:Ubuntu18.04
  • 摄像头格式:jpeg
  • 显示屏接口:DisplayPort

1.PetaLinux安装编译

2.修改petalinux配置,添加关于Gstreamer的部分。

在petalinux目录下,执行petalinux-config -c rootfs

勾选以下项目:

  • Configuration->Filesystem Packages->multimedia->gstreamer-1.0
  • Configuration->Filesystem Packages->misc->gstreamer-1.0-meta-base
  • Configuration->Filesystem Packages->misc->packagegroup-petalinux-gstreamer

在这里插入图片描述

Save and Exit

3.在设备树文件project-spec/meta-user/recipes-bsp/device-tree/files/system-user.dtsi添加:

/* display */
&xlnx_dpdma {
     
  status = "okay";
};

&zynqmp_dpsub {
     
  status = "okay";
};

4.重新编译petalinux,进入petalinux。

5.可能需要Xilinx 专用的DP线,插上显示器,执行modetest -D fd4a0000.zynqmp-display进行测试,显示屏应该会显示图像。

6.插上USB摄像头,在petalinux执行gst-launch-1.0 -v v4l2src device=/dev/video0 ! image/jpeg, width=1920, height=1080 ! jpegparse ! jpegdec ! autovideoconvert ! kmssink bus-id=fd4a0000.zynqmp-display fullscreen-overlay=1 sync=false async=false

其中:

  • device=/dev/video0 是USB摄像头
  • !叹号表示数据的传递管道
  • image/jpeg是USB摄像头的图片格式
  • ! jpegparse ! jpegdec ! autovideoconvert 表示jpeg自动转换格式
  • bus-id=fd4a0000为显示屏
  • sync=false async=false为数据不同步,同步的话太卡了,CPU处理不过来,但是不同步十几分钟后会崩溃

如果遇到Gstreamer error: XDG_RUNTIME_DIR not set in the environment的问题,执行以下命令:

mkdir -pv ~/.cache/xdgr
export XDG_RUNTIME_DIR=$PATH:~/.cache/xdgr
XDG_RUNTIME_DIR=/run/user/1001

PetaLinux使用Gstreamer传输USB摄像头到DP显示屏_第1张图片

你可能感兴趣的:(petalinux,gstreamer)