Qualcomm Robotics RB5 平台软件用户指南(8)
4.7 相机动态参数 – 使用 gst-pipeline-app 更新
Qualcomm gst-pipeline-app是一个辅助工具,它提供与 GStreamer gst-launch-1.0工具相同的功能。它还提供了一个选项来设置 GST 元素的运行时属性。
先决条件:确保 Weston 正在运行。
要在运行时更新插件的相机属性qtiqmmfsrc并观察显示屏上的变化,请执行以下操作:
-
通过gst-pipeline-app运行以下管道 。
-
Linux Ubuntu:
export XDG_RUNTIME_DIR=/run/user/root && gst-pipeline-app qtiqmmfsrc name=qmmf ! "video/x-raw,format=NV12,width=1920,height=1080,framerate=30/1" ! waylandsink sync=false fullscreen=true enable-last-sample=false
-
嵌入式Linux:
export WAYLAND_DISPLAY=wayland-1 && export XDG_RUNTIME_DIR=/run/user/root && gst-pipeline-app qtiqmmfsrc name=qmmf ! "video/x-raw, format=NV12,width=1920,height=1080,framerate=30/1" ! waylandsink sync=false fullscreen=true enable-last-sample=false
-
-
输入要控制的插件的名称。
qmmf
显示所有可动态更新的参数。
-
选择所需的选项并提供开/关输入或设置该功能的适当值。效果可以在实时预览中查看。
4.8 在视频录制过程中捕捉快照
下图显示了在录制两个 1080p 视频时捕获的 1080p 快照。
-
运行以下命令。
gst-pipeline-app -e qtiqmmfsrc name=qmmf camera=0 ! video/x-raw\(memory:GBM\),format=NV12,width=3840,height=2160,framerate=30/1 ! queue ! qtic2venc ! queue ! h264parse ! mp4mux ! queue ! filesink location=/data/output/mux1.mp4 qmmf. ! video/x-raw\(memory:GBM\),format=NV12,width=640,height=480,framerate=30/1 ! queue ! qtic2venc ! queue ! h264parse ! mp4mux ! queue ! filesink location=/data/output/mux2.mp4 qmmf. ! "image/jpeg,width=1920,height=1080,framerate=30/1" ! multifilesink location=/data/output/frame%d.jpg sync=true async=false
-
输入要控制的插件名称:qmmf。该图显示了终端上显示的各种选项。
录制的 MP4 文件和 JPEG 快照存储在 /data/中。 -
要提取快照和录制的视频,请运行以下命令。
adb pull /data/<filename>
4.9 叠加:1080p 视频,用户文本叠加存储到文件中
-
要在 1080p 视频上应用用户文本叠加,请运行以下命令:
gst-launch-1.0 -e qtiqmmfsrc name=qmmf camera=0 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1 ! qtioverlay overlay-text="text0,text=\"Qualcomm\ Intelligence\", color=(uint)0xFFFF00FF, dest-rect=<160,624, 944, 50>;" ! queue ! qtic2venc ! queue ! h264parse ! mp4mux ! queue ! filesink location=/data/output/mux.mp4
-
该qtiqmmfsrc元件用于生成一个 1080p 分辨率的 YUV 流。
-
YUV 流由插件接收qtioverlay,该插件将作为覆盖文本属性值给出的用户文本应用到流上。
-
然后,带有叠加层的 YUV 流由插件进行处理h264parse和编码。qtic2venc
-
该mp4mux插件将编码流打包在 MP4 容器中。
-
该filesink元素将其存储在设备上的文件中。
-
要停止用例,请按CTRL + C,并使用以下命令从设备中拉出录制的内容adb pull ,然后在主机 PC 上播放该内容。
adb pull /data/mux.mp4
4.10 叠加:带有静态图像和圆形隐私遮罩的 1080p 视频预览
要在 1080p 实时视频预览上应用带有隐私遮罩叠加的静态图像叠加,请运行以下命令:
-
Linux Ubuntu:
export XDG_RUNTIME_DIR=/run/user/root && gst-launch-1.0 -e qtiqmmfsrc name=qmmf camera=0 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1 ! qtioverlay overlay-simg="image0,image=\"/data/overlay_test_464_109.rgba\", resolution=<464, 109>, dest-rect=<1300, 800, 464, 109>;" overlay-mask="mask0, circle=<960, 540,400>, dest-rect=<0, 0, 1920, 1080>, color=0x202020FF" ! waylandsink x=0 y=0 width=1920 height=1080 sync=false
-
嵌入式Linux:
export WAYLAND_DISPLAY=wayland-1 && export XDG_RUNTIME_DIR=/run/user/root && gst-launch-1.0 -e qtiqmmfsrc name=qmmf camera=0 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1 ! qtioverlay overlay-simg="image0,image=\"/data/overlay_test_464_109.rgba\", resolution=<464, 109>, dest-rect=<1300, 800, 464, 109>;" overlay-mask="mask0, circle=<960, 540,400>, dest-rect=<0, 0, 1920, 1080>, color=0x202020FF" ! waylandsink x=0 y=0 width=1920 height=1080 sync=false
- 该qtiqmmfsrc元件用于生成一个 1080p 分辨率的 YUV 流。
- 插件接收 YUV 流qtioverlay,该插件应用隐私遮罩,这意味着只有圆圈中指定的区域被指定的颜色遮盖,并且还将静态图像放置在指定位置。
- 然后,插件qtioverlay将带有覆盖层的帧传递给waylandsink元素以在显示器上渲染。
- 要停止用例,请按CTRL + C。
4.11 叠加:1080p 视频预览,带有反圆形隐私遮罩
要在 1080p 实时视频预览上应用反向隐私遮罩叠加,请运行以下命令:
-
Linux Ubuntu:
export XDG_RUNTIME_DIR=/run/user/root && gst-launch-1.0 -e qtiqmmfsrc name=qmmf camera=0 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1 ! qtioverlay overlay-mask="mask0,circle=<960,540, 540>, inverse=true, dest-rect=<0, 0, 1920, 1080>,color=0x202020FF" ! waylandsink x=0 y=0 width=1920 height=1080 sync=false
-
Linix 嵌入式:
export WAYLAND_DISPLAY=wayland-1 && export XDG_RUNTIME_DIR=/run/user/root && gst-launch-1.0 -e qtiqmmfsrc name=qmmf camera=0 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1 ! qtioverlay overlay-mask="mask0,circle=<960,540, 540>, inverse=true, dest-rect=<0, 0, 1920, 1080>,color=0x202020FF" ! waylandsink x=0 y=0 width=1920 height=1080 sync=false
- 该qtiqmmfsrc元件用于生成一个 1080p 分辨率的 YUV 流。
- YUV 流由qtioverlay插件接收,该插件应用反向隐私遮罩。因此,只有圆圈中指定的区域是可见的,而该区域的其余部分则被指定的颜色遮盖,然后将其传递给元素waylandsink以在显示上渲染。
- 要停止用例,请按CTRL + C。
4.12 叠加:带日期和时间的 1080p 视频预览
要在 1080p 实时视频预览上应用日期和时间叠加,请运行以下命令。
-
Linux Ubuntu:
export XDG_RUNTIME_DIR=/run/user/root && gst-launch-1.0 -e qtiqmmfsrc name=qmmf camera=0 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1 ! qtioverlay overlay-date="date0,date-format=\"10122023\", time-format=\"101010_24HR\",color=(uint)0xFF00FFFF, dest-rect=<0, 0, 256, 80>;" ! waylandsink x=0 y=0 width=1920 height=1080 sync=false
-
嵌入式Linux:
export WAYLAND_DISPLAY=wayland-1 && export XDG_RUNTIME_DIR=/run/user/root && gst-launch-1.0 -e qtiqmmfsrc name=qmmf camera=0 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1 ! qtioverlay overlay-date="date0,date-format=\"10122023\", time-format=\"101010_24HR\",color=(uint)0xFF00FFFF, dest-rect=<0, 0, 256, 80>;" ! waylandsink x=0 y=0 width=1920 height=1080 sync=false
- 该qtiqmmfsrc元件用于生成一个 1080p 分辨率的 YUV 流。
- 插件接收 YUV 流qtioverlay,该插件将作为 override-date 属性值给出的日期和时间应用到流上,然后将其传递到元素waylandsink以在显示上渲染。
- 要停止用例,请按CTRL + C。
4.13 叠加:带有用户文本的 1080p 视频预览
先决条件:确保 Weston 正在运行。
-
要在 1080p 实时视频预览上应用用户文本叠加,请运行以下命令:
export XDG_RUNTIME_DIR=/run/user/root && gst-launch-1.0 -e qtiqmmfsrc name=qmmf camera=0 ! video/x-raw\(memory:GBM\),format=NV12,width=1920,height=1080,framerate=30/1 ! qtioverlay overlay-text="text0,text=\"Qualcomm\ Intelligence\", color=(uint)0xFFFF00FF, dest-rect=<160,624, 944, 50>;" ! waylandsink x=0 y=0 width=1920 height=1080 sync=false
-
该qtiqmmfsrc元素用于生成 1080p 分辨率的 YUV 流。
-
该qtioverlay插件接收 YUV 流,将作为覆盖文本属性值给出的用户文本应用到流上,并将其传递到元素waylandsink以在显示上呈现。
-
要停止用例,请按 CTRL + C。