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.

[参考译文] AM5728:视频同步器时间戳问题

Guru**** 2616675 points

Other Parts Discussed in Thread: AM5728

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/639672/am5728-videomixer-timestamping-problem

器件型号:AM5728

您好!

我正在尝试将 PNG 图像的缓冲区实时叠加到 h264编码视频流。 我将使用以下管道进行测试:

gst-launch-1.0 -v videotestsrc! 视频/x-raw、宽=800、高=480、帧速率=30/1! \
ducatih264enc! 诱骗! \
VIDEO/x-RAW、FORMAT=NV12! VPE! VIDEO/x-RAW、FORMAT=RGB! \
videomixer name=Mix Six Sink_0:::alpha=1 sink_1::::alpha=0.7! \
waylandsink sync-true \
multifilesrc location="img.%04d.png" index=0 stop-index=1 loop=true caps="image/png、framerate=\(frame\) 30/1"! 很棒! 视频装饰! 混合。 

当 waylandsink sync-true 时、EVM 上的视频流帧速非常低、并显示以下消息:

可能存在时间戳问题,或者此计算机速度太慢。 

当 landsink sync-false 时、视频流帧速仍然很低、但它似乎捕获每个帧并删除上面的消息、但以极高的延迟显示。

我无法成功地更改诱骗以使用 ducatih264dec、不知道原因。 两个内核之间的 CPU 使用率约为50/50、因此我认为问题可能在于时间戳。 我是否缺少一些电容器、或者我可以添加什么来解决时间戳问题?

谢谢、

Vishal

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

    您好!

    我建议您在流水线中添加队列元素、设置 SYNC=false 并设置具有高度、宽度 等的电容滤波器

    [引用 user="Vishal]I 无法成功更改 bebindin 以使用 ducatih264dec,不确定原因。 [/报价]

    您是否在解码和编码之间添加了解析器元素?

    BR
    玛格丽塔

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

    您好、Margarita、

    感谢您的快速回复。 我刚刚运行了这个更新的流水线。 编码和解码之间的解析器元素缺失。 我在视频接收器输入之前添加了队列、但它似乎对在接收器上看到的低帧速率没有影响。

    gst-launch-1.0 -v videotestsrc! 视频/x-raw、宽=800、高=480、帧速率=30/1! \
    ducatih264enc! h264parse! ducatih264dec! \
    VIDEO/x-RAW、FORMAT=NV12、帧速率=30/1! VPE! VIDEO/x-RAW、FORMAT=RGB、帧速率=30/1! \
    队列! videomixer name=Mix Sink se_0:::alpha=1 sink_1:::alpha=0.7! \
    waylandsink sync-false \
    multifilesrc location="img.%04d.png" index=0 stop-index=1 loop=true caps="image/png、framerate=\(frame\) 30/1"! 很棒! 视频装饰! 排队! 混合。 

    我还注意到 ducatih264dec 似乎调整了高度和宽度:

    /GstPipeline0/GstH264Parse:h264parse0.GstPad:src:cap ="video/x-h264\、\ width\=(int\) 800\、\ height\=(int\) 480\、\ alignment\=(string\) au\、\ stream-format\(byte.\)串流...
    /GstPipeline0/GstDucatiH264Dec:ducatih264dec0.GstPad:src:cap ="VIDEO/x-rain\、\ format\=(string\) NV12\、\ width\=(int\) 896\、\ height\=(int\) 576\、frame\、1帧速率.... 

    如果您可以具体建议将队列元素和大写的放置位置、这将非常有帮助。

    谢谢、

    Vishal

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

    您好!

    请在 VPE 之前和之后的电容滤波器中添加高度、宽度属性。

    您可以在编码和解码之前添加队列。

    (笑声)

    排队! ducatih264enc! h264parse! 排队! ducatih264dec! VPE! VIDEO/x-RAW、width=800、height=480、format=RGB、framerate=30/1!

    (笑声)

    您似乎已经对 VPE 元素进行了一些更改、对吧?

    我建议您在没有第二个分支(png 解码)的情况下运行流水线、并检查您一侧的行为。

    BR

    玛格丽塔

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

    您好、Margarita、

    是的、我使用 VPE 补丁来启用从另一个论坛帖子中获得的 RGB 输出。

    我运行了以下流水线、但输出仍然是低帧速率:

    gst-launch-1.0 -v videotestsrc! 视频/x-raw、宽=800、高=480、帧速率=30/1! \
    队列! ducatih264enc! h264parse! 排队! ducatih264dec! \
    VIDEO/x-RAW、宽度= 896、高度= 576! VPE! VIDEO/x-RAW、width=800、height=480、format=RGB、framerate=30/1! \
    队列! videomixer name=Mix Six Sink_0:::alpha=1! \
    航迹接收器同步=错误
    

    我在 VPE 之前使用和不使用高度和宽度电容器来运行此操作-结果相同。 ducatih264dec 不喜欢800x480电容、因此我必须将其设置为前面提到的896x576 (不确定原因)。

    没有 VPE 颜色空间转换、是否可以顺利运行用于我的用例的视频化程序?

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

    您能否尝试如下流水线:
    GST-LAUNCH-1.0 videomixer name=混音器! 视频转换! waylandsink sync-false videotestsrc! 视频/x-raw、宽=800、高=480、帧速率=30/1! 排队! ducatih264enc! h264parse! 排队! 杜拉蒂哈264decvpe! VIDEO/x-RAW、宽度=800、高度=480! 排队! 混频器。 videotestsrc pattern=13! "video/x-raw、format=AYUV、width=320、height=240、framerate=(分数)10/1"! 排队! 混频器。

    您可以检查此 e2e 线程以查看具有合成器元素的示例:
    e2e.ti.com/.../593312


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

    您好、Margarita、

    是的、它会运行、但它不满足我的延迟要求。 当我尝试使用来自 RTP 的我自己的编码源(与编码的 videotestsrc 相反)时、我会随着时间的推移得到一个不断增加的延迟、大约为10秒到甚至几分钟。 是否有方法可以降低此延迟或至少将其保持在较低的固定延迟?

    此外、我注意到您在另一个主题中提到、AM5728上没有视频混合器、但是否有其他方法可以利用 GPU 进行视频混合?

    感谢您提供的任何资源或建议。

    谢谢、

    Vishal

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

    您好!

    您是否尝试使用合成器元素而不是视频化合器?

    您是否也可以尝试增加 VPE 元素的 num 缓冲区属性?

    请同时设置(增加的值)队列属性。

    BR
    玛格丽塔

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

    您好、Margarita、

    感谢您的回复。

    我已经尝试过以上所有建议、但输出视频的延迟仍会随着时间的推移而不断增加。

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

    您好!

    [引用 user="Vishal]GS-launch-1.0 -v videotestsrc! 视频/x-raw、宽=800、高=480、帧速率=30/1! \队列! ducatih264enc! h264parse! 排队! ducatih264dec! \ VIDEO/x-RAW、宽度= 896、高度= 576! VPE! VIDEO/x-RAW、width=800、height=480、format=RGB、framerate=30/1! \队列! videomixer name=Mix Six Sink_0:::alpha=1! \航迹接收器同步=错误[/报价]

    您的用例是什么?

    因为在上面的流水线中、您可以删除编码器、解析和解码器元素。 类似如下:

    GST-LAUNCH-1.0 videomixer name=混音器! 视频转换! landsink videotestsrc pattern=Snow! "VIDEO/x-RAW、FORMAT=AYUV、width=800、height=600、帧速率=(分数) 30/1"! 排队! 混频器。 videotestsrc pattern=13! "video/x-raw、format=AYUV、width=320、height=240、framerate=(分数)10/1"! 排队! 混频器。

    BR
    玛格丽塔

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

    我的用例涉及以 MJPEG (30fps)编码的 RTP 视频流、需要对其进行解码、我需要在其顶部覆盖一个 PNG 缓冲器(~10fps)。 我使用的具有大量延迟的流水线如下所示:

    gst-launch-1.0 -v videomixer name=混音器! 视频转换! landsink sync-false \
    udpsrc port=1234 caps="application/x-rtp、media=(string) video、loads=(int) 26、clock-rate =(int) 90000、ssrc =(guint) 2823054885"! rtpjitterbuffer! 很棒的酒店! 队列最大大小缓冲区=5000! 诱骗! VPE! VIDEO/x-RAW、宽度= 800、高度= 480、格式= NV12、帧速率= 30/1! 队列最大大小缓冲区=5000! 混频器。 \
    videotestsrc pattern=1! VIDEO/x-RAW、FORMAT=AYUV、width=320、height=240、framerate=10/1! 队列最大大小缓冲区=5000! 混频器。 

    除了我将第二个视频分支替换为多文件 rc 和 PNG、我已确认 PNG 正在工作。 此流水线运行、但延迟似乎随着时间的推移而增加、这对于我的用例是不可接受的。 在我的用例中、我还会将 videomixer 的输出转换为 h264、然后将文件链接、而不是 waylandsink;我只是使用 wayland sink、这样我就可以在显示屏上看到延迟。 我的最终流水线看起来更像这样(但即使在这种情况下,我也会获得可变延迟):

    gs-launch-1.0 -v udpsrc port=1234 caps="application/x-rtp、media=(string) video、loads=(int) 26、clock-rate =(int) 90000、ssrc=(guint) 2823054885"! rtpjitterbuffer! 很棒的酒店! 诱骗! VPE! \
    VIDEO/x-RAW、FORMAT=RGB、width=800、height=480、framerate=30/1、 interlace-mode=progressive,像素宽高比=1/1! \
    videomixer name=Mix Six Sink_0:::alpha=1 sink_1::::alpha=0.7! 视频转换! \
    VIDEO/x-RAW、FORMAT=NV12、width=800、height=480、framerate=30/1! \
    ducatih264enc! filesink location=test_transcode.h264 sync-true \
    multifilesrc location="img.%04d.png" index=0 stop-index=1 loop=true caps="image/png、framerate=\(frame\) 10/1"! 很棒! 视频装饰! 混合。 

    谢谢

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

    您好!

    我建议您:
    1.在文件链接元素(ts-offset 属性)中添加延迟。 您可以使用 GST-CHECK 命令检查此属性的范围。
    2.禁用同步(SYNC=false)。
    3.在文件链接之前,请添加! queue max-size-bytes=65536 max-size-buffers=1000 max-size-time=0 leaky=下游!...同样、通过 GST 检查、您可以检查队列属性。
    4.在管道中添加更多队列。
    5.在 ducatih264enc 之后添加 h264parse 元素(在其他情况下,.h264文件可能已损坏)。


    BR
    玛格丽塔

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

    您好、Margarita、

    感谢您的建议。 我尝试了以下管道:

    gs-launch-1.0 -v udpsrc port=1234 caps="application/x-rtp、media=(string) video、loads=(int) 26、clock-rate =(int) 90000、ssrc=(guint) 2823054885"! rtpjitterbuffer! 很棒的酒店! 排队! 诱骗! VPE! \
    VIDEO/x-RAW、FORMAT=RGB、width=800、height=480、framerate=30/1、 interlace-mode=progressive,像素宽高比=1/1! \
    videomixer name=Mix Six Sink_0:::alpha=1 sink_1::::alpha=0.7! 视频转换! \
    VIDEO/x-RAW、FORMAT=NV12、width=800、height=480、framerate=30/1! \
    队列! ducatih264enc! h264parse! queue max-size=65536 max-size-buffers=1000 max-size-time=0 leaky=下游! \
    filesink location=test_transcode.h264 ts-offset=-30000000000 sync-false \
    multifilesrc location="img.%04d.png" index=0 stop-index=1 loop=true caps="image/png、framerate=\(frame\) 2/1"! 很棒! 视频装饰! 混合。 

    它可以运行、但录制的视频文件的延迟仍然大于30-60秒、并且看起来不是恒定的。 我尝试使用 ts-offset (负和正)的值、但最终结果变化不大。

    为了提供更多背景信息、传入的 RTP 流包含1920x1080 MPEG 视频、而 VPE 可向下扩展至800x480。 当我运行此流水线时、两个内核之间的 CPU 使用率接近100%。 我假设视频录像机正在利用 CPU 进行软件渲染。 这种行为是此用例的典型行为、还是视频混合器应该能够以更低的固定延迟进行处理?

    谢谢、

    Vishal

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

    您好!

    [引用 user="Vishal"]它运行,但录制的视频文件的延迟仍大于30-60秒,并且看起来不是恒定的。

    这可能是网络问题。 您是否可以尝试流式传输较低的分辨率

    是否可以增加有效载荷=96并设置编码名称(推荐)?  

    [引用 user="Vishal"]传入的 RTP 流包含1920x1080 MPEG 视频[/quot]

    我很困惑您正在流式传输 MPEG 或 MJPEG 或其他内容吗?

    您可以使用顶部命令检查 CPU 负载是否高于可以观察到的 fps 下降。

    Videomixer 元素不是 TI 元素、它是开源元素、因此我建议您通过互联网搜索使用情况等

    [引用 user="Vishal"]诱骗他人! VPE! \ VIDEO/x-RAW、FORMAT=RGB、width=800、height=480、framerate=30/1、 interlace-mode=progressive,像素宽高比=1/1! \[/报价]

    format=RGB 是因为编码器需要 NV12格式、因此应为 NV12。 我看到有一个视频转换元素将 pngdec 的输出转换为 RGB、然后转换为 NV12。如果直接设置 NV12、该元素应该起作用。 这是额外的内存副本。

    根据我的理解,您的用例是视频+png->Mix->ence->codg2分支并保存到文件中?

    BR
    玛格丽塔

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

    您好、Margarita、

    1.很抱歉,编码视频流在 MJPEG 中。 您对用例的理解也是正确的。

    2.我不认为这是网络问题,因为没有视频同步器的到陆地和文件链接的管道运行良好。

    3、如前所述、两个内核之间的 CPU 使用率高达100%。

    4.我更改了 PAYLOAD=96,但这不起作用,因为 JPEG 编码对应26。

    5.最初我使用 RGB,是因为我想避免将视频转换全部使用,以最大程度地减少 CPU 软件呈现。 我按照您的建议将其改回 NV12。 现在、延迟似乎更具可重现性。 但是、现在我注意到、录制大约40-50秒后、PNG 交替仍在继续录制、但后台摄像头馈送完全冻结。 它通常保持冷冻状态、但一旦我看到它恢复运行。 我尝试在视频接收器接收之前添加队列、但没有效果。 有什么想法吗? 我使用的管道为:

    gs-launch-1.0 -v udpsrc port=1234 caps="application/x-rtp、media=(string) video、loads=(int) 26、clock-rate =(int) 90000、ssrc=(guint) 2823054885"! rtpjitterbuffer! 很棒的酒店! 排队! 诱骗! VPE! \
    VIDEO/x-RAW、FORMAT=NV12、width=800、height=480、framerate=30/1! \
    videomixer name=Mix Six Sink_0:::alpha=1 sink_1::::alpha=0.7! 视频转换! \
    VIDEO/x-RAW、FORMAT=NV12、width=800、height=480、framerate=30/1! \
    队列! ducatih264enc! h264parse! queue max-size=65536 max-size-buffers=1000 max-size-time=0 leaky=下游! \
    filesink location=test_transcode.h264 ts-offset=30000000000 sync-false \
    multifilesrc location="img.%04d.png" index=0 stop-index=1 loop=true caps="image/png、framerate=\(frame\) 5/1"! 很棒! 视频装饰! 混合。 

    谢谢、

    Vishal

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

    您好!

    [引用 user="Vishal"]4. 我更改了 PAYLOAD=96、但这不起作用、因为 JPEG 编码对应于26。

    如果有效载荷值>=96、 则还应设置编码名称。 下面是编码-name=(string) JPEG 示例


    我在视频装饰元件之后的管道中看不到电容器滤波器。 下面是视频装饰用法示例...!  视频装饰! 视频/x-raw、帧速率=5/1! (笑声)

    [引用 user="Vishal"],PNG 交替模式仍会继续记录,但后台摄像机源完全冻结。 它通常保持冻结状态、但一旦我看到它恢复运行[/引述]

    我不确定我是否理解这一点。

    如果删除 png 分支、您会看到这个吗?

    由于延迟降低、您可以在删除 ts-offset=30000000000时尝试一下吗?

    BR
    玛格丽塔

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

    我要关闭此主题。
    如果仍无法解决、请重新打开。

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

    您好、Margarita、

    对迟交的答复表示歉意。 我尝试了您的最新建议,但我之前提到的问题仍然存在。 我上次的意思是、最终输出(h264编码混合视频流)有一些延迟、但在大约40-50秒前有有效记录、之后摄像头流被冻结、但 png 分支继续通过 PNGs 的缓冲区交换。 基本上、40-50秒后的其余视频录制是具有换用 PNG 覆盖的冻结摄像头流。

    是否有任何关于这种情况可能发生的建议? 当我将摄像机流保存到直接编码到文件链接的 h264时(没有视频流)、此冻结行为不存在。 下面是我运行的流水线:

    gs-launch-1.0 -v udpsrc port=1234 caps="application/x-rtp、media=(string) video、loads=(int) 26、encoding-name=(string) JPEG、clock-rate =(int) 90000、 SSRc=(guint) 2823054885"! rtpjitterbuffer! 很棒的酒店! 排队! 诱骗! VPE! \
    VIDEO/x-RAW、FORMAT=NV12、width=800、height=480、framerate=30/1! \
    videomixer name=Mix Six Sink_0:::alpha=1 sink_1::::alpha=0.7! 视频转换! \
    VIDEO/x-RAW、FORMAT=NV12、width=800、height=480、framerate=30/1! \
    队列! ducatih264enc! h264parse! queue max-size=65536 max-size-buffers=1000 max-size-time=0 leaky=下游! \
    filesink location=test_transcode.h264 ts-offset=30000000000 sync-false \
    multifilesrc location="img.%04d.png" index=0 stop-index=1 loop=true caps="image/png、framerate=\(frame\) 5/1"! 很棒! 视频装饰! 视频/x-raw、帧速率=5/1! 混合。 

    谢谢、

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

    在这些情况下、您是否观察到挂起?

    1。
    gs-launch-1.0 -v udpsrc port=1234 caps="application/x-rtp、loads=(int) 26、encoding-name=(string) JPEG"! rtpjitterbuffer! 排队! 很棒的酒店! 排队! jpegparse! 排队! 极好的地方! VIDEO/x-RAW、FORMAT=NV12、width=800、height=480! videomixer name=Mix Sink se_0:::alpha=1 sink_1:::alpha=0.7! 视频转换! 排队! ducatih264enc! h264parse! 排队! filesink location=test_transcode.h264 sync-false multifilesrc location="img.%04d.png" index=0 stop-index=1 loop=true caps="image/png、framerate=\(frame\) 5/1"! 很棒! 混合。

    2.
    如果将 udpsrc 替换为 filesrc。

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

    1.当我尝试使用该管道时,最终输出视频全部以随机颜色混乱,在运行时,我会定期收到以下消息:

    接收到无效的视频缓冲
    区警告:来自元素/GstPipeline:Pipeline0/GstVideoConvert:videoconvert0:内部 GStreamer 错误:代码未实现。 请在 bugzilla.gnome.org/enter_bug.cgi 上提交错误。
    其他调试信息:
    ./../../../gst-plugins-base-1.8.3/gst-libs/gst/video/gstvideofilter.c (292):GST_VIDEO_FILTER_TRANSFORM ():/GstPipeline0/GstVideoConvert:videoconvert0:
    

    2.当我用文件 rc 替换 udpsrc 时,管道不起作用

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

    很抱歉、我忘记了视频转换元素后的 capsfilter。
    gs-launch-1.0 -v udpsrc port=1234 caps="application/x-rtp、loads=(int) 26、encoding-name=(string) JPEG"! rtpjitterbuffer! 排队! 很棒的酒店! 排队! jpegparse! 排队! 极好的地方! VIDEO/x-RAW、FORMAT=NV12、width=800、height=480! videomixer name=Mix Sink se_0:::alpha=1 sink_1:::alpha=0.7! 视频转换! VIDEO/x-RAW、FORMAT=NV12、width=800、height=480! 排队! ducatih264enc! h264parse! 排队! filesink location=test_transcode.h264 sync-false multifilesrc location="img.%04d.png" index=0 stop-index=1 loop=true caps="image/png、framerate=\(frame\) 5/1"! 很棒! 混合。

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

    您好、Margarita、

    感谢您的快速回复。

    我运行了您更新的流水线、但帧速率为5fps、因此我在视频接收器处添加了30fps 电容(用于摄像机馈送)。 同样、我看到的摄像头馈电冻结问题与我多次描述的问题相同。 但是、出于好奇、我通过 VPE 将摄像机馈送缩小到了400x240、发现延迟很小、即使在2分钟的记录后、我也看不到任何冻结。 您是否怀疑在较高分辨率而不是较低分辨率下可能导致此问题发生的任何情况? 它是否可以与有限的 CMA/CMEM 缓冲池大小有关?

    gs-launch-1.0 -v udpsrc port=1234 caps="application/x-rtp、loads=(int) 26、encoding-name=(string) JPEG"! rtpjitterbuffer! 排队! 很棒的酒店! 排队! jpegparse! 排队! 极好的地方! VIDEO/x-RAW、FORMAT=NV12、width=400、height=240、framerate=30/1! videomixer name=Mix Sink se_0:::alpha=1 sink_1:::alpha=0.7! 视频转换! VIDEO/x-RAW、FORMAT=NV12、width=400、height=240! 排队! ducatih264enc! h264parse! 排队! filesink location=test_transcode.h264 sync-false multifilesrc location="img.%04d.png" index=0 stop-index=1 loop=true caps="image/png、framerate=\(frame\) 5/1"! 很棒! 混合。 



    再次感谢、

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

    在您的一侧测试这种情况的简单方法是用视频频取代 VPE。
    gs-launch-1.0 -v udpsrc port=1234 caps="application/x-rtp、loads=(int) 26、encoding-name=(string) JPEG"! rtpjitterbuffer! 排队! 很棒的酒店! 排队! jpegparse! 排队! 极好的体验! 视频! VIDEO/x-RAW、FORMAT=NV12、width=400、height=240、framerate=30/1! videomixer name=Mix Sink se_0:::alpha=1 sink_1:::alpha=0.7! 视频转换! VIDEO/x-RAW、FORMAT=NV12、width=400、height=240! 排队! ducatih264enc! h264parse! 排队! filesink location=test_transcode.h264 sync-false multifilesrc location="img.%04d.png" index=0 stop-index=1 loop=true caps="image/png、framerate=\(frame\) 5/1"! 很棒! 混合。

    如果工作正常、您可以增加 CMA。

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

    您好、Margarita、

    您刚才发送的管道中似乎缺少一些电容器。 我遇到未协商错误。 它从 udpsrc 中显示出来、但我认为问题是 ducatijpegdec、正如我之前遇到过的、但不确定缺少哪些电容器:

    正在将管道设置为暂停...
    /GstPipeline0/GstMultiFileSrc:多文件 rc0.GstPad:src:cap ="image/png\、\ width\=(int\) 1\、\ height\=(int\) 1\、\ framerate\=(caps\) 5/1\、gstpage=
    
    (tagetr/) gstrgpense= 1、gstrandecure=/gstrgrandrity= 1 (tegr/) gstpx (tegrandecuresx)/gstrandecuresx (gstpx) gstr/(gstr/?gstrgstr/?/gstpx (gstr/?/gstpec/?gstr/?/gstr/?/gstpecr/?tecures= gstr/?) gstr/?/gstr/?tecures= gstr/?/gstr/?/gstr/?tecures=?
    
    /GstPipeline0/GstVideoMixer2:Mix.gstVideoMixer2Pad:SINK_1:cap ="VIDEO/x-RAW\、\ format\=(string\) RGBA\、\ width\=(int\) 300\、\ height\=(int\) 300\、\、\ inter-mode-= 1) rape-mixel 1 (pixel
    1)、pixel 比纹理1)...(逐行距)设置 RGB
    新时钟:GstSystem 时钟
    /GstPipeline:r0/GstUDPSrc:udpsrc0.GstPad:src:cap ="application/x-rtp\、\\=(int\) 26\、\编码-name\=(string\) JPEGitrfet
    
    =/trapereperm\(string\) rptr =/pstrptr =/rtpx (rtpx) pstrfet =/rgetterpx (traperr) r000x、getterp/(trampr) pstrecr000x (traper=) rt:getteperfet =/itrt (tramp_rt) p/(traperf) pstrt) p/(traperf) p/(trampr) pstrt (tramp.t) pstr000p/(tramp.t) petrt) p/(trapps = gprt) p/(trecrt) p/(tramp.
    
    
    cap ="application/x-rtp\、\ PAY\=(int\) 26\、\编码名称\=(字符串\) JPEG\、\媒体\=(字符串\)视频\、\时钟速率\=\(int\) 90000、
    \ GstPipeline:fipeline 0/Gstrptp Gepay:degay:r\n gape\(trape\
    ) 100、gapps
    =/fraines\(gestdegr)/fray\(gaper\(gest\) degr) degrate\(gest\(gest\)/fr) 1020102020d/ gape\(gape\(gaper\(gaper\)/fr)/fr) gaper\(tfr) gaper\(gest\(gest\(tfr) gest\(tfr) gest\(tfr) gest\(tfr) gest\(gest\(tfr) gest\
    
    
    cap ="image/jpeg、\已解析\=\(
    布尔值\) true\、\ format\=\(string\) UYVY\、\ width\=(int\) 1920\、\ height\=(int\) 1080、帧速率\=(trlofer\)/frastpin\(tore\)/frainer=
    20、gest\(tore\(tex\)/degin\(tore=)/fraintrles\(tin\)/fetces\(tore=)/degines\(tore=)/degintrue\(tal\(tin\)/fet=)/frandecures\(tex\(tore=) x、gest\(trles\)/fet\(true\)/fet=)/faper\(true\(true\)/faper\(true\(true\)/fet=)/
    
    
    从元素/GstPipeline:流水 线0/GstUDPSrc:udpsrc0:内部数据流错误。
    其他调试信息:
    ./../../../gstreamer-1.8.3/libs/gst/base/gstbasesrc.c (2948):GST_BASE_SRC_LOOP ():/GstPipeline0/GstUDPSrc:udpsrc0:
    流任务暂停、未协商原因(-4)
    执行在0:00:00.297842901后结束
    

    谢谢、

    Vishal

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

    您应在此电容器中删除帧速率:
    !! 视频! VIDEO/x-RAW、FORMAT=NV12、width=400、height=240、framerate=30/1!

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

    我在运行时将帧速率从视频中删除。 它会运行、但同样的问题是摄像头馈电在40-50秒后冻结。 但必须注意的是、录制2分钟后、摄像头馈送有时会解除冻结。 只是不确定是什么导致摄像机冻结的开始、因为摄像机馈送在常规录制中不会冻结(没有视频播放器)。

    是否可以调整队列以适应这种情况、或者流水线在存储器缓冲器上简单地运行低电平?

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

    由于即使在视频录制过程中它也会冻结、因此问题不在 VPE 中。
    视频化程序可能有问题。
    是否可以尝试在 videomixer 元素之前添加队列元素以提供更多缓冲(队列泄露=下游)?

    您也可以尝试此操作。 png 分支被删除:

    gs-launch-1.0 -v udpsrc port=1234 caps="application/x-rtp、loads=(int) 26、encoding-name=(string) JPEG"! rtpjitterbuffer! 排队! 很棒的酒店! 排队! jpegparse! 排队! 极好的地方! VIDEO/x-RAW、FORMAT=NV12、width=400、height=240! videomixer name=混合! 排队! 视频转换! VIDEO/x-RAW、FORMAT=NV12、width=400、height=240! 排队! ducatih264enc! h264parse! 排队! 文件链接位置=test_transcode.h264 sync-false

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

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

    您好、Margarita、

    感谢您的建议。

    添加队列泄露=在视频定时程序之前的下游,它似乎增加了在冻结之前记录的时间。 现在、它往往会在大约80秒的记录后冻结。

    我尝试了您在没有 png 分支的情况下提供的流水线、这在没有冻结的情况下工作正常。

    我还尝试了使用 videomixer 的流水线、而不是 png 分支我在 videtestsrc 中混合、这也提供了类似的冻结结果:

    gs-launch-1.0 -v udpsrc port=1234 caps="application/x-rtp、loads=(int) 26、encoding-name=(string) JPEG"! rtpjitterbuffer! 排队! 很棒的酒店! 排队! jpegparse! 排队! 极好的地方! VIDEO/x-RAW、FORMAT=NV12、width=800、height=480! 队列泄露=下游! videomixer name=Mix Sink se_0:::alpha=1 sink_1:::alpha=0.7! 排队! 视频转换! VIDEO/x-RAW、FORMAT=NV12、width=800、height=480! 排队! ducatih264enc! h264parse! 排队! 文件链接位置=test_transcode.h264 sync-false \
    videotestsrc pattern=1! \
    VIDEO/x-RAW、FORMAT=ARGB、帧速率=\(分数\) 30/1、宽度= 200、高度= 200! 混合。 

    是否有其他选项可用于在 AM5728上实现此视频混合、对硬件块进行优化或 GPU 加速?

    再次感谢、

    Vishal

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

    我在我的一侧跑过这个流水线~14分钟、未观察到显示屏上出现挂起/冻结。
    root@am57xx-EVM:~# gst-launch-1.0合成器名称= mix! 排队! 视频转换! waylandsink sync-false videotestsrc! VIDEO/x-RAW、FORMAT=NV12、width=1280、height=720、framerate=30/1! 排队! 很棒的酒店! jpegparse! 排队! 极好的地方! 'video/x-raw、format=(string) NV12、width=(int) 800、height=(int) 480'! 混合。 videotestsrc pattern=18! 'video/x-raw、format=(string) AYUV、framerate=(fraction) 5/1、width=(int) 200、height=(int) 200'! 混合。
    正在将管道设置为暂停...
    [96.563776] OMAP-IMU 55082000.MMU:55082000.MMU:版本2.1
    管道是 PREROLLING ...
    重新分配延迟...
    管道是 PREROLLED...
    正在将管道设置为正在播放...
    新时钟:GstSystemClock
    μ^Chandling 中断。
    中断:正在停止管道...
    0:14:53.091689053后结束执行
    正在将管道设置为暂停...
    正在将管道设置为就绪...
    正在将管道设置为 NULL ...
    正在释放管道...
    root@am57xx-EVM:~#

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

    您好、Margarita、

    我运行了您发送的流水线、它在我这边也能正常工作。 为了适应我的用例、我将其更改为以下内容并尝试:

    GST-LAUNCH-1.0合成器名称=混合! 排队! 视频转换! VIDEO/x-RAW、FORMAT=NV12、width=800、height=480! 排队! ducatih264enc! h264parse! 排队! filesink location=test_transcode.h264 sync-false udpsrc port=1234 caps="application/x-rtp、loads=(int) 26、coding-name=(string) JPEG"! rtpjitterbuffer! 排队! 很棒的酒店! 排队! jpegparse! 排队! 极好的地方! 'video/x-raw、format=(string) NV12、width=(int) 800、height=(int) 480'! 混合。 videotestsrc pattern=18! 'video/x-raw、format=(string) AYUV、framerate=(fraction) 30/1、width=(int) 200、height=(int) 200'! 混合。 

    同样、它会导致40秒左右后出现同样的冻结问题。 我还尝试了上述管道的一种变体(而不是 ducatih264enc -> filink)、它在录制一分钟左右后也会冻结。 请注意、我必须将 videotestsrc 的帧速率增加到30/1。 当我以5/1离开时、摄像机馈送也以5/1录入。 我尝试在摄像机馈电后添加电容器以将其修复为30/1、但我没有成功。 我尝试在 udpsrc 电容器中以及在 ducatijpegdecpe 之后添加帧速率电容器。 示例:

    GST-LAUNCH-1.0合成器名称=混合! 排队! 视频转换! VIDEO/x-RAW、FORMAT=NV12、width=800、height=480! 排队! ducatih264enc! h264parse! 排队! filesink location=test_transcode.h264 sync-false udpsrc port=1234 caps="application/x-rtp、loads=(int) 26、coding-name=(string) JPEG"! rtpjitterbuffer! 排队! 很棒的酒店! 排队! jpegparse! 排队! 极好的地方! 'video/x-raw、format=(string) NV12、width=(int) 800、height=(int) 480、framerate=(fraction) 30/1'! 混合。 videotestsrc pattern=18! 'video/x-raw、format=(string) AYUV、framerate=(fraction) 5/1、width=(int) 200、height=(int) 200'! 混合。 

    结果如下:

    正在将管道设置为暂停...
    管道处于活动状态,不需要 PREROLL...
    正在将管道设置为正在播放...
    新时钟:GstSystemClock
    redistribute later...
    重新分配延迟...
    **
    错误:gstducatividenc.c:426:gst_Ducati_videnc_configure:断言失败:(self->output_pool == NULL )
    中止(转储内核)
    

    设置 udpsrc 摄像头流的帧速率的正确方法是什么、以便视频/合成器在其接收端具有一致的30fps?

    谢谢、

    Vishal

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

    你好,Vishal,

    能否 使用 videomixer 元素删除管道中的 rtpjitterbuffer 元素?

    BR
    玛格丽塔

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

    您好、Margarita、

    我在没有 rtpjitterbuffer 的情况下尝试了以下流水线

    gs-launch-1.0 -v udpsrc port=1234 caps="application/x-rtp、loads=(int) 26、encoding-name=(string) JPEG"! 排队! 很棒的酒店! 排队! jpegparse! 排队! 极好的地方! VIDEO/x-RAW、FORMAT=NV12、width=800、height=480! 队列泄露=下游! videomixer name=Mix Sink se_0:::alpha=1 sink_1:::alpha=0.7! 排队! 视频转换! VIDEO/x-RAW、FORMAT=NV12、width=800、height=480! 排队! ducatih264enc! h264parse! 排队! 文件链接位置=test_transcode.h264 sync-false \
    videotestsrc pattern=1! \
    VIDEO/x-RAW、FORMAT=ARGB、帧速率=\(分数\) 30/1、宽度= 200、高度= 200! 混合。 

    冻结问题相同。

    谢谢、

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

    请在尝试删除-v 选项时使用。
    您使用的是 PSDK 版本?
    Videomixer 元素不是 TI 元素。
    您是否也可以尝试泄漏=上游。

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在没有-v 的情况下尝试过、并且泄漏=上游。 相同的结果。

    我相信我使用的是 PSDK 4.00.00.04。

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

    我尝试了该流水线。 该管道具有2个编码器和1个解码器:

    gst-launch-1.0 -v videotestsrc! VIDEO/x-RAW、FORMAT=NV12、width=1280、height=720、framerate=30/1! 排队! 很棒的酒店! jpegparse! 排队! 极好的体验! VPE num-input-buffers=8! 'video/x-raw、format=(string) NV12、width=(int) 800、height=(int) 480'! 队列泄露=下游! videomixer name=Mix Sink se_0:::alpha=1 sink_1:::alpha=0.7! 排队! 视频转换! VIDEO/x-RAW、FORMAT=NV12、width=800、height=480! 排队! VPE! ducatih264enc! h264parse! 排队! filesink location=test_transcode.h264 sync-=false videotestsrc pattern=1! VIDEO/x-RAW、FORMAT=ARGB、帧速率=\(分数\) 30/1、宽度= 200、高度= 200! 混合。

    我不会观察到挂起。
    GST-LAUNCH-1.0 playbin UI=文件:///home/root/test_transcode.h264视频接收器= waylandsink
    正在将管道设置为暂停...
    管道是 PREROLLING ...
    管道是 PREROLLED...
    正在将管道设置为正在播放...
    新时钟:GstSystemClock
    从元素"playbin0"获取 EOS。
    执行在0:05:35.088471749之后结束
    正在将管道设置为暂停...
    正在将管道设置为就绪...
    正在将管道设置为 NULL ...
    正在释放管道...

    除了额外的编码器(以提供 MJPEG 视频)、还有额外的 VPE 元素。 VPE 的属性 num-input-buffers 也被设置。 我尝试过相同的方法、但使用合成器元件时、结果是相同的。
    是否尝试增加此 udpsrc 的属性 buffer-size?
    如果 udpsrc 适合您的用例、您可以尝试将其替换为 rtspsrc 元素。

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

    您是否有机会尝试最新的建议?
    它现在工作吗?

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

    您好、Margarita、

    感谢后续行动。

    您提供的流水线在不冻结的情况下成功运行。 当我将 videotestsrc 分支更改为 udpsrc 分支时,在记录1分钟后出现同样的冻结问题。 我还尝试增加 udpsrc 的 buffer-size 属性、如下所示:

    gs-launche-1.0 udpsrc buffer-size=2147483647 port=1234 caps="application/x-rtp、loads=(int) 26、encoding-name=(string) JPEG"! rtpjitterbuffer! 排队! 很棒的酒店! 排队! jpegparse! 排队! 极好的体验! VPE num-input-buffers=8! VIDEO/x-RAW、FORMAT=NV12、width=800、height=480! 队列泄露=下游! videomixer name=Mix Sink se_0:::alpha=1 sink_1:::alpha=0.7! 排队! 视频转换! VIDEO/x-RAW、FORMAT=NV12、width=800、height=480! 排队! VPE! ducatih264enc! h264parse! 排队! filesink location=test_transcode.h264 sync-=false videotestsrc pattern=1! VIDEO/x-RAW、FORMAT=ARGB、帧速率=\(分数\) 30/1、宽度= 200、高度= 200! 混合。 

    在运行时、CPU 使用率通常约为130 %、我看到内存使用率开始时约为200 MIB、随着记录的继续、内存使用率增加到360 MIB 以上。 我还没有尝试将 udpsrc 替换为 rtpsrc。

    在我看来、考虑到没有使用 GPU 进行视频混合、为我的应用程序使用 videomixer 可能不是最好的方法。 我的最终目标是在 gstreamer 中的实时摄像机流的顶部叠加 QT 生成的内容、以便能够记录(编码并保存到文件中)。 我目前正在研究围绕 EGLImage 旋转的其他选项。 如果您有任何其他建议、请向我指出正确的方向。


    再次感谢您的支持、

    Vishal

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

    很抱歉、我不知道 QT。
    使用视频交点元件观察高 CPU 负载是正常现象。 也可以使用合成器元件、但 CPU 负载将再次更高。

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

    我将关闭此主题、对于 QT 问题、请打开一个新主题。

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

    线程的位置。 您是否了解任何支持硬件加速(GPU/视频硬件)视频或文本覆盖的 gstreamer 插件(开源或 TI)?

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

    如果您的意思是复合器或视频化器、TI 没有此类插件。
    您可以查看 TI 多媒体用户指南:
    processors.wiki.ti.com/.../Processor_Training:_Multimedia
    A15上运行着文本覆盖、视频交点、合成器等元素。

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    FWiw、我在使用 GS-launch-0.10的 rstpsrc 中遇到了同样的问题。 机器无法跟上传入帧速率、并且正在缓冲所有未处理的帧、直到达到内存限制。 我将"s-live=true"添加到源代码中、并将我的队列更改为"queue leaky=1 max-size-time=25000"、从而解决了这一问题。
    我不知道任何基于 GPU 的混频器/覆盖插件。
    我还遇到了使用大量 CPU 时间的 videotestsrc 问题。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    此主题已关闭。 请打开新的 e2e 主题。 提供有关您正在使用的 PSDK 版本等的信息

    BR
    玛格丽塔