- 易迪拓培训,专注于微波、射频、天线设计工程师的培养
基于IPv6的嵌入式互联网视频应用开发
摘要:本文设计了一种基于IPv6的嵌入式互联网视频应用技术架构,利用该架构可以快速开发机顶盒等家用娱乐设施播放互联网视频应用软件。本架构集成了典型互联网视频媒体编解码器,采用分层架构,可以实现软件复用,从而降低开发复杂度。
引言
交互式网络电视(IPTV)的兴起,可以为观看者提供一种新的方式来选择与控制他们的播放内容,国内外运营服务商纷纷投资建设自己的IPTV运营平台。随着Web2 o的兴起,新型的视频内容服务商打破了IPTV内容提供者与内容使用者之间的界限,使得视频内容得以爆发式地增长。诸如YouTube、优酷以及类似的网站,越来越多地冲击着传统电视媒体。这些视频网站的高度流行,使更多的人开始关注互联网视频,视频内容也得到了极大的丰富。
观看者不仅希望能够接收优质的IPTV的内容,更希望能够如同普通电视一股方便地观看。IPv6网络的发展使得带宽越来越充足,嵌入式技术的发展则为方便地观看这些内容提供了基础。本文就是基于这样的现实,设计了一种通过家用机顶盒播放互联网视频的应用架构,解决播放这些互联网视频必须通过电脑的问题,使得观看这些视频内容变得简单易用。
技术原理
典型的互联网视频网站包括几个基本的组成部分:视频介绍、视频分类、视频本身——通常是flv文件格式及相关视频。我们在通过浏览器或者专用软件播放选定的视频之前,首先要通过关键字搜索或者分类搜索的方式找到对应视频,然后才能播放。大多数的视频网站都采用流媒体播放方式,可以让我们边下载边播放,少数需要下载后才能播放。我们设计的嵌入式应用架构包括如下几个功能组成部分:
·通过网络检索并下载视频内容;
·设定过滤器分类检索视频内容;
·可以对下载后的视频海报进行
幻灯式播放:
·对伽视频文件的编解码、音视频编码及音画同步:
·友好化用户播放界面。
这套架构的基本应用结构如图1所示。
图1视频服务的嵌入式应用架构
应用架构的组成与实现
硬件系统的组成
流媒体编解码单元是整个系统的核心部分,主要由嵌入式系统、嵌入式CPU及外围部件组成。嵌入式CPU采用三星公司的S3C2440,400MHz主频,内部集成了ARM920T微处理器和常用夕卜围组件、64M SDRAM及256MFLASH。通过S3C2440的GPIO与以太网控制器芯片DM9000的连接,扩展了网络接口,并接人互联网,单元结构参见图2。
图2流媒体编码单元结构
嵌入式操作系统采用的是Linux,有如下特点:开放的源代码,内核小,执行效率高,对IPv6的良好支持; Linux的高度模块化使组件更容易加载和卸载; 内置网络支持,容易实现内置的Web服务器等;支持多种硬件平台;提供完整的开发工具和SDK(Software Development Kit),提供图形化的定制和配置工具。
软件设计与实现
嵌入式网络视频点播处理时,需要进行实时的图像处理、音视频解码与同步、网络传输、图形用户界面四部分协同处理。为了确倮软件开发、集成乃至最后测试时不至于过分复杂,我们对这四部分进行分层处理。从功能的角度来看,整个软件架构包括四个部分:
·网络功能库;
·流媒体处理库;
·音视频解码库;
·用户界面库。
架构接口参见图3。
图3视频播放应用架构
网络功能库
网络功能库在标准IPv6协议的基础上设计了用于通过互联网处理查询/检索音视频内容,同时负责实时流媒体内容下载的应用协议。图4描述了网络功能库的处理过程:
图4网络功能库流程图
①通过NETLIB_handlerlnit()创建NETLIB_Handler实例,完成初始化工作;②通过NETLIB_search()或NETLIB searchBylndex()进行查询;③检索的结果由Handler处理,亦可重新搜索;④NETLIB readContent ( )或NETLIB ̄getCount()可以从handler倮存的检索信息中读取指定内容;⑤检索完毕可通过NETLIB_handl erDestroy销除缓存中的结果集。
下面介绍网络功能库主要功能函数说明,包括下面几个API。
int NETLIB_search(NETLIB_Handler handler, char* keyword,NETLIB_QueryType queryType,unsigned int maxCount)。描述:搜索给定关键字的视频,并返回不超过maxCount指定数量的结果。
int NET LIB_readContent(NETLIB_Handler handler,int index,NETLIB VideoDetail*videoDetail)。摘述:从检索结果中根据指定的顺序(index)读取相应的内容。
流媒体处理库
流媒体处理库负责处理流媒体数据,它的功能包括:①从实时媒体流中分解音视频;②选定音视频解码库对分解的音视频进行解码;③对解码后的音视频进行同步渲染,确保播放效果。处理流程参见图5。
图5流媒体处理库流程图
音视频解码库
一个功能完善的FLv播放器必然包括以下三大核心功能模块。
(1)标签解析模
块:能够按照Adobe公司制定的文档格式规范对Fly文档凵(结构类似swf文件)进行解析。
(2)影片执行模块:能够按照一定的时间顺序执行影片。
(3)ActionScript解析引擎:能够响应用户的交互行为并更好地控制Fly文档的行为。
考虑到使用机顶盒播放flv视频时操作交互类flv文档时的非便利性,故此我们当前实现版本中主要解决了播放时必须的问题,主要功能接口描述如下。
FLVDEC_create(Engine_Handlehandle,string name);用于创建FLV解码器实例。
FLVDEC_control(FLVDEC_Handle, FLVDEC_Cmd id,FLVDEC ̄DynamicParams* params,FLVDEC_Status*status);用于在∏V解码器实例中实现FLV播放控制。
FLVDEC_process(FLVDEC_Handle handle,XDM_BufDesc* inBufs,XDM BufDesc* outBufs,FLVDEC InArgs* inArgs,FLVDEC_OutArgs*outArgs);在FLV解码器实例中实现FLV播放。
FLVDEC delete(FLVDEC_Handle handle);用于删除FLV;解码器实例。
用户界面库
用户界面库基于DirectFB。DirectFB是专门为满足嵌入式设备要求而开发的小巧、强大、灵活和易于使用的图形系统,并且试图成为一个建构于Linux Framebuffer Device之上的新图形标准。它在FrameBuffer的基础上提供了图形加速、输入设备处理提取、透明窗口和多重显示层的功能,能够对嵌入式系统GUI有较好的支持。与那些通用的嵌人式GUI系统相比,它具有非常简洁、高效的体系结构和硬件图形加速功能。
运行效果
在测试用的ΛRM2440板子上播放流畅,截图参见图6。
图6 运行效果图
结论
本文设计并初步实现了IPv6环境下嵌入式互联网视频点播应用架构。在有限资源系统开发中,使用软件系统工程的思想,用分层结构假设开发架构,在实验环境中测试播放较为顺畅。生产环境中,采用具备更好DSP性能的辅助CPU,配合本文的ARM芯片实现本架构,可以更为丌页畅地播放网络视频,进一步提高系统的性能。
来源:电子产品世界