基于树莓派的高清视频播放器的设计与实现 【摘 要】树莓派卡片电脑是研究物联网,智能机器人等领域的天然开发板,基于树莓派的高清视频播放终器的设计与实现具有很强的实践参考价值。介绍了树莓派的软硬件研发环境及其发展,给出了基于树莓派设计实现高清视频播放器的软硬件设计及移植开发环境,并基于树莓派移植了 高清视频解码模块,实现了基于树莓派的高清( 720P 及 1080P)视频的播放系统。经测试,该系统性能卓越,实用 创新性强。 【关键词】树莓派;高清视频;视频播放器;物联网;H264; AAC 引言 体积如名片大小的树莓派是基于 ARM 控制器和 Linux 系统的单板机电脑,它具有计算机主机的所有功能和接口, 如 USB ,RJ45, SD-IO ,HDMI 及 GPIO 接口等,广泛支持基于 Linux 的发行版和 Windows 10 的操作系统 [1] 。树莓派体积小巧,具有可扩展性强,社区广泛等优势,它是研究物 联网,智能机器人等领域的良好的、天然的原型开发平台。树莓派自 2012 年首版在英国发布至今,深受全球计算机爱好者的热烈研究,来自全球的计算机软硬件爱好者们基于树 莓派开发了众多的创新功能, 如机器人飞行器, 家庭自动化, 天气预报站,超级电脑,有声书籍播放器等等 [2] 。 随着高清视频资源的日益丰富和用户对高清视频播放 需求的越来越多,高清视频终端播放器的设计和开发面临着 越来越多的需求和挑战, 如:更小巧便携、更强的处理能 力等。本文基于 B 型树莓派,搭建了基于其上的软件移植开 发环境,利用其强大的 GPU 视频处理能力, 开发移植了 H264 高清视频解码模块,成功实现了基于其上的 720P 和 1080P 高清视频播放器。 本文共分为三个部分:第一部分高清播放器系统分析与设计,介绍了树莓派的软硬件开发环境及其演进,及基于树莓派的高清视频播放器系统架构及设计;第二部分详叙了本系统高清音视频解码模块在树莓派环境中的移植;最后总结了本系统的性能测试数据。 高清播放器系统设计 1.1 树莓派硬件开发环境及演进 2012 年英国树莓派基金会宣布树莓派平板电脑正式发 布,第一代树莓派分为 A 型和 B 型两款, 二者硬件配置略有不同,主要体现在 B 型有 512MB 内存而 A 型有 512MB 内存。2015 年 2 月,树莓派基金会宣布推出二代树莓派卡片电 脑 B 型,在硬件配置上又进一步升级, 比如 CPU 由 700MHz 的单核心升级到 900MHz 的四核心,内存由 512MB 升级到 1GB 以及支持更多的外设扩展接口等。 1.2 树莓派软件开发环境及演进 第一代树莓派基于  Linux  系统,典型的如  Raspbian, ARCH Linux ARM  等。随着树莓派社区的壮大,  树莓派已 被越来越多的操作系统支持。据  2015  年  2 月报告显示, Windows 10 和 Android 平台已证实支持树莓派,其它典型 的如 FreeBSD ,WebOS, Debian Linux 等操作系统均已支持 树莓派。完整的支持树莓派的操作系统列表参见 [3] 。 树莓派基于 ARM 系列 CPU 系统,应用软件可移植环境 强,GNU/Linux 工具链已经较好的支持树莓派系统软件开发 移植。成熟的支持树莓派开发的编程语言有: C 及 C++, Python, Java, Golang 等语言。典型的集成开发环境有 KDevelop , Bluej IDE , Eclipse 及 Visual Studio 等。 基于树莓派的高清视频播放器软件开发环境如下: 1)操作系统: Raspbian OS 2)编译及调试器: GCC , G++及 GDB 3)集成开发环境: Eclipse IDE for C/C++ 1.3 树莓派高清视频播放器系统设计 基于树莓派的高清视频播放器系统主要设计为三个模 块: 高清音视频数据输入模块, 音视频数据解码模块及音 视频输出渲染模块。系统架构逻辑模块设计如图 1 所示。 音视频数据输入模块( I )-典型的音视频数据支持 H264 编码视频数据及 FAAC 编码音频数据, 数据封装格式支持 mp4 及 MPEG Transport Stream ( TS)格式 [4] ;数据源读取 可支持本地  MP4  封装格式, 及支持从网络端读取  TS  封装格 式;输入模块(  I )与  OMXPlayer  播放器模块(  P)间采用生 产者 -消费者模型,设计并发队列 Queue( Q)作为二者之间 数据通信模型;视频解码模块( V )与音频解码模块( A )为 消费者。功能上数据输入模块解封装音视频数据包,并标记