This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

[参考译文] AM68A:GStreamer 流水线在三个 3280x2464 摄像头进行流式传输时失败

Guru**** 2346780 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1520079/am68a-gstreamer-pipeline-fails-with-three-3280x2464-cameras-streaming

部件号:AM68A

工具/软件:

您好:

TI 器件上的 3 摄像头 Gstreamer 流水线问题

我正在使用利用的 Gstreamer 流水线 三个 IMX 摄像头 (每个都具有分辨率 3280x2460 ) 物体检测 。 流水线执行以下任务:

  • 保存录像 放入不同的文件夹中。

  • 录制音频 从单个麦克风将其合并到所有三个视频录制中(即,三个麦克风共用一个音轨)。

  • 提取检测数据 每摄像头。

  • 流式传输原始视频 从所有三个摄像头传输到媒体服务器 RTMP(使用) rtmp2sink

与 ALL 一起运行这个流水线时、我遇到的问题会发生 三个摄像头 。 我收到以下错误:

Error received from element stream_sink3: Connection error: connection closed remotely Debugging information: /usr/src/debug/gstreamer1.0-plugins-bad/1.22.12/gst/rtmp2/gstrtmp2sink.c(1085): error_callback (): /GstPipeline:Video-Pipeline/GstRtmp2Sink:stream_sink3: domain g-io-error-quark, code 44

此错误专门发生在第三个 RTMP 流stream_sink3 () 上。 将流水线限制为的可用性 两个摄像头 、它的工作原理没有任何问题。

问题:
此错误可能是由引起的 TI 器件资源过载 处理三个高分辨率摄像头流、同步音频处理和 RTMP 流时(例如 CPU、内存或 I/O 带宽)?

谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    您能否发送流水线?

    视频的框架是什么?

    当您运行流水线时、Top 会说什么?

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    您可以尝试遵循此常见问题解答中描述的修复程序: https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1476091/faq-am6x-how-do-i-fix-stream-fifo-overflow-errors-in-the-csi2rx-linux-driver-with-num_pixels 

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、感谢您的答复。 但是、这似乎不是问题所在。 当我使用三个摄像头单独测试流式传输时(没有运行对象检测)、它工作正常。 我计划编写额外的测试代码来精确确定消耗更多内存的内容。
    您对此有任何建议或潜在的解决方案吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、

    多标量只能按最大 1/4 图像尺寸进行缩放。 您的管道是否试图将规模缩小 1/4 以上?

    您是否尝试过使用 GST-launch-1.0 启动管道作为概念验证?

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:
    我已经实现了物体检测(从 3 个摄像头中保存)和流式传输(分别通过物体检测)、两者都可以独立运行。 最初、流式传输存在问题、我通过正确释放与编码器相关的资源来解决该问题。

    但是、通过物体检测节省的 3 摄像头仅通过释放资源并不能正常工作。 通过将已保存视频的最终输出分辨率设置为 1280x720、我设法解决了这一问题。

    但是,当我结合了两个功能—保存(与对象检测)和流(没有对象检测)——问题再次出现,即使在应用了两个修复之后|

    我还没有为 POC 做 GST 发布,因为这是更好的方法来控制流水线。

    在我用于 3 个摄像头的多标量设置中、流水线结构如下:

    Magμ s  物体检测分支 (Tensor Path):

    1. 初始输入分辨率 3280x2464

    2. 第一个多标量将输入从向下缩放3280x2464820x616

    3. a. 盖过滤器 应用于820x616

    4. 然后、第二个多尺度缩放器进一步将其从降级820x616320x320

    5. 另一个 盖过滤器 320x320在将帧传递到之前应用的 过程

    6. 检测的输出张量被传递到 后处理 继续讨论。

    7. 后处理接收端 使用原稿 Sink_CAP 分辨率 (3280x2464)。

    Desktop️ μ s  接收器/显示分支:

    • 从第一个多标量开始、使用并行分支进行显示。

    • a. 盖过滤器 3280x2464直接应用分辨率以显示/叠加。

    Floppy diskμ s  最终保存和流式分支:

    • 在检测和后处理后分离 乘法器 用于:

      • 保存视频

      • 流式传输视频

    • 在这些分支中 ROI 宽度和高度未明确设置 基于多标量。

    • 但是、A 盖过滤器 在多标量之后使用、以强制执行的最终分辨率1280x720


      谢谢你

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Nihal:

    我还没有为 POC 启动 GST、因为这是更好的方法来控制流水线。
    [/报价]

    我之所以提出这个问题、是因为 GStreamer 应用程序有时会出现错误、因此这是一种验证流水线还是代码是否存在问题的简单方法。

    您能否使用 gdb 或另一个调试器分享导致错误的行?

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好:
    是否有方法记录存储器使用情况或获取流水线中每个元素的存储器使用情况?
    此外、当我降低输出分辨率时、通过final_capsfinal_scaler将和的 src 焊盘属性设置为 816x616 —这避免了内存问题、但视频被裁剪。
    我无法设置final_caps816x616 单独使用、而不显式设置的 src PAD 属性final_scaler。 一方 1280x720 ,它的工作原理只是设置,final_caps而无需配置final_scaler的 src 板和输出视频没有被裁剪。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Nihal:

    您可以运行 top 或 free 以查看总内存使用量。 我不知道如何显示每个元素的内存使用量。

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    好的

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Nihal:

    如果您有任何其他问题、敬请告知。

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jared、

    我能够使用检查共享内存使用情况top,这显示了 Linux 共享内存,并且效果很好。 但是、失败的共享存储器似乎是 TI 系统的内部存储器。 是否有专门记录或监控该信息的方法?

    谢谢
    Nihal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Nihal:

    流水线状态从 NULL 更改为 READY
    流水线状态从就绪更改为暂停
    407.231253 s:内存:错误:Alloc 失败、状态为 12!!
    407.231303 s:vx_zone_error:[tivxMemBufferAlloc:111]共享内存 PTR 分配失败
    407.354002 s:内存:错误:Alloc 失败、状态为 12!!
    407.354055 s:vx_zone_error:[tivxMemBufferAlloc:111]共享内存 PTR 分配失败
    407.494729 s:内存:错误:Alloc 失败、状态= 12!!
    407.494775 s:vx_zone_error:[tivxMemBufferAlloc:111]共享内存 ptr 分配失败

    那么、您在尝试从 3 个摄像头进行流式传输时是否看到了此错误?

    如果是、这是由于在堆中分配 DMA 缓冲区时出现问题所致。 您能否确认这是您看到的错误?

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jared、

    是的、我在尝试将保存与所有三个摄像头的对象检测和流式传输结合时遇到此错误。 但是、单独进行流式传输(无论是否有物体检测)对于所有三个摄像头都可以正常工作、这同样适用于保存情况。

    谢谢
    Nihal

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    尊敬的 Nihal:

    您是否可以尝试运行以下流水线:

    $ gst-launch-1.0 \
    v4l2src device=/dev/video-imx219-cam0 io-mode=5 ! queue leaky=2 ! \
    video/x-bayer, width=3280, height=2464, format=rggb10, framerate=15/1 ! \
    tiovxisp sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_3280x2464_10b.bin format-msb=9 \
    sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_3280x2464_10b.bin sink_0::device=/dev/v4l-imx219-subdev0 ! \
    video/x-raw, format=NV12 ! queue ! \
    \
    v4l2h264enc output-io-mode=5 ! filesink location=cam0-out.h264 \
    \
    v4l2src device=/dev/video-imx219-cam1 io-mode=5 ! queue leaky=2 ! \
    video/x-bayer, width=3280, height=2464, format=rggb10, framerate=15/1 ! \
    tiovxisp sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_3280x2464_10b.bin format-msb=9 \
    sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_3280x2464_10b.bin sink_0::device=/dev/v4l-imx219-subdev1 ! \
    video/x-raw, format=NV12 ! queue ! \
    \
    v4l2h264enc output-io-mode=5 ! filesink location=cam1-out.h264 \
    \
    v4l2src device=/dev/video-imx219-cam2 io-mode=5 ! queue leaky=2 ! \
    video/x-bayer, width=3280, height=2464, format=rggb10, framerate=15/1 ! \
    tiovxisp sensor-name=SENSOR_SONY_IMX219_RPI dcc-isp-file=/opt/imaging/imx219/linear/dcc_viss_3280x2464_10b.bin format-msb=9 \
    sink_0::dcc-2a-file=/opt/imaging/imx219/linear/dcc_2a_3280x2464_10b.bin sink_0::device=/dev/v4l-imx219-subdev2 ! \
    video/x-raw, format=NV12 ! queue ! \
    \
    v4l2h264enc output-io-mode=5 ! filesink location=cam2-out.h264

    此致、
    Jared

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好 Jared、
    我尝试了您建议的流水线、但它未按预期运行。
    通过将“灌电流盖解决方案“设置为、我能够解决该问题 1280x720 而不是 3280x2464 、用于后处理接收板(保存分支)。
    感谢您的持续支持。

    此致、
    Nihal