嵌入式学习小组
直播中

吴江

7年用户 201经验值
私信 关注

如何利用TQ2440实现一款基于嵌入式Linux的机顶盒流媒体播放器?

本系统利用TQ2440硬件平台的优势,将Linux2.6.14内核移植到开发板中,设计实现了一款基于嵌入式Linux的机顶盒流媒体播放器,完成了其与网络接口的实现,通过TS流的解析实现,提供了对主流的MPEG-2、MPEG-4、H.264等格式文件的支持。该系统具有良好的可移植性和可扩展性,能够满足市场需求的不断变化。

回帖(1)

况冶

2021-6-1 10:19:08
  计算机多媒体技术和网络技术飞速发展使得基于流媒体的多媒体应用也被运用在多种领域,特别是网络可视电话、远程监控、视频点播领域。伴随着计算机多媒体压缩技术的成熟和网络传输技术的发展,开发实时可靠、多功能、数字化、操作简单的基于计算机网络通讯技术和多媒体应用的网络化流媒体播放器已成为计算机、通信、消费电子产品领域(3C产业-Computer、Communication、Consumer Electronics)技术发展的主要方向之一。
  2系统硬件设计
  本文使用TQ2440开发板作为硬件平台。
  S3C2440AL是控制核心,负责控制所有辅助设备。存储器采用SDRAM和Flash两种类型,能满足系统运行和调试的需要。基本端口包括以太网接口、USB接口、两个RS232的串口。A/D和D/A模块主要用于现场数据的采集与控制信号的输出。DC/DC模块主要负责整个系统的供电。
  S3C 2440AL是三星公司设计开发的基于精简指令集的arm9核的CPU,工作频率可以达到400MHz,且具有丰富的内部设备,其中主要包括:存储器管理单元MMU、16kB的指令缓冲器和16kB数据缓冲器、存储器控制器(SDRAM控制器)、NANDFlash和NOR Flash控制器、4通道的外部DMA请求控制、3个串行口、SD存储卡读取接口、USB主机、USB设备、5个脉宽调制定时器。目前,S3C2440AL已广泛地应用于PDA、智能手机、数字多媒体等方面。
  3系统的软件设计
  系统的软件组成包括:嵌入式Linux操作系统、设备驱动程序、图形界面和浏览器程序,这些只是IPTV机顶盒软件组成的关键部分。
  3.1嵌入式操作系统的选择及移植
  本系统采用Linux作为操作系统,并选用Linux2.6内核在嵌入式微处理器S3C2410上移植,具体移植方法如下:
  (1)准备Linux2.6内核移植所必需的文件(内核压缩包linux-2.6.tar.bz2及交叉编译器arm -linuxgcc-3.4.1.tar.bz2),这些文件可到Linux官方网站免费下载。
  (2)利用Linux命令(mkdir,tar,mv及export)安装交叉编译器arm-linux-gcc-3.4.1.
  (3)修改Makefile文件及相关硬件文件。由于内核的编译是根据Makefile文件的指示进行的,Makefile文件来组织内核的各模块之间的关系,记录了各个模块之间的相互联系和依赖关系。所以,开发人员要首先修改Linux2.6根目录下的Makfile文件,修改的主要内容是目标代码的类型和为编译内核指定一个编译器。
  (4)运用Make命令编译内核生成内核镜像文件zImage文件,通过相应的固化软件把这个文件固化在系统相应的存储器中,完成Linux2.6内核在arm微处理器上的移植。
  3.2媒体播放器的总体架构
  系统实现原理:在嵌入式微处理器S3C2440AL的控制下,TQ2440开发板通过网络接口接收来自内容服务提供商的音视频广播信息,之后运行图形界面程序获取音视频信息,并在此基础上生成音视频节目清单,将信号传至显示屏进行显示,将节目呈现给用户。用户利用显示系统提供的图形界面和浏览器使用键盘、鼠标进行控制,观看节目,其总体架构如图1所示。
  
  图1媒体播放器的总体架构
  3.2.1媒体播放器与网络接口的实现
  媒体播放器播放网络上的多媒体文件时最大的特点是边下载边播放的“流式”特性。在IPTV应用中,因为多媒体数据的流式特性需要媒体播放器与媒体服务器之间进行信息交互,所以它们之间须共同遵循一个交互协议标准。本系统播放器采用RTSP协议与服务器之间建立及管理RTSP会话,通过网络传输协议接收来自网络上的媒体数据。媒体播放器数据接收流程如图2所示。
  
  图2媒体播放器数据接收流程
  3.2.2 TS流解析实现
  在MPEG-2系统中根据传输媒体的质量不同定义了两种复合信息流:传送流(TS:Transport Stream)和节目流(PS:Program Stream)。TS流与PS流的区别在于TS流的包结构是固定长度的,而PS流的包结构是可变长度的。PS包TS包在结构上的这种差异,致使TS流比PS流对传输误码的抵抗能力更强,因此在本设计中的网络多媒体数据采用了TS的封装格式。TS包的结构如图3所示,由包头和包数据两部分组成,包头长度占4B,自适应区和包数据共占184B,整个TS包长度相当于4个ATM包长。
  
  图3 TS包的结构
  因为在TS流里可以填入很多东西,所以制定TS流标准的机构就规定了PSI(Program SpecificInformation)表,其作用是从一个携带多个节目的某一个TS流中正确找到特定的节目。
  PSI表包括以下四个表:
  (1)PAT表(Program Association Table)即节目关联表,它的主要作用是指出该传输流ID,以及该路传输流中所对应的几路节目流的MAP表和网络信息表的PID.
  (2)PMT表(Program Map Table)即节目映射表,该表的PID由PAT提供,通过该表可以得到一路节目中包含的信息。
  (3)CAT表(Conditional Access Table)即条件访问表,PID是0x01.CAT携带的是服务器的私有信息(CA系统就需要使用该表格实现节目的解密)。
  (4)NIT表(Network Information Table)即网络信息表,该表包括数字电视网中所有的传输流的物理传输网信息,包含节目的频道调谐参数、频率、符号率等,这些信息使得接收机可以按照用户的选择以很少的延时或无延时地改变频道、调谐参数,正确地解码出TS.
  所以TS流解析流程如图4所示:先接收一个负载里为PAT的数据包,在整个数据包里找到一个PMT包的ID.然后再接收一个含有PMT的数据包,在这个数据包里找到有关填入数据类型的ID.之后就在接收到的TS包里找到含有这个ID的负载内容就是填入的信息。根据填入的数据类型的ID的不同,在TS流复合多种信息,解有这些信息的传输包即可解出音视频的PES包,最终解出音频流和视频流。
  
  图4 TS流解析流程
  由于时间和资源有限,本设计中移植成熟的QT/Embedded库到机顶盒的嵌入式系统,作为其图形界面类库。Qt/Embedded采用frame buffer(帧缓冲)作为底层图形接口。同时,将外部输入设备抽象为keyboard和mouse输入事件。Qt/Embedded的应用程序可以直接写内核缓冲帧,这避免开发者使用繁琐的XLIB/Server系统。界面程序流程图如图5所示。
  
  图5界面程序流程图
  4结语
  本系统利用TQ2440硬件平台的优势,将Linux2.6.14内核移植到开发板中,设计实现了一款基于嵌入式Linux的机顶盒流媒体播放器,完成了其与网络接口的实现,通过TS流的解析实现,提供了对主流的MPEG-2、MPEG-4、H.264等格式文件的支持。该系统具有良好的可移植性和可扩展性,能够满足市场需求的不断变化。
举报

更多回帖

发帖
×
20
完善资料,
赚取积分