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/PROCESSOR-SDK-AM57X:1080p 编码帧速率

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

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/612624/linux-processor-sdk-am57x-1080p-encode-frame-rate

器件型号:PROCESSOR-SDK-AM57X
主题中讨论的其他器件:AM5728

工具/软件:Linux

团队、

在采用最新 PSDK 的 AM5728 EVM 上,对于1920x1080p 编码,我只能看到5fps。  我正在使用以下管道... 我是否遗漏了什么?

gst-launch-1.0 videotestsrc num-buffers=100! 'VIDEO/x-RAW、format=(string) NV12、width=1920、height=1080、帧速率=(分数) 60/1'! ducatih264enc level=level-51 profile=HIGH! 排队! h264parse! mp4 mux! 文件链接位置= test.mp4

我的一个客户在寻找1080p60 /单通道...

此致、


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

    有几个问题-

    • 编码器与 输入流串行使用。 gstreamer 的"队列"元素用于对元素进行去耦。
    • 编码器的输入不是通过实时摄像头或其他实时设备馈送的。
    • 在较慢的 sdcard/NFS 上进行输入/输出

    我已经尝试过 gstreamer 流水线以下的测试、我发现它符合性能要求。  

    gst-launch-1.0文件 rc location=test.nv12! 视频粗格式=nv12宽度=1920高度=1080帧速率=60/1! 排队! ducatih264enc level=level-51 profile=HIGH ! 排队!  fakesink sync-false

    您也可以在 omapdrmtest 中使用 videnctest 应用程序来分析 gstreamer 之外的编码器性能并对其进行基准测试。  

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

    您好!

    我在我的一侧运行了几个测试。 结果如下:
    对于1080p30编码:
    gst-launch-1.0 videotestsrc num-buffers=120! 'VIDEO/x-RAW、format=(string) NV12、width=1280、height=720、帧速率=(分数) 30/1'! ducatih264enc level=level-51 profile=基线! 排队! h264parse! mp4 mux! 文件链接位置= test.mp4
    解码:
    GST-LAUNCH-1.0 playbin UI=文件:///home/root/test.mp4
    新时钟:GstSystemClock
    从元素"playbin0"获取 EOS。
    执行在0:00:03.998659789之后结束


    如果 num-buffters=120、解码的执行时间为4秒、即30fps。

    对于1080p60enc:
    gst-launch-1.0 videotestsrc num-buffers=600! 'VIDEO/x-RAW、format=(string) NV12、width=1920、height=1080、帧速率=(分数) 60/1'! ducatih264enc level=level-51 profile=基线! 排队! h264parse! mp4 mux! 文件链接位置= test.mp4
    (笑声)

    解码:
    GST-LAUNCH-1.0 playbin UI=文件:///home/root/test.mp4


    在0:00:10.001695798之后结束执行
    因此、对于编码文件的 Num-buffers=600、解码执行时间为10秒、60fps。
    如果 num-buffers=120、解码的执行时间为:在0:00:02.007382301之后结束执行。

    BR
    玛格丽塔

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

    您好!

    如果我们按照以下 gstreamer 流水线对来自 videotestsrc 的输入进行编码、则没有问题。 我们从编码视频中获得58fps、该视频使用以下管道进行捕捉。

    gst-launch-1.0 videotestsrc num-buffers=100! 'VIDEO/x-RAW、format=(string) NV12、width=1920、height=1080、帧速率=(分数) 60/1'! ducatih264enc level=level-51 profile=HIGH! 排队! h264parse! mp4 mux! 文件链接位置= test.mp4

    当我们根据以下管道使用使用 v4l2src 的 AM57xx EVM 摄像头板时、会出现低帧速率(5-6 FPS)问题。

    gst-launch-1.0 -e v4l2src device=/dev/video1 num-buffers=500 io-mode=5! 'video/x-raw、format=(string) NV12、width=(int) 1920、height=(int) 1080、帧速率=(fraction) 30/1'! ducatih264enc level=level-51 profile=HIGH! 排队! h264parse! mp4 mux! 文件链接位置= temp.mp4

    我们对捕捉方面的问题表示怀疑。

    为了计算 fps、我们使用了 fpsdisplaysink 管道、如下所示。

    gst-launch-1.0 -v -e v4l2src device=/dev/video1 num-buffers=100 io-mode=4! 'video/x-raw、format=(string) NV12、width=(int) 1920、height=(int) 1080/'! VPE num-input-buffers=8! 'video/x-raw、format=(string) NV12、width=(int) 1920、height=(int) 1080/'! 排队!  fpsdisplaysink

    运行上述管道后、输出为

    /GstPipeline0/GstFPSDisplaySink:fpsdisplaysinck0:最后一条消息=呈现:89,丢弃:0,电流:6.61,平均:6.82

    /GstPipeline0/GstFPSDisplaySink:fpsdisplaysinck0:最后一条消息=呈现:93,丢弃:0,电流:6.80,平均:6.82

    /GstPipeline0/GstFPSDisplaySink:fpsdisplaysinck0:最后一条消息=呈现:97,丢弃:0,电流:6.61,平均:6.81

    从元件"流水线0"获得 EOS。

    我们能否得出这样的结论:摄像机的平均 FPS 为6~7 FPS、这是我们对摄像机数据进行编码时帧速率较低的原因?

    此致、

    Praveen

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

    大家好、Manisha、

    根据 TI 所传达的信息、AM57xx EVM 摄像头能够以1920x1080分辨率发送10FPS。
    但是、我们在完成编码后实现了5FPS。 管道如下:

    gst-launch-1.0 -e v4l2src device=/dev/video1 num-buffers=500! 'video/x-raw、format=(string) NV12、width=(int) 1920、height=(int) 1080/'! ducatih264enc level=level-51 profile=HIGH! 排队! h264parse! mp4 mux! 文件链接位置= temp.mp4

    根据我们的信息、VIP 和编码器都能够处理1920x1080@60FPS。

    编码的5 FPS 是否为预期行为? 如果不是、如何实现10 FPS?

    此致、
    Praveen

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

    摄像机只能流式传输1080p @ 6.7 fps。 您可以通过运行 Yavta 应用程序来验证这一点,如下所示-
    #yavta -C60 -fYUYV -F/dev/null -s1920x1080 /dev/video1

    它是独立的捕获应用程序、用于捕获帧并存储在指定的文件中。 在上面的示例中、我们指定了/dev/null、因此没有文件写入。 在稳定状态下、Yavta 在其日志中打印6.7 fps。 您在 gstreamer 应用程序中发现的处理限制是由于摄像机无法流式传输高于6.7 fps 的1080p 帧。

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

    感谢您的回答、  

    我们能否从编码存储文件(mp4)实现相同的帧速率(6.7fps)? 您能不能建议1-2帧丢失的可能原因。

    BR、

    Praveen。

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

    Praveen、

    我发现仅使用 GST 启动的捕获就具有1-2帧丢弃。 在 gstreamer 启动流水线下花费13.3秒 预期需要10秒  

    # gst-launch-1.0 -e v4l2src device=/dev/video1 num-buffers=67 io-mode=4! 'video/x-raw、format=(string) NV12、width=(int) 1920、height=(int) 1080/'! fakesink sync-false

    正在将管道设置为暂停...
    管道处于活动状态,不需要 PREROLL...
    正在将管道设置为正在播放...
    新时钟:GstSystemClock
    从元件"流水线0"获得 EOS。
    执行在0:00:13.278984880之后结束
    正在将管道设置为暂停...
    正在将管道设置为就绪...
    正在将管道设置为 NULL ...
    正在释放管道...

    #gst-launch-1.0 -e v4l2src device=/dev/video1 num-buffers=67 io-mode=5! 'video/x-raw、format=(string) NV12、width=(int) 1920、height=(int) 1080/'! 排队! ducatih264enc level=level-51 profile=HIGH! 排队! h264parse! 排队! mp4 mux! 文件链接位置= temp.mp4

    正在将管道设置为暂停...
    [240784.987582] OMAP-iommu 55082000.MMU:55082000.MMU:2.1版
    管道处于活动状态,不需要 PREROLL...
    正在将管道设置为正在播放...
    新时钟:GstSystemClock
    从元件"流水线0"获得 EOS。
    执行在0:00:13.300860944之后结束
    正在将管道设置为暂停...
    正在将管道设置为就绪...
    正在将管道设置为 NULL ...
    正在释放管道...

    这需要调查。  

    此致、

    Manisha