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.

[参考译文] AM5708:使用 eglfs 后端的 QT5和加速视频回放

Guru**** 2539500 points
Other Parts Discussed in Thread: AM5708

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

https://e2e.ti.com/support/processors-group/processors/f/processors-forum/840605/am5708-qt5-and-accelerated-video-playback-using-eglfs-backend

器件型号:AM5708

尊敬的 TI 团队:

我们使用 H264视频解码插件、使用 Ducati 插件对视频进行解码、并希望在 QT 应用程序中加速播放。 使用 Gstreamer 流水线运行、解码和显示视频似乎可以正常工作:

gst-launch-1.0文件 rc locity=/big_buck_bunny_720x480_H264_AAC_25fps.mkv! 超棒的大学! h264parse! ducatih264dec! kmsink 

使用 Qt 时、我们注意到 QT 尝试将灌电流设置为 qmlsink 或任何其他类型。 使用 SDK 中使用的 Qt 示例时,我们看到屏幕上出现绿色边沿(与 https://e2e.ti.com/support/processors/f/791/t/550005?Artifacts-on-H-264-videos-playing-on-Qt5中的引用相同 )

管道中的 Matroka Demux 似乎检测到输入图像的宽度和高度正确:

0:00:02.431555642 274 0x107a60信息 matrosskademux matrossa-Demux .c:1500:gst_matrossa_Demux_add_stream: 使用 cap video/x-h264、level=(string) 3、profile=(string) main、codec_data=(buffer) 014d401effe10018674d401eda02d0f6c044000003000400000300c83c58ba800468ef80、stream-format=(字符串)添加焊盘'vc''vc' alignment=(string) au、width=(int) 720、height=(int) 480、PIXEL 纵横比=(分数) 1/1、帧速率=(分数) 25/1 

Ducati 插件似乎也检测到了这种非常好的情况:

视频/x-raw、帧速率=(fraction) 25/1、width=(int) 896、height=(int) 576、像素宽高比=(fraction) 1/1、 DRM_mem=(布尔值) true、max-ref-frames=(int) 18、format=(string) NV12、interlace-mode=(string) progressive 
0:00:26.401782107 292 bb1434fb0 info Ducati gstducatividdec:692:codec_process: 活动框架区域32、24、752、504、裁剪720x480

但当使用 QT 时、似乎未完成此裁剪:

视频/x-raw、帧速率=(fraction) 25/1、width=(int) 896、height=(int) 576、像素宽高比=(fraction) 1/1、 DRM_mem=(布尔值) true、max-ref-frames=(int) 18、format=(string) NV12、interlace-mode=(string) progressive 

这在两种情况下都是相同的。 那么、区别似乎在于视频链接(kmsink 与 qt (某些) sink)??

QT 与本机 GStreamer 之间的性能

此外、性能似乎也是一个问题、当使用 GST 启动或播放箱时、我看到 CPU 负载大约为3/5%、正如我在具有硬件视频解码的 AM5708上所期望的那样、 但是、当通过 Qt 显示时、我看到大约70%的 CPU 负载和非常高的内存负载。

请在这里帮助我们。

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

    您好!

    在运行 Qt 应用程序时、我想知道您是否启用或禁用了 Weston。 此外,如果您的应用程序不需要任何 Windows 管理器,我建议运行具有以下标志的应用程序" -platform linuxfb"

    此致、
    Krunal

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

    Krunal、您好!

    我们不使用任何窗口管理器、因此不使用 Weston。  

    目前、我们实施了 eglfs  

    ~# cat /etc/profile.d/qtenv.sh
    #/bin/sh
    
    export QT_QPA_platform=eglfs
    export QT_QPA_EGLFS_integration=none
    export QT_QPA_EGLFS_physical_width=216
    export QT_QPA_EGLFS_physical_height=135
    
    

    我们已经尝试了几个在 QT 中显示视频的选项:

    1.使用 QT 中的视频、视频输出和 MediaPlayer QML 对象显示

        -当不使用平台选项(默认为 eglfs)时,我们在 QT 中得到一个视频(高负载和绿色边缘),  
        -使用-platform linuxfb 时,我们看不到视频输出,但听到的是音频。 负载似乎正常。

    2.在 C++中使用编码 gstreamer 流水线。  

        -使用平台 eglfs (默认值)时、我们收到一条有关 DRM 器件已锁定/繁忙的错误。  
        -使用-platform linuxfb 时,我在 QT 应用程序上看到全屏显示的视频,加载正常。 (这看起来很有希望、但如何控制输出/显示位置)

    您能帮助我们选择上述选项以及如何继续?

    另外,也许还会解释平台 eglfs/linuxfb 之间的情况。

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

    您好!

    有关 eglfs/linufb 的更多信息、请参阅以下页面: https://doc.qt.io/qt-5/embedded-linux.html

    此致、
    Krunal

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

    您好!

    感谢分享、我之前见过此页面、但我可以看到它自 QT 5.11及更高版本以来有一些(有用的)更新。  
    我对以下内容感兴趣:

    目前、我们使用的平台 eglfs 性能良好、适用于我们的应用、如果实施正常、我们宁愿保留该实施:
    我想知道是否有某种解决方案来实现视频解码管道(使用 gstreamer 或....?) 输出某种覆盖的视频? 还是在 QT QML 对象中?  

     https://doc.qt.io/qt-5/embedded-linux.html#advanced-eglfs-kms-features 部分 似乎很有趣、也许您有一些特定于视频显示的有关此主题的示例?

    此致。

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

    大家好、有什么更新吗?

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

    您好!

    根据我的内部讨论、我们没有任何将 Qt 和 GStreamer 集成到一个应用中的示例。 我们确实有几个与显示相关的示例: 示例1 和 示例2

    此致、
    Krunal  

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

    您好 、Stef、

    我们遇到了与您相同的问题、您能告诉我您最终是如何解决的?  非常感谢   。

    此致、
    小瘤

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

    您好、Xiaoma、

    我们尚未(尚未)解决此问题、由于这些实现与我们的产品/平台使用情况相比有点偏、因此尚未测试/审查这些示例。

    根据以下示例、我们确实看到了2个要进一步探讨的主题:eglfs_kms;我们在一天内还没有处理这些主题、因此进一步调查可能是值得的。 同样、使用 linuxfb 获取完整 DRM 访问的 nulldrm 似乎相互交错、但首先我们要深入研究 eglfs_kms 插件。  

    仍在寻找解决方案、如果我们找到了一个、我们肯定会在此处分享(如果该主题仍然打开)、  
    目前、我们还有其他需要首先解决的项目优先级、  

    此致、

    步骤