在 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进行JSON和Excel文件转换处理指南

《Python进行JSON和Excel文件转换处理指南》在数据交换与系统集成中,JSON与Excel是两种极为常见的数据格式,本文将介绍如何使用Python实现将JSON转换为格式化的Excel文件,... 目录将 jsON 导入为格式化 Excel将 Excel 导出为结构化 JSON处理嵌套 JSON:

一文解密Python进行监控进程的黑科技

《一文解密Python进行监控进程的黑科技》在计算机系统管理和应用性能优化中,监控进程的CPU、内存和IO使用率是非常重要的任务,下面我们就来讲讲如何Python写一个简单使用的监控进程的工具吧... 目录准备工作监控CPU使用率监控内存使用率监控IO使用率小工具代码整合在计算机系统管理和应用性能优化中,监

如何使用Lombok进行spring 注入

《如何使用Lombok进行spring注入》本文介绍如何用Lombok简化Spring注入,推荐优先使用setter注入,通过注解自动生成getter/setter及构造器,减少冗余代码,提升开发效... Lombok为了开发环境简化代码,好处不用多说。spring 注入方式为2种,构造器注入和setter

MySQL进行数据库审计的详细步骤和示例代码

《MySQL进行数据库审计的详细步骤和示例代码》数据库审计通过触发器、内置功能及第三方工具记录和监控数据库活动,确保安全、完整与合规,Java代码实现自动化日志记录,整合分析系统提升监控效率,本文给大... 目录一、数据库审计的基本概念二、使用触发器进行数据库审计1. 创建审计表2. 创建触发器三、Java

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

SpringBoot结合Docker进行容器化处理指南

《SpringBoot结合Docker进行容器化处理指南》在当今快速发展的软件工程领域,SpringBoot和Docker已经成为现代Java开发者的必备工具,本文将深入讲解如何将一个SpringBo... 目录前言一、为什么选择 Spring Bootjavascript + docker1. 快速部署与

linux解压缩 xxx.jar文件进行内部操作过程

《linux解压缩xxx.jar文件进行内部操作过程》:本文主要介绍linux解压缩xxx.jar文件进行内部操作,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录一、解压文件二、压缩文件总结一、解压文件1、把 xxx.jar 文件放在服务器上,并进入当前目录#

SpringBoot中如何使用Assert进行断言校验

《SpringBoot中如何使用Assert进行断言校验》Java提供了内置的assert机制,而Spring框架也提供了更强大的Assert工具类来帮助开发者进行参数校验和状态检查,下... 目录前言一、Java 原生assert简介1.1 使用方式1.2 示例代码1.3 优缺点分析二、Spring Fr

Python使用OpenCV实现获取视频时长的小工具

《Python使用OpenCV实现获取视频时长的小工具》在处理视频数据时,获取视频的时长是一项常见且基础的需求,本文将详细介绍如何使用Python和OpenCV获取视频时长,并对每一行代码进行深入解析... 目录一、代码实现二、代码解析1. 导入 OpenCV 库2. 定义获取视频时长的函数3. 打开视频文

Golang如何对cron进行二次封装实现指定时间执行定时任务

《Golang如何对cron进行二次封装实现指定时间执行定时任务》:本文主要介绍Golang如何对cron进行二次封装实现指定时间执行定时任务问题,具有很好的参考价值,希望对大家有所帮助,如有错误... 目录背景cron库下载代码示例【1】结构体定义【2】定时任务开启【3】使用示例【4】控制台输出总结背景