基于IPv6的嵌入式互联网视频应用开发
架构接口参见图3。
网络功能库
网络功能库在标准IPv6协议的基础上设计了用于通过互联网处理查询/检索音视频内容,同时负责实时流媒体内容下载的应用协议。图4描述了网络功能库的处理过程:
①通过NETLIB_handlerInit()创建NETLIB_Handler实例,完成初始化工作;②通过NETLIB_search() 或 NETLIB_searchByIndex()进行查询;③检索的结果由Handler处理,亦可重新搜索;④NETLIB_readContent()或NETLIB_getCount()可以从handler保存的检索信息中读取指定内容;⑤检索完毕可通过NETLIB_handlerDestroy销除缓存中的结果集。
下面介绍网络功能库主要功能函数说明,包括下面几个API。
int NETLIB_search (NETLIB_Handler handler, char* keyword, NETLIB_QueryType queryType, unsigned int maxCount )。描述:搜索给定关键字的视频,并返回不超过maxCount指定数量的结果。
int NETLIB_readContent(NETLIB_Handler handler, int index, NETLIB_VideoDetail* videoDetail)。描述:从检索结果中根据指定的顺序(index)读取相应的内容。
流媒体处理库
流媒体处理库负责处理流媒体数据,它的功能包括:①从实时媒体流中分解音视频;②选定音视频解码库对分解的音视频进行解码;③对解码后的音视频进行同步渲染,确保播放效果。处理流程参见图5。
音视频解码库
一个功能完善的Flv播放器必然包括以下三大核心功能模块。
(1)标签解析模
块:能够按照Adobe公司制定的文档格式规范对Flv文档[3](结构类似swf文件)进行解析。
(2)影片执行模块:能够按照一定的时间顺序执行影片。
(3) ActionScript解析引擎:能够响应用户的交互行为并更好地控制Flv文档的行为[4~5]。
考虑到使用机顶盒播放flv视频时操作交互类flv文档时的非便利性,故此我们当前实现版本中主要解决了播放时必须的问题,主要功能接口描述如下。
FLVDEC_create(Engine_Handle handle, string name);用于创建FLV解码器实例。
FLVDEC_control(FLVDEC_Handle, FLVDEC_Cmd id, FLVDEC_DynamicParams* params, FLVDEC_Status* status); 用于在FLV解码器实例中实现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 系统相比,它具有非常简洁、高效的体系结构和硬件图形加速功能。
评论