在 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

相关文章

使用Jackson进行JSON生成与解析的新手指南

《使用Jackson进行JSON生成与解析的新手指南》这篇文章主要为大家详细介绍了如何使用Jackson进行JSON生成与解析处理,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录1. 核心依赖2. 基础用法2.1 对象转 jsON(序列化)2.2 JSON 转对象(反序列化)3.

C#使用SQLite进行大数据量高效处理的代码示例

《C#使用SQLite进行大数据量高效处理的代码示例》在软件开发中,高效处理大数据量是一个常见且具有挑战性的任务,SQLite因其零配置、嵌入式、跨平台的特性,成为许多开发者的首选数据库,本文将深入探... 目录前言准备工作数据实体核心技术批量插入:从乌龟到猎豹的蜕变分页查询:加载百万数据异步处理:拒绝界面

Python使用自带的base64库进行base64编码和解码

《Python使用自带的base64库进行base64编码和解码》在Python中,处理数据的编码和解码是数据传输和存储中非常普遍的需求,其中,Base64是一种常用的编码方案,本文我将详细介绍如何使... 目录引言使用python的base64库进行编码和解码编码函数解码函数Base64编码的应用场景注意

用js控制视频播放进度基本示例代码

《用js控制视频播放进度基本示例代码》写前端的时候,很多的时候是需要支持要网页视频播放的功能,下面这篇文章主要给大家介绍了关于用js控制视频播放进度的相关资料,文中通过代码介绍的非常详细,需要的朋友可... 目录前言html部分:JavaScript部分:注意:总结前言在javascript中控制视频播放

Python基于wxPython和FFmpeg开发一个视频标签工具

《Python基于wxPython和FFmpeg开发一个视频标签工具》在当今数字媒体时代,视频内容的管理和标记变得越来越重要,无论是研究人员需要对实验视频进行时间点标记,还是个人用户希望对家庭视频进行... 目录引言1. 应用概述2. 技术栈分析2.1 核心库和模块2.2 wxpython作为GUI选择的优

Java进行文件格式校验的方案详解

《Java进行文件格式校验的方案详解》这篇文章主要为大家详细介绍了Java中进行文件格式校验的相关方案,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、背景异常现象原因排查用户的无心之过二、解决方案Magandroidic Number判断主流检测库对比Tika的使用区分zip

Java使用Curator进行ZooKeeper操作的详细教程

《Java使用Curator进行ZooKeeper操作的详细教程》ApacheCurator是一个基于ZooKeeper的Java客户端库,它极大地简化了使用ZooKeeper的开发工作,在分布式系统... 目录1、简述2、核心功能2.1 CuratorFramework2.2 Recipes3、示例实践3

Python+PyQt5实现多屏幕协同播放功能

《Python+PyQt5实现多屏幕协同播放功能》在现代会议展示、数字广告、展览展示等场景中,多屏幕协同播放已成为刚需,下面我们就来看看如何利用Python和PyQt5开发一套功能强大的跨屏播控系统吧... 目录一、项目概述:突破传统播放限制二、核心技术解析2.1 多屏管理机制2.2 播放引擎设计2.3 专

基于Flask框架添加多个AI模型的API并进行交互

《基于Flask框架添加多个AI模型的API并进行交互》:本文主要介绍如何基于Flask框架开发AI模型API管理系统,允许用户添加、删除不同AI模型的API密钥,感兴趣的可以了解下... 目录1. 概述2. 后端代码说明2.1 依赖库导入2.2 应用初始化2.3 API 存储字典2.4 路由函数2.5 应

Python使用date模块进行日期处理的终极指南

《Python使用date模块进行日期处理的终极指南》在处理与时间相关的数据时,Python的date模块是开发者最趁手的工具之一,本文将用通俗的语言,结合真实案例,带您掌握date模块的六大核心功能... 目录引言一、date模块的核心功能1.1 日期表示1.2 日期计算1.3 日期比较二、六大常用方法详