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.

[参考译文] TDA4VM:接收器侧的 gstreamer 出现问题、分辨率更高

Guru**** 2539500 points
Other Parts Discussed in Thread: TDA4VM

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1137360/tda4vm-something-wrong-with-gstreamer-at-receiver-side-with-higher-resolution

器件型号:TDA4VM

各位专家:

请参阅上一个主题: TDA4VM:使用 writeMosaicOutput 时摄像机帧有时不更新

如前所述、gstreamer 在摄像头侧工作正常、但在显示屏侧旋转1344x1080时出现问题。

TDA4VM 在显示端无法获取任何帧、gstreamer 流水线似乎不完整。

有2个测试用例:

1.  TDA4 (摄像机分辨率: 1080x1344)--> PC

  PC 屏幕上显示了一些帧、而不是非常不友好。

2.  TDA4 (摄像机分辨率: 1080x1344)--> TDA4

  显示端的 gstreamer 管道不完整

  A.摄像机侧的示踪剂记录(1080x672)

 

  B. 摄像机侧的示踪剂记录(1080x1344)

 C.显示屏侧的示踪剂记录(1080x672)


  D.摄像机侧的示踪剂记录(1080x1344)

从1080x1344的示踪剂日志显示端可以看到、仅显示两个元素。 jpegdec 等其他元素将消失。

谢谢

Michael

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

    您好、Michael、

    您能否通过在 GST-launch 命令中附加 GST_DEBUG=4来启用更详细的调试日志、类似于:GST_DEBUG=4 GT-LAUNCH-1.0 videosTestsrc! 自动视频链接、然后共享日志?

    我假设您共享的 trace.logs 中正在使用类似于"playbin"插件的内容。 在后台自动进行上限协商的插件很难预测给定平台的行为。 我最初的建议是明确定义使用哪些插件、而不是使用 bin。 例如、https://software-dl.ti.com/jacinto7/esd/edgeai-sdk-j721e/latest/exports/docs/data_flows.html#rtsp-source

    此致、

    Takuma

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

    你好、 Takuma、

    我使用 v4l2sink 而不是 playbin。

    以下是我对 GST_DEBUG=4日志的一些保留:

    一 测试用例1中的调试日志。 和2. 在接收器侧几乎是相同的。  

    测试案例1. gst cmd: gst_debug=4 gst-launch-1.0 -e udpsrc port=5000! application/x-rtp、encoding-name=JPEG、PAYLOAD=26! \
                      很棒的酒店! 很棒! 排队! 视频转换! 'VIDEO/x-RAW、FORMAT=NV12'!  自动视频链接

    e2e.ti.com/.../disp_5F00_1080x1344_5F00_d4_5F00_pc.log

    测试情况2. gst cmd: gst_debug=4 gst-launch-1.0 -e udpsrc port=5000! application/x-rtp、encoding-name=JPEG、PAYLOAD=26! \
                      很棒的酒店! 很棒! 排队! 视频转换! 'VIDEO/x-RAW、FORMAT=NV12'! v4l2sink 设备=/dev/video2
      

    e2e.ti.com/.../disp_5F00_1080x1344_5F00_d4.log

          

    二 在 Tebe 外壳1上有一些分辨率为1080x1344的接头翘曲。 和2. 但分辨率不是1080x672。

    e2e.ti.com/.../disp_5F00_1080x672_5F00_d4.log

      

    谢谢  

    Michael

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

    您好、Michael、

    我在 v4l2sink 的日志中看到以下内容:

    0:00:00.185461690 [335m 1408[00m     0x2680d2d0 [36mINFO   [00m [00m                v4l2 gstv4l2object.c:3025:gst_v4l2_object_setup_pool:<v4l2sink0:sink>[00m accessing buffers via mode 2
    0:00:00.185667485 [335m 1408[00m     0x2680d2d0 [36mINFO   [00m [00m      v4l2bufferpool gstv4l2bufferpool.c:568:gst_v4l2_buffer_pool_set_config:<v4l2sink0:pool:sink>[00m increasing minimum buffers to 2
    0:00:00.185678875 [335m 1408[00m     0x2680d2d0 [36mINFO   [00m [00m      v4l2bufferpool gstv4l2bufferpool.c:581:gst_v4l2_buffer_pool_set_config:<v4l2sink0:pool:sink>[00m reducing maximum buffers to 32
    0:00:00.185742520 [335m 1408[00m     0x2680d2d0 [36mINFO   [00m [00m      v4l2bufferpool gstv4l2bufferpool.c:592:gst_v4l2_buffer_pool_set_config:<v4l2sink0:pool:sink>[00m can't allocate, setting maximum to minimum
    0:00:00.185769750 [335m 1408[00m     0x2680d2d0 [36mINFO   [00m [00m            v4l2sink gstv4l2sink.c:520:gst_v4l2sink_set_caps:<v4l2sink0>[00m outputting buffers via mode 2
    0:00:00.185859535 [335m 1408[00m     0x2680d2d0 [36mINFO   [00m [00m      v4l2bufferpool gstv4l2bufferpool.c:592:gst_v4l2_buffer_pool_set_config:<v4l2sink0:pool:sink>[00m can't allocate, setting maximum to minimum
    0:00:00.196587475 [335m 1408[00m     0x2680d320 [36mINFO   [00m [00m        videodecoder gstvideodecoder.c:3184:gst_video_decoder_clip_and_push_buf:<jpegdec0>[00m First buffer since flush took 0:00:00.140481455 to produce
    0:00:00.196722205 [335m 1408[00m     0x2680d2d0 [33;01mWARN   [00m [00m      v4l2bufferpool gstv4l2bufferpool.c:820:gst_v4l2_buffer_pool_start:<v4l2sink0:pool:sink>[00m Uncertain or not enough buffers, enabling copy threshold

    我还使用以下器件测试了 GStreamer 管道、两者都在同一个 TDA4VM 电路板上运行:

    • GST-LAUNCH-1.0视频测试 src! 视频转换! VIDEO/x-RAW、FORMAT=NV12、width=1080、height=1344! jpegenc! jpegparse! 很棒的酒店! udpsink host=127.0.0.1端口=5000
    • gst-launch-1.0 -e udpsrc 端口=5000! application/x-rtp、encoding-name=JPEG、PAYLOAD=26! 很棒的酒店! 很棒! 排队! 视频转换! 'VIDEO/x-RAW、FORMAT=NV12'! 自动视频链接

    从视觉上看、这些管道似乎没有问题。 我猜使用 v4l2sink 时会出现一些问题。 如果使用 v4l2sink 时的分辨率较低、则可能是 v4l2器件端或存储器的限制。

    这些是摄像头的说明、但您可以通过运行以下命令来检查 v4l2器件是否支持某些格式:

    v4l2-ctl -d /dev/video2 --all

    作为另一个快速实验、您可以尝试查看更改 v4l2sink 的 IO 模式和其他缓冲器相关属性是否可以解决以下问题: https://gstreamer.freedesktop.org/documentation/video4linux2/v4l2sink.html?gi-language=c

    此致、

    Takuma

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

    你好、 Takuma、

    1.是的,就像你所说的。 此问题可能是 由 v4l2sink 引起的,因为使用  多文件链接替换 v4l2sink 可以使 gtreamer 流水线正常工作。

    2.“/dev/video2”是 v4l2loopback 设备。 您可以根据需要设置辅助分辨率和格式。

       https://github.com/umlaeute/v4l2loopback

    需要注意的是、如果视频源来自 PC USB 网络摄像头而不是 TDA4 FPD-link YUV 摄像头、则其在1080x1344分辨率下工作正常。 在2040x2040之前、接收器侧也会出现同样的问题、即管道不完整。

      一 PC USB 网络摄像头(摄像头分辨率: 1080x1344)--> TDA4

        它的工作原理。

      二 TDA4 (摄像机分辨率: 1080x1344)--> TDA4

        显示端的 gstreamer 管道不完整

      三 PC USB 网络摄像头(摄像头分辨率:2040x2040)--> TDA4

        显示端的 gstreamer 管道不完整

    4.我将尝试设置 v4l2sink 的不同属性,如 IO-mode。

    感谢你的帮助。  

    此致、

    Michael

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

    您好、Jay、

    [引用 userid="487798" URL"~/support/processors-group/processors/f/processors-forum/1137360/tda4vm-something-wrong-with-gstreamer-at-receiver-side-with-higher-resolution/4223762 #4223762]1. 是的、正如您所提到的。 此问题可能是 由 v4l2sink 引起的,因为 gtreamer 流水线可以通过将 v4l2sink 替换 为 multifilesink来正常工作

    管道是否适用于 TDA4 FPD-link YUV 摄像头和 USB 摄像头的多文件链接? 如果 FPD-Link 摄像头无法正常工作、则摄像头侧也可能存在一些问题。

    此致、

    Takuma

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

    你好、 Takuma、  

     TDA4 FPD-link YUV 摄像头和 USB 摄像头均可与  多文件链接配合使用、分辨率为1080x1344。  

    通过设置 v4l2sink 的不同 IO 模式、情况并未改变。 它甚至提供了额外的错误、例如"v4l2sink0:无法分配所需的内存。"、但 这也是在较低的分辨率下发生的。

    谢谢  

    Michael

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

    您好、Michael、  

    我对 v4l2sink 不是很熟悉、因为我们没有将其用于任何演示、因此调试此问题需要一些时间。 但是、您能否使用您链接的 v4l2sink 页面上记录的方法来试验 fps 和分辨率:https://github.com/umlaeute/v4l2loopback#changing-the-runtime-behavior

    您可以尝试的一些实验包括:

    • 将 FPS 设置为非常低的值、例如1 FPS -以测试这是否是带宽问题
    • 手动设置分辨率以匹配摄像机的分辨率-我在 v4l2sink 页面上看到一条警告,指出“请注意  Gstreamer 样式的电容器 (例如 video/x-raw,format=UYVY,width=640,height=480)或不再受支持!”,因此在运行 Gstreamer 流水线之前,我们可能需要手动设置分辨率
    • 手动将分辨率设置为比摄像机更小的分辨率和更大的分辨率-根据我们手动设置的分辨率来测试管道是否会中断

    此外、由于 v4l2sink 是一个开源插件、您可以尝试在线搜索、看看是否有其他人存在相关问题。

    此致、

    Takuma

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

    你好、 Takuma、  

    • 将 FPS 设置为非常低的值、例如1 FPS -以测试这是否是带宽问题
      • 这可能不是带宽问题、因为 GStreamer 甚至无法在1 FPS 下成功执行。
    • 手动设置分辨率以匹配摄像机的分辨率-我在 v4l2sink 页面上看到一条警告,指出“请注意  Gstreamer 样式的电容器 (例如 video/x-raw,format=UYVY,width=640,height=480)或不再受支持!”,因此在运行 Gstreamer 流水线之前,我们可能需要手动设置分辨率
      • 据我了解、这意味着可以使用 v4l2loopback 受限样式  v4l2loopback-ctl set-cap /dev/video0 "UYVY:640x480"来设置格式、而不是 GStreamer 样式。 此外、 这些参数是使用 ioctl 设置的。
    • 手动将分辨率设置为比摄像机更小的分辨率和更大的分辨率-根据我们手动设置的分辨率来测试管道是否会中断
      • 比摄像机(1280x720)的分辨率更小、并且工作正常。

    由于 Linux SDK v8.4支持 CSI、我正在尝试在 Linux 端实现这些应用。 不再需要 v4l2sink。  

    如果您有时间、请看一下我的新主题。

    https://e2e.ti.com/support/processors-group/processors/f/processors-forum/1162037/tda4vm-some-errors-when-using-imx390-from-otobrite-on-linux?tisearch=e2e-sitesearch&keymatch=%20user%3A487798#

    谢谢

    Michael

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

    您好、Michael、

    明白。 我将关闭此主题、我们可以将对话转到新主题。  

    此致、

    Takuma