在 NXP iMX8 上进行 4K 视频播放测试

2024-04-19 11:08

本文主要是介绍在 NXP iMX8 上进行 4K 视频播放测试,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

By Toradex 胡珊逢

1). 简介

高清多媒体,甚至是 4K 视频不仅在消费领域有着旺盛的需求,在行业领域同样也获得广泛的关注。NXP 最新的IMX8 处理器不仅配有强劲的 CPU和GPU,还对多媒体应用提供了完善的解决方案,如硬件解码支持H.265 HEVC Main Profile 2160p60 Level 5.1。下面我们将介绍如何从Yocto开始构建包含Gstreamer 的BSP、使用Toradex Easy Installer 安装系统、配置LVDS显示和播放多媒体文件。

 

本文演示所使用的ARM平台来自Toradex基于NXP iMX8QM SoC平台的Apalis iMX8QM ARM核心板。

 

 

2). Yocto/OpenEmbedded编译

Toradex Linux BSP 从 V3.0 开始发生了很多的变化,其中最主要的就是采用基于 Poky 构建,默认的 BSP 只提供最小化的软件支持, 为此我们撰写了一篇博文做了详细的说明。用户需要自行构建合适其项目需求的 BSP,同时也保持BSP精简。首先,可以参考该网页搭建基础的 Yocto/OpenEmbedded 环境。然后修改 build/conf/local.conf文件,在结尾添加以下内容:

----------------------------------

ACCEPT_FSL_EULA = "1"
IMAGE_INSTALL_append = " packagegroup-fsl-gstreamer1.0 packagegroup-fsl-gstreamer1.0-full imx-gst1.0-plugin"

----------------------------------

保存后使用 MACHINE=apalis-imx8 bitbake console-tdx-image 命令来生成我们需要的 BSP。根据网络和电脑配置情况,首次编译需要数个小时之久。编译完成后在build/deploy/images/apalis-imx8 目录下会生成 Apalis-iMX8_Console-Image-Tezi_3.0bX-XXXXXXXX.ta r文件。

 

 

3). 更新BSP

Toradex Easy Installer 为用户提供在图形化界面中更新 BSP 的方法。根据该文档配置好 PC 和开发板之间的正确连线。然后从这里下载适用于 Apalis iMX8QM 的Toradex Easy Installer 文件。解压后,待 Apalis iMX8QM 进入恢复模式后执行恢复脚本。

----------------------------------

sudo recovery-linux.sh

----------------------------------

将 Apalis-iMX8_Console-Image-Tezi_3.0bX-XXXXXXXX.tar 解压后复制到 U 盘或者 SD 卡,并插入到底板。在 Toradex Easy Installer 界面中点击该 BSP 即可完成安装。最后选择重启模块。

 

 

4). LVDS显示器配置

Apalis iMX8QM上连接 1080p HDMI 显示器可以直接看到 Linux 系统。在这里我们还将介绍如何配置 LVDS 接口显示器。目前还不能直接在 U-Boot 中通过 cmdline 的方式进行显示配置,用户需要修改 device tree 文件 fsl-imx8qm-apalis.dts,将 lvds1_panel 的 compatible 设置适合屏幕的配置。LVDS显示配置是直接编译在内核中,用户可以从 drivers/gpu/drm/panel 中选择现成的配置,否则需要自行添加适合屏幕参数的配置文件。kyo_tcg121xglp_timing 在引脚和色彩配置都符合我们现有的三菱AA104XD02 显示器,因此将 lvds1_panel 配置为 kyo,tcg121xglp。然后重新编译 device tree。

----------------------------------

make dtbs

----------------------------------

用生成的 fsl-imx8qm-apalis.dtb 替换核心板上 /media/mmcblk0p1/ 目录下的同名文件,重启生效。

----------------------------------

root@apalis-imx8:~# sync
root@apalis-imx8:~# reoobt

----------------------------------

 

 

5). 媒体播放

BSP 中已经集成了 Gstreamer 工具和 IMX 插件,用户可以直接调用。显示分别是播放 H.265/H.264 编码分辨率为 1080p/2K/4K 的本地文件。

./ 1080p h.264

----------------------------------

gst-launch-1.0 filesrc location=jellyfish-20-mbps-hd-h264.mkv ! video/x-matroska ! aiurdemux ! \
queue ! h264parse ! v4l2h264dec ! imxvideoconvert_g2d ! queue ! waylandsink

----------------------------------

./ 1080p h.265

----------------------------------

gst-launch-1.0 filesrc location=Elecard_about_Tomsk_part3_HEVC_1080p.mp4 ! video/quicktime ! \
aiurdemux ! queue ! h265parse ! v4l2h265dec ! imxvideoconvert_g2d ! queue ! waylandsink

----------------------------------

./ 2k h.264

----------------------------------

gst-launch-1.0 filesrc location=Gravity-2K.mp4 ! video/quicktime ! aiurdemux ! queue ! h264parse ! \
v4l2h264dec ! imxvideoconvert_g2d ! queue ! waylandsink

----------------------------------

./ 4k h.265

----------------------------------

gst-launch-1.0 filesrc location=Elecard_about_Tomsk_part3_HEVC_UHD.mp4 ! video/quicktime ! aiurdemux ! \
queue ! h265parse ! v4l2h265dec ! imxvideoconvert_g2d ! queue ! waylandsink

----------------------------------

除了本地播放外,RTSP网络播放也是常用的功能。RTSP服务器可以有多种实现方式,如 VLC 就可以支持流推送。Gst 也提供现成的工具实现 RTSP 服务,如gst-rtsp-server。在下载的时候最好选用和 iMX8 BSP 中 Gstreamer 一致的版本。下载后执行 autogen.sh,然后直接 make编译即可。在 example 目录中会生成一个名为 test-uri 的可执行文件。用下面命令推送视频流。

----------------------------------

./test-uri file:///opt/jellyfish-20-mbps-hd-h264.mkv

在 PC 的 8554 端口会开启RTSP服务。

----------------------------------

rtsp://127.0.0.1:8554/test

----------------------------------

IMX8上运行下面命令

----------------------------------

gst-launch-1.0 rtspsrc location=rtsp://ip_of_pc:8554/test name=source1 ! queue ! rtph264depay ! \
queue ! h264parse ! v4l2h264dec ! imxvideoconvert_g2d ! queue ! waylandsink

----------------------------------

 

 

6). 总结

IMX8QM 可以轻松的实现对视频文件的硬件编解码,而不占用过多的 CPU 资源,从而保证用户应用顺畅运行。除了视频播放,我们接下来还会介绍 IMX8 更多的应用。

这篇关于在 NXP iMX8 上进行 4K 视频播放测试的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/917370

相关文章

Python调用Orator ORM进行数据库操作

《Python调用OratorORM进行数据库操作》OratorORM是一个功能丰富且灵活的PythonORM库,旨在简化数据库操作,它支持多种数据库并提供了简洁且直观的API,下面我们就... 目录Orator ORM 主要特点安装使用示例总结Orator ORM 是一个功能丰富且灵活的 python O

Nginx设置连接超时并进行测试的方法步骤

《Nginx设置连接超时并进行测试的方法步骤》在高并发场景下,如果客户端与服务器的连接长时间未响应,会占用大量的系统资源,影响其他正常请求的处理效率,为了解决这个问题,可以通过设置Nginx的连接... 目录设置连接超时目的操作步骤测试连接超时测试方法:总结:设置连接超时目的设置客户端与服务器之间的连接

使用 sql-research-assistant进行 SQL 数据库研究的实战指南(代码实现演示)

《使用sql-research-assistant进行SQL数据库研究的实战指南(代码实现演示)》本文介绍了sql-research-assistant工具,该工具基于LangChain框架,集... 目录技术背景介绍核心原理解析代码实现演示安装和配置项目集成LangSmith 配置(可选)启动服务应用场景

如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解

《如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别详解》:本文主要介绍如何通过海康威视设备网络SDK进行Java二次开发摄像头车牌识别的相关资料,描述了如何使用海康威视设备网络SD... 目录前言开发流程问题和解决方案dll库加载不到的问题老旧版本sdk不兼容的问题关键实现流程总结前言作为

SpringBoot中使用 ThreadLocal 进行多线程上下文管理及注意事项小结

《SpringBoot中使用ThreadLocal进行多线程上下文管理及注意事项小结》本文详细介绍了ThreadLocal的原理、使用场景和示例代码,并在SpringBoot中使用ThreadLo... 目录前言技术积累1.什么是 ThreadLocal2. ThreadLocal 的原理2.1 线程隔离2

Python利用PIL进行图片压缩

《Python利用PIL进行图片压缩》有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所以本文为大家介绍了Python中图片压缩的方法,需要的可以参考下... 有时在发送一些文件如PPT、Word时,由于文件中的图片太大,导致文件也太大,无法发送,所有可以对文件中的图

Java如何获取视频文件的视频时长

《Java如何获取视频文件的视频时长》文章介绍了如何使用Java获取视频文件的视频时长,包括导入maven依赖和代码案例,同时,也讨论了在运行过程中遇到的SLF4J加载问题,并给出了解决方案... 目录Java获取视频文件的视频时长1、导入maven依赖2、代码案例3、SLF4J: Failed to lo

如何使用Spring boot的@Transactional进行事务管理

《如何使用Springboot的@Transactional进行事务管理》这篇文章介绍了SpringBoot中使用@Transactional注解进行声明式事务管理的详细信息,包括基本用法、核心配置... 目录一、前置条件二、基本用法1. 在方法上添加注解2. 在类上添加注解三、核心配置参数1. 传播行为(

Java实战之自助进行多张图片合成拼接

《Java实战之自助进行多张图片合成拼接》在当今数字化时代,图像处理技术在各个领域都发挥着至关重要的作用,本文为大家详细介绍了如何使用Java实现多张图片合成拼接,需要的可以了解下... 目录前言一、图片合成需求描述二、图片合成设计与实现1、编程语言2、基础数据准备3、图片合成流程4、图片合成实现三、总结前

Python实现多路视频多窗口播放功能

《Python实现多路视频多窗口播放功能》这篇文章主要为大家详细介绍了Python实现多路视频多窗口播放功能的相关知识,文中的示例代码讲解详细,有需要的小伙伴可以跟随小编一起学习一下... 目录一、python实现多路视频播放功能二、代码实现三、打包代码实现总结一、python实现多路视频播放功能服务端开