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.

[参考译文] Linux/AM5728:从 USB 摄像头传输视频失败

Guru**** 2608365 points
Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/648802/linux-am5728-video-streaming-from-usb-camera-fails

器件型号:AM5728

工具/软件:Linux

您好!

我正在尝试在矩阵 GUI 上获取 USB 摄像头的输出。 而不停止 Weston 和 Matrix。

我正在使用 gstreamer 命令、使用的命令为:

gst-launch-1.0 v4l2src device="/dev/video1! VIDEO/x-RAW,宽度=640,高度=480! 陆上接收机

输入此命令后、LCD 闪烁一次、但无法流式传输摄像头数据。

输入此命令后出现的错误为:

正在将管道设置为暂停...
管道处于活动状态,不需要 PREROLL...
正在将管道设置为正在播放...
新时钟:GstSystemClock
[已销毁的对象]:错误0:无效格式0x56595559

这意味着什么?

如果该命令错误、是否有人会对其进行前导。

谢谢、致以诚挚的谢意

Vijay Patil

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    软件团队已收到通知。 他们将在这里作出回应。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    我建议您查看用于捕获管道的多媒体用户指南:
    processors.wiki.ti.com/.../Processor_Training:_Multimedia
    我建议您在 capsfilter 中设置格式(请参阅指南)。
    您可以尝试添加 VPE 元素并在其后面设置 capsfilter。
    如果您尝试使用 kmsink 而不是 waylandsink、它是否正常工作(首先停止 Weston)?
    希望这对您有所帮助。

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    如果您尝试使用 kmsink 而不是 waylandsink、它是否正常工作(首先停止 Weston)?
    希望这对您有所帮助。

    我尝试过这种方法、但它给出了相同的错误。

    $GST-LAUNCH-1.0 v4l2src device=/dev/video1 num-buffers=1000 IO-mode=4! VIDEO/x-RAW、FORMAT=YUY2、width=320、height=240! VPE num-input-buffers=8! 排队! kmsink

    正在将管道设置为暂停...
    管道处于活动状态,不需要 PREROLL...
    正在将管道设置为正在播放...
    新时钟:GstSystemClock
    [667.301303]连续块太小4096/153600 b
    错误:来自元素/GstPipeline:流水 线0/GstV4l2Src:v4l2src0:内部数据流错误。
    其他调试信息:
    ./../../../gstreamer-1.8.3/libs/gst/base/gstbasesrc.c (2948):gst_base_src_loop ():/GstPipeline:流水线0/GstV4l2Src:v4l2src0:
    流任务暂停、原因错误(-5)
    执行在0:00:01.270090268之后结束
    正在将管道设置为暂停...
    正在将管道设置为就绪...
    正在将管道设置为 NULL ...
    正在释放管道...
    root@am57xx-EVM:~#

    另外、如何设置 capsfilter 您是否会帮助您设置 capsfilter?

    谢谢、此致

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

    对于 USB 捕获、请检查此主题:
    e2e.ti.com/.../2023362
    您可以添加--gst-debug=v4l2src:5以获得更多调试打印。

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我完成了这个主题:
    e2e.ti.com/.../2023362
    --------------------------------------------------------------------
    root 导致了 USB/UVC 驱动程序的问题。 USB/UVC 驱动程序使用 vmalloc 来分配视频缓冲区,因此分配的大型缓冲区不是连续的。 VPE 驱动程序需要连续缓冲器才能工作、因此握手失败。 我修改了 USB/UVC 驱动程序以在 DMA 连续模式下工作、通过此更改、gstreamer 流水线下的效果非常好。 已附加对 USB/UVC 驱动程序所做更改的补丁。

    gst-launch-1.0 v4l2src device=/dev/video1 num-buffers=1000 io-mode=4! 'video/x-raw、format=(string) YUY2、width=(int) 1280、height=(int) 720'! 排队! VPE! 排队! kmsink

    usb_capture.txt

    --------------------------------------------------------------------

    如前所述、我有疑问、

    如何更改 AM5728-EVM 上的 USB/UVC 驱动程序以使用 DMA 连续模式、过程是什么?
    要打开摄像头或视频流、我需要对 EVM 进行哪些更改?
    请说明该过程。

    谢谢、此致。

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

    Vijay、

    您需要应用此 e2e 帖子中共享的补丁 usb_capture.txt、以使 USB 摄像头正常工作。 您可能需要手动应用补丁、因为内核版本可能不同-

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

    大家好、Manisha、

    我知道我需要应用修补程序。

    但是、我在哪里应用该补丁、我将如何执行该操作? 您会告诉这个过程。

    这对我很有帮助、因为我是 AM5728 Sitara 处理器的新员工。

    谢谢、此致

    Vijay Patil

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

    我建议您手动应用补丁。 正如 Manisha 所说、内核版本不同。
    1.打开修补程序,例如,您会看到+.... UVC_DRIVER.C.
    2.打开此文件。 您应该在其中添加+#include 在#include 之后 。
    您应添加以下行:
    +dev->alloc_ctx = vb2_dma_contg_init_ctx (&intf->dev);
    +intf->dev.相干 DMA 掩码= dma_bit_mask (32);
    /*初始化控件之前。 *
    如果(UVC_CTRL_INIT_DEVICE (dev)< 0)
    并保存编辑过的文件。
    然后打开 UVC_queue.c、按照您在补丁中看到的那样进行更改。
    其他文件也是如此。

    然后、您应该重新编译已修补的源(内核、模块等)并将其 CP 至 SD 卡。

    我建议您通过互联网搜索 Linux 命令、以了解如何应用补丁。

    希望这对您有所帮助。

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

    您好!

    另一个注意事项当您看到一行带有"-"时、您必须将其删除或注释。


    BR
    玛格丽塔

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

    但它仍然提供相同的误差:

    $GST-LAUNCH-1.0 v4l2src device="/dev/video0! VIDEO/x-RAW,宽度=640,高度=480! 陆上接收机

    正在将管道设置为暂停...
    管道处于活动状态,不需要 PREROLL...
    正在将管道设置为正在播放...
    新时钟:GstSystemClock
    [已销毁的对象]:错误0:无效格式0x56595559

    谢谢、尊重

    Vijay Patil

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

    您使用的流水线似乎不正确。
    /dev/video0看起来不正确。
    您能否验证这是否是摄像机的正确备注(执行 v4l2-ctl --list-devices)。
    我建议您查看此指南以获取管道:
    processors.wiki.ti.com/.../Processor_Training:_Multimedia

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我输入以下命令时出错、仍会出现错误:

    $GST-LAUNCH-1.0 v4l2src device="/dev/video1! VIDEO/x-RAW,宽度=640,高度=480! 陆上接收机

    正在将管道设置为暂停...
    管道处于活动状态,不需要 PREROLL...
    正在将管道设置为正在播放...
    新时钟:GstSystemClock
    [已销毁的对象]:错误0:无效格式0x56595559

    谢谢、尊重

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

    请参阅上面的捕获管道链接。
    您是否验证了这是正确的器件说明?
    这不是完整的控制台日志。 验证电容滤波器中的格式和分辨率是否正确。
    您也可以添加--gst-debug 以获得更多调试打印。
    我也会推荐您使用 yavta。 以下是链接:
    processors.wiki.ti.com/.../Linux_Core_VIP_User's_Guide

    希望这对您有所帮助。

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    需要将 IO-mode=4选项与 v4l2src 结合使用。 低于流水线的情况下运行良好。

    gst-launch-1.0 -v v4l2src device=/dev/video1 io-mode=4! 'video/x-raw、format=(string) YUY2、width=(int) 640、height=(int) 480、framerate=60/1'! 排队! kmsink

    在我的末尾使用 landsink 显示一些颜色失真(可能是一个错误、因为它不接受 YUY2作为输入格式)。 如果在之间插入 VPE 插件、则输出看起来不错。

    gst-launch-1.0 -v v4l2src device=/dev/video1 io-mode=4! 'video/x-raw、format=(string) YUY2、width=(int) 640、height=(int) 480、framerate=60/1'! 排队! VPE! 排队! 陆上接收机
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    Vijay Patil 您好、

    我正在关闭此主题、请再次打开它。

    BR
    玛格丽塔