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.

[参考译文] TDA4VH-Q1:多摄像头流冻结问题

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1510524/tda4vh-q1-multicamera-stream-freezing-issue

器件型号:TDA4VH-Q1
Thread 中讨论的其他器件:TDA4VH

工具/软件:

大家好、

我们使用3个 ar0234传感器和1个 ar0821在 TDA4VH (SDK 版本- 10_01_00_05 )与本机串行器(ds90ub953.c)和解串器(ds90ub960.c)驱动程序。

使用三个 AR0234传感器(每个传感器分辨率为1920x1080)和一个 AR0821传感器(分辨率为3840x2160)测试并行流式传输时、流会在被推到显示屏时冻结。 即使对于一个 ar0234和一个 ar0821传感器、并行流也会冻结。此问题是否与内存缓冲区限制有关?

GStreamer 流水线用于1080p 3xar0234和4K 分辨率1xar0821的流式传输:

gst-launch-1.0 v4l2src device=/dev/video6! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! mosica.sink_0 v4l2src device=/dev/video7! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! mosaik.sink_1 v4l2src device=/dev/video8! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! mosica.sink_2 v4l2src device=/dev/video9! video/x-raw、width=3840、height=2160! 视频刻度! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! video/x-raw、format=NV12! 排队! mosica.sink_3 tiovxmosaic name=mosaic sink_0::startx="<0>" sink_0::starty="<0>" sink_1::startx="<1920>" sink_1::starty="<0>" sink_2::startx="<0>" sink_2:::starty="<1080" sink_2>" kmssink sync=false driver-name=tidss -e -v

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

    嗨、Rithika、

    您是否能够成功地从单个摄像头流式传输到已连接的显示器? 显示屏的分辨率是多少? 您能共享的输出吗 media-ctl -p

    谢谢您、

    法比亚纳

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

    嗨、Rithika、

    请查看 此常见问题解答中的以下 GStreamer 流水线示例: [常见问题解答] SK-AM69:如何使用 GStreamer 从 CSI 传感器和 USB 摄像头流式传输到显示?

    请务必在流水线的输出部分将显示分辨率定义为800宽度和600高度。 如果您有任何其他问题、请告诉我。

    谢谢您、

    法比亚纳

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

    尊敬的 Fabiana:

    我使用了您提到的 gstreamer 流水线。我已将输出部分更改为800x600。问题仍然存在。

    GStreamer 流水线用于1080p 3xar0234和4K 分辨率1xar0821的流式传输:

    gst-launch-1.0 v4l2src device=/dev/video6! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! mosica.sink_0 v4l2src device=/dev/video7! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! mosaik.sink_1 v4l2src device=/dev/video8! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! mosica.sink_2 v4l2src device=/dev/video9! video/x-raw、width=3840、height=2160! 视频刻度! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! video/x-raw、format=NV12! 排队! mosica.sink_3 tiovxmosaic name=mosaic sink_0::startx="<0>" sink_0::starty="<0>" sink_1::startx="<1920>" sink_1::starty="<0>" sink_2::startx="<0>" sink_2:::starty="<1080" sink_2>" kmssink sync=false driver-name=tidss -e -v

    上面的 gstreamer 流水线有两个不同的分辨率。 对于分辨率为1920x1080的视频节点/dev/video6、/dev/video7、/dev/video8和分辨率为3840x2160的 dev/video9。

    在那里的情况下,我们使用1920x1080或1280x720作为/dev/video9 ,并行流是正确的。只有当我们使用3840x2160时,它才会冻结

    谢谢您、

    Rithika.

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

    嗨、Rithika、

    您在上一条消息中共享的管道没有像这样定义的800x600输出分辨率。

    视频/x-RAW、宽度=800、高度=600! kmssink driver-name=tidss sync=false force-modesetting=true

    请以常见问题解答中4个摄像头流水线之一作为基础、并进行更改以适合您的用例。

    谢谢您、

    法比亚纳

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

    尊敬的 Fabiana:

    下面是用于4摄像头设置的 GStreamer 流水线、将输出分辨率格式化为800x600、如您所述:

    gst-launch-1.0 v4l2src device= /dev/video6 ! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! 马赛克.SINK_0 v4l2src 器件= /dev/video7 ! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! 马赛克.SINK_1 v4l2src 器件= /dev/video8 ! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! 马赛克.SINK_2 v4l2src 器件= /dev/video9 ! video/x-raw、width=3840、height=2160! 视频刻度! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! video/x-raw、format=NV12! 排队! mosica.sink_3 tiovxmosaic name=mosaic sink_0::startx="<0>" sink_0::starty="<0>" sink_1::startx="<1920>" sink_1::starty="<0>" sink_2::startx="<0>" sink_2:::starty="<1080" sink_2>" 视频/x-RAW、宽度=800、高度=600! kmssink driver-name=tidss sync=false force-modesetting=true -e -v

    上述流水线甚至都不会启动流。 如果需要对此管道进行任何更改、请告诉我。

    以下是工作管道:

    gst-launch-1.0 v4l2src device= /dev/video6 ! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! 马赛克.SINK_0 v4l2src 器件= /dev/video7 ! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! 马赛克.SINK_1 v4l2src 器件= /dev/video8 ! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! 马赛克.SINK_2 v4l2src 器件= /dev/video9 视频/x-RAW、宽度=1920、高度=1080 ! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! mosica.sink_3 tiovxmosaic name=mosaic sink_0::startx="<0>" sink_0::starty="<0>" sink_1::startx="<1920>" sink_1::starty="<0>" sink_2::startx="<0>" sink_2:::starty="<1080" sink_2>" kmssink sync=false driver-name=tidss -e -v

    在上述流水线中、所有四个视频设备(视频6、视频7、视频8、视频9)的分辨率相同。

    非工作管道(流冻结):

    gst-launch-1.0 v4l2src device=/dev/video6! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! mosica.sink_0 v4l2src device=/dev/video7! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! mosaik.sink_1 v4l2src device=/dev/video8! 视频/x-RAW、宽度=1920、高度=1080! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! 马赛克.SINK_2 v4l2src 器件= /dev/video9 视频/x-RAW、宽度= 3840、高度= 2160 ! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! mosica.sink_3 tiovxmosaic name=mosaic sink_0::startx="<0>" sink_0::starty="<0>" sink_1::startx="<1920>" sink_1::starty="<0>" sink_2::startx="<0>" sink_2:::starty="<1080" sink_2>" kmssink sync=false driver-name=tidss -e -v

    在上述流水线中、/dev/video9的分辨率不同、其他视频设备的分辨率相同。

    在所有四个视频设备的分辨率相同的情况下、4个摄像机的并行流是正确的。 如果任何视频设备的分辨率不同、在我们的例子中 /dev/video9、 并行流将被冻结

    谢谢您、

    Rithika.

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

    嗨、Rithika、

    法比亚娜现在已经离开了,所以我将在此期间为她填写。

    我看到您使用3xar0234 + 1xar0821进行了实验、也使用 1xar0234 + 1xar0821进行了实验。

    您能否仅使用1xar0821进行实验、看看问题是否仍然存在? 并请共享 实验中使用的流水线。

    我怀疑4K 分辨率是导致问题的原因、但我希望通过取出其他摄像头来简化问题陈述。 如果高分辨率是问题的根源,我有一个理论可以发生什么。

    此致、

    Takuma

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

    尊敬的 Takuma:

    STREAM 适用于1xar0821

    以下是使用的 gstreamer 流水线:

    gst-launch-1.0 v4l2src device=/dev/video5! video/x-raw、width=3840、height=2160! tiovxldc out-block-width=128! "video/x-raw、format=NV12"! 排队! mosaich.sink_0 tiovxmosaic name=mosaic sink_0::startx="<0>" sink_0::starty="<0>"! kmssink sync=false driver-name=tidss -e -v

    谢谢您、

    Rithika.

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

    嗨、Rithika、

    我看到马赛克 startx 和 starty 是不同的"非工作管道"和新的工作管道1xar0821。  

    具体而言、在新的流水线中:

    mosaich.sink_0 tiovxmosaic name=mosaic sink_0::startx="<0>" sink_0::starty="<0>"[/报价]

    与旧的非工作流水线相比:

    sink_3::startx="<1920>" sink_3::starty="<1080>"

    也许更改摄像机输入的大小会使马赛克尝试写入屏幕上不存在的位置?

    此致、

    Takuma

    [/quote]