DIY编程器网

 找回密码
 注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 194|回复: 0
打印 上一主题 下一主题

基于IPv6的嵌入式互联网视频应用开发

[复制链接]
跳转到指定楼层
楼主
发表于 2012-1-22 00:26:43 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
     引言
  交互式网络电视(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芯片实现本架构,可以更为丌页畅地播放网络视频,进一步提高系统的性能。


                          
                       
                          
                               
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友 微信微信
收藏收藏 分享分享 支持支持 反对反对
您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|文字版|手机版|DIY编程器网 ( 桂ICP备14005565号-1 )

GMT+8, 2025-7-19 17:10 , 耗时 0.082467 秒, 18 个查询请求 , Gzip 开启.

各位嘉宾言论仅代表个人观点,非属DIY编程器网立场。

桂公网安备 45031202000115号

DIY编程器群(超员):41210778 DIY编程器

DIY编程器群1(满员):3044634 DIY编程器1

diy编程器群2:551025008 diy编程器群2

QQ:28000622;Email:libyoufer@sina.com

本站由桂林市临桂区技兴电子商务经营部独家赞助。旨在技术交流,请自觉遵守国家法律法规,一旦发现将做封号删号处理。

快速回复 返回顶部 返回列表