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/AM4378:H.264文件解码

Guru**** 2606725 points


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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/585066/linux-am4378-h-264-file-decoding

器件型号:AM4378

工具/软件:Linux

尊敬的专家:

下面列出了4个问题、我希望有人能帮我解决。

我使用的是 AM437x GP EVM、它运行从 SD 卡引导的 ti-processor-sdk-linux-AM437X-EVM-03.02.00.05预构建映像。 我有一个 mp4 (h.264)文件、我想对该文件进行解码并测量帧速率和 CPU 负载方面的性能。 我正在解码的文件具有 VNC 报告的以下规格。

编解码器:H264 - MPEG-4 AVC (第10部分)(avc1)
分辨率:768x322
帧速率:24

我不熟悉 gstreamer、但我成功地使某项工作正常。 在 Weston 运行但矩阵被终止的情况下、我可以使用

root@AM437X-EVM:~# gst-play-1.0 /tmp/MyFile.mp4

我将文件放入 tmp 文件系统、我认为它基于 RAM、而不是从 SD 卡读取。 但它并没有真正带来性能差异。 它可以正确解码、我可以在 Weston 窗口中看到它。 我遇到的问题是、它只会显示大约5fps 的画面。 我本以为会期待更多。 Top 报告 gstreamer 的 CPU 负载约为75%、Weston 的 CPU 负载约为11%。

我尝试了其他 gstreamer 方法、例如:

gst-launch-1.0 -v playbin uri =文件:/tmp/MyFile.mp4

几乎可以获得相同的结果。 我的第一个问题是:

Q1)是否应该使用更好的流水线来获得更好的性能?

接下来、我开始检查矩阵 GUI 中"Multimedia (多媒体)"下的 h/264解码示例。 我在 TI wiki 页面上找到、这与矩阵屏幕上显示的所用 gstreamer 流水线相匹配。

gst-launch-0.10 filesrc loce=$filename ! h264parse ! ffdec h264 ! 超赞的色彩空间 ! fbdevsink 设备=/dev/fb0

但是、当我尝试它时、我得到了

root@AM437X-EVM:~# gst-launch-1.0文件 rc location=/tmp/MyFile.mp4! h264parse! ffdec h264! 超棒的色彩! fbdevsink 设备=/dev/fb0
警告:错误流水线:无元素"ffdec h264"

因此、我有几个与此相关的问题

Q2)这不是用于矩阵 GUI H.264解码示例的 gstreamer 命令?

Q3)矩阵 H.264解码演示的分辨率和帧速率是多少?

这是一个更通用的问题

Q4)是否有人知道在使用 gstreamer 时如何测量帧速率? 我用谷歌搜索了一段时间、但似乎没有什么对我有效的东西。

谢谢、

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

    您好!

    AM4738没有 IVA 子系统、因此电路板上运行的代码是软件编解码器。

    [~用户="Brad Caldwell ]root@AM437X-EVM:# gst-launch-1.0文件 rc location=/tmp/MyFile.mp4! h264parse! ffdec h264! 超棒的色彩! fbdevsink 设备=/dev/fb0
    警告:错误流水线:无元素"ffdec h264"[/quot]

    GStreamer 1.0版没有 ffdec h264元素、也没有 ffmpegcolorspace。 这些元素在 gstreamer 版本0.10中使用。 这就是您看到此错误的原因。

    GStreamer 1.0版具有 avdec h264元素、但我建议您查看:

    GST-Inspect -1.0 | grep "h264"您拥有的编解码器。

    我的侧面没有 AM4738板、因此我无法尝试。

    对于解码、我建议您对 gstreamer 1.0版使用 playbin 元素。

    GST-LAUNCH-1.0 playbin UI=文件:// 


    以下是 gstreamer 版本0.10的示例:
    http://processors.wiki.ti.com/index.php/ARM_Multimedia_Users_Guide

    [引用 user="Brad Caldwell ]Q4)是否有人知道在使用 gstreamer 时如何测量帧速率? [/报价]
    您可以尝试:
    GST 检查-1.0 "fpsdisplaysink"
    并使用该元件、而不是视频接收器元件。 fpsdisplaysink 元素适用于 GST 版本1.0、而不是0.10。
    在这种情况下、管道应:
    gs-launch-1.0 -v playbin uri =文件:/tmp/MyFile.mp4 video -sink=fpsdisplaysink

    希望这对您有所帮助。

    BR
    玛格丽塔

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    谢谢 Margarita、
    我成功使用了 avdec _h264和 fpsdisplaysink 并获得帧速率测量、我的流水线就在这里

    gst-launch-1.0 -v 文件 rc location"/tmp/MyFile.h264! 排队! h264parse! "avdec h264"! 视频转换! 排队! fpsdisplaysink 视频接收器=fbdevsink

    我意识到 AM437x 不适用于实时视频解码、但我仍然需要进行一些基准测试、我现在已经拥有了这些数据。

    我仍有问题 Q2和 Q3尚未解答、您或其他任何人能否回答这些问题。 我对矩阵代码进行了一些挖掘、但仍然找不到运行 H.264解码演示时使用的实际命令行和/或应用程序。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    关于问题2:
    可通过在顶层矩阵中选择"Multimedia (多媒体)"图标来运行的应用程序演示是 shell 脚本(*。sh)、它们正在运行 gstreamer 流水线。
    例如、对于 am57x、它们在/usr/bin.中分配

    BR
    玛格丽塔
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    我在/usr/bin.中找到了这些脚本 这很有帮助。 谢谢