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.

[参考译文] AM572x GStreamer v4l2src 字段捕获

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/676985/am572x-gstreamer-v4l2src-field-capture

我已经查看了处理器培训:多媒体页面(http://processors.wiki.ti.com/index.php/Processor_Training:_Multimedia #GStreamer_Pipels_for_Multimedia)

但看不到适合我的情况的 gstreamer 流水线。

在 gstreamer 之前、我们使用 VIP 从 NTSC/PAL 视频设备捕获顶部/底部字段(240/288行)、并将这些字段/缓冲区排队到 VPE 以获取完整帧(480/576行)。 除了 NTSC/PAL 外、我们还提供1080i 和720i HD 视频设备、这些设备需要进行类似的字段到帧处理。

在 gstreamer 下、我尝试使用 v4l2src、但看不到正确描述上述流水线的方法。 我认为很难描述 v4l2src 只提供顶部/底部字段、或者 VPE 应该将它们组合成帧的事实。

我可以通过捕获获得的最接近的结果是:

gst-launch-1.0 -v v4l2src device=/dev/video2 io-mode=4 ! kmsink 或

gst-launch-1.0 -v v4l2src device=/dev/video2 io-mode=4 ! VPE! kmsink

但这些显示在显示屏上576行、其中只有顶部240 (NTSC 源)来自视频捕捉-底部全为绿色。

我还尝试向  管道中添加各种形式的'VIDEO/x-RAW、FORMAT=YUY2、width=720、height=576',但如果高度不是480或576,我会得到:

错误:来自元素/GstPipeline:流水 线0/GstV4l2Src:v4l2src0:内部数据流错误。
其他调试信息:
./../../../gstreamer-1.8.3/libs/gst/base/gstbasesrc.c (2948):gst_base_src_loop ():/GstPipeline:流水线0/GstV4l2Src:v4l2src0:
流任务暂停、原因未协商(-4)

我的 gstreamer 版本是  

GST-LAUNCH-1.0版本1.8.3
GStreamer 1.8.3

Linux 4.4.84

当前 TI 支持的版本是否正确?

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

    您好!

    [引用 user="Dan Searles"]。/../../../gstreamer-1.8.3/libs/gst/base/gstbasesrc.c (2948):GST_base_src_loop ():/GstPipeline0/GstV4l2Src:v4l2src0:
    流任务已暂停、原因未协商(-4)[/quot]

    此错误意味着 capsfilter 错误或在 v4l2src 和下一个元素之间丢失。

    请再次查看多媒体 Wiki。

    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 num-input-buffers=8 ! 排队!  kmsink
    
    例如,您也可以添加帧率=(frame)30/1。
    在 Capsfilter 中、可以设置这个隔行模式。 您可以查看此链接以了解更多信息:
    https://gstreamer.freedesktop.org/documentation/design/interlaced-video.html




    BR

    玛格丽塔

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

    您好!

    您的回答和 wiki 没有提供"隔行模式"的使用示例。 可能的设置显示为"渐进"、"交错"和"混合"。

    我已经尝试过流水线的许多排列、但到目前为止没有一个。

    您是否有任何使用 gstreamer 捕获/生成半帧高度顶部/底部字段的 VIP 示例、以及将 VPE 组合成之前所述的全帧?

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

    上面的示例是检查如何设置电容滤波器。

    但是、您可以尝试如下操作:
    gst-launch-1.0 -v v4l2src device=/dev/video1 io-mode=4! 'video/x-raw、format=(string) YUY2、width=(int) 720、height=(int) 288、framerate=(fraction) 30/1'
    !! VPE num-input-buffers=8! 'video/x-raw、format=(string) NV12、width=(int) 720、height=(int) 576、framerate=(fraction) 30/1'! 排队! 陆上接收机

    您还可以尝试 captuprepedisplay 演示。

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


    GStreamer 不支持 v4l2的交替模式、因此无法对所描述的流水线使用 gstreamer (未经修改)。
    我已经能够让 VPE 级扩大磁场、但这种方法具有最高/最低场抖动。

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

    实际上、v4l2src 元素不是 TI 元素。
    但是、您可以检查这些线程:
    e2e.ti.com/.../618455
    e2e.ti.com/.../660340
    e2e.ti.com/.../2465762

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

    GStreamer 'v4l2src'不支持传递顶部/底部字段信息。 可能可以修补 gstreamer 以支持此功能、但目前不起作用。

    我已经检查了您提到的其他主题、618455基本上是我报告的同一个问题、似乎没有得到实际解决。 660340没有提到 gstreamer。 66961以660340的副本关闭。

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

    您好!

    [引用 user="Dan Searles">GStreamer 'v4l2src'不支持传递顶部/底部字段信息。 可能可以修补 gstreamer 以支持此功能、但此时它不起作用。[/quot]

    正如我说过的、gstreamer v4l2src 元素不是 TI 元素。

    [引用 user="Dan Searles">]我已经检查了您提到的其他线程、618455基本上与我报告的问题相同、似乎没有得到实际解决。 660340没有提到 gstreamer。 66961以660340的副本关闭。[/引述]

    请查看 captuprepedisplay 演示、您是否观察到相同的问题。

    您还可以尝试使用我们最新的 PSDK 版本:

    https://e2e.ti.com/support/arm/sitara_arm/f/791/t/677971

    BR
    玛格丽塔

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

    你好

     问题不在 Capturrevpedisplay 上。 借助 captuprepedisplay (或我们的应用)、可以更好地控制缓冲区以及如何将它们从 VIP 传递到 VPE。

    问题是使用 gstreamer、特别是在视频源每次只产生一个字段(顶部或底部)的缓冲区的情况下-通常用于 NTSC 或 PAL 捕获器件、但也可能用于捕获"i"格式视频(1080i、720i 等)的 HD 器件。  captuprepedisplay 可以轻松处理这些内容、但 gstreamer 似乎缺少必要的支持。 但是、即使是 gstreamer 也会通过其 v4l2源代码使用 TI vIP.c 代码、并且 TI vIP.c 可能可以解决 gstreamer 限制... 我不确定。 可能还需要修改不在 TI 支持范围内的 gstreamer 代码。

    请注意、某些捕获器件可能会产生包含顶部和底部字段的缓冲区。 此问题并非如此。 我相信 gstreamer 有针对这种情况的 cap /支持。