第9卷第5期 软件导刊 V01.9No.5
三!!!堡!旦 曼呈丝堡墅丝 坠垒:!垒!垒
基于IPV6的网络视频点播系统关键技术研究
王雄兵1,何维2
(1.中国地质大学(武汉)机械与电子信息学院,湖北武汉430074;
2.四川泸定中学化学系,四川甘孜626100)
摘要:VOD(VideoOnDemand视频点播)系统是一种通过网络为用户提供包括视频、音频等媒体教据的点播业务。
为了解决现有IPv4网络的地址空闽匮乏和在视频点播传输过程的带宽瓶颈、服务质量等问题。推出了基于IPv6协
议的视频点播系统。介绍了IP、r6的一些新特性及在视频点播系统中的应用编程技术;并以MPEC.--2
格式
pdf格式笔记格式下载页码格式下载公文格式下载简报格式下载
数据为例,
给出了在IP、,6下开发视频点播系统中客户端的关键技术一数据流的接收和同步播放。
关键词:视频点播;IPv6;数据流;同步播放
中图分类号:’rP393 文献标识码:A 文章编号:1672—7800(2010)05-0146-03
1视频点播系统
视频点播技术就是把连续的视频和声音信息经过压缩处
理后放到网络服务器上,让浏览者一边下载一边观看、收听,而
不需要等到整个媒体文件下载完成就可以即时观看的技术。
VOD的系统结构由3个部分组成:服务器系统、网络系统
和客户端系统。其结构框图如图1所示。
2Ⅱ~6
田1 VoD的系统结构
2.1理%的传送地址类型
2.1.1IPv4的3种IP数据通信方式
单播(Unicast)传输:在发送者和每一接收者之间实现点对
点的网络连接。如果一个发送者同时给多个接收者传输相同
的数据.则必须相应地将数据包复制成多份后再分别投递,如
果有大量主机希望获得数据包的同一份拷贝,将导致发送者负
担沉重、延时长、网络拥塞。为保证一定的服务质量需增加硬件
和带宽。
广播(Broadcast)传输:是指在IP子网内广播数据包,所有
在子网内部的主机都将收到这些数据包,不管它们是否乐于
接收。广播的使用范围很小,只在本地子网内有效,因为路由器
通常会封锁广播通信。广播传输会增加非接收者的开销。
组播(Muticast)传输:在发送者和每一接收者之间实现一
点对多点的网络连接。如果一个发送者同时给多个接收者传输
相同的数据.只需投递一份数据包就可以了。组播提高了数据
的传输效率,减少了骨干网络出现拥塞的可能性
2.1.2IPv6地址类型
IP、,6是为了解决IPv4所存在的一些问题和不足而提出
的,同时它还在许多方面提出了改进,例如服务质量、网络组播
方面。经过一个较长的IPv4和11%6共存的时期,IPv6最终会
完全取代IPv4在互连网上占据统治地位。和IPv4相比,IP、,6
将现有的IP地址长度扩大4倍,由当前IPv4的32位扩充到
128位.以支持大规模数量的网络节点。这样IPv6的地址总数
就大约有3.4"10E38个。这么庞大的地址空间,组以保证地球
上的每个人拥有一个或多个IP地址。
在RFCl884中指出3种IPv6地址类型。它们分别占用不
同的地址空间:
单点传送:这种类型的地址是单个接口的地址。发送到一
个单点传送地址的信息包只会送到地址为这个地址的接口。
多点传送:这种类型的地址是一组接口的地址,发送到一
个多点传送地址的信息包会发送到属于这个组的全部接口。
任意点传送:这种类型的地址是一组接口的地址,发送到
一个任意点传送地址的信息包只会传送到这组地址中的一个。
和LPv4不同的是,Ilhr6中出现了任意点传送地址。并以多
点传送地址代替了IPv4中的广播地址。
作者简介:王雄兵(1983一),男.湖北黄冈人,中国地质大学机械与电子信息学院硕士研究生,研究方向为多嫌体通信与嵌入式开发;#J'爿t(1987一),
女,四川南克人。四川泸定中学教师。研究方向为教育学。
万方数据
第5期 王雄兵,何维:基于IPV6的网络视频点播系统关键技术研究 ·147·
2.2 D%网络编程
IPv6程序相对于IPv4改动并不大。其中主要的改动就是
地址结构与地址解析函数。
2.2.1地址袁示
IPv4使用32bits的地址
表
关于同志近三年现实表现材料材料类招标技术评分表图表与交易pdf视力表打印pdf用图表说话 pdf
示。并有sockaddr__in和in_addr
等结构应用于API中,而IPv6使用128bits地址。也定义了本
身的地址结构soekaddr_in6和in6_addr。
structsockaddr_in6{
u_charsin6__len;u_charsin6_family;
u intl6_tsin6__port;u_int32_tsin6jlowinfo;
structin6_addrsin6addr;uint32_tsin6_scope_id;
}
structin6_addr{uintS_tu6_addr8[16];}
其中sin6-nowinfo字段是一个32bit的整数,用来记录流
标记,sin6_scope_id字段用于说明sockaddr_in6的作用范围。
2.2.2地址及名称解析
在IPv6新型套接字中,getaddrinfo()和gemameirffo()是两
个独立于
协议
离婚协议模板下载合伙人协议 下载渠道分销协议免费下载敬业协议下载授课协议下载
的重要解析函数,前者是通过主机名捕获地址信
息,而后者是通过地址捕获主机名字信息。
(1)由名字获取主机地址信息getaddrinfo函数定义。
intgetaddrinfo(
INconstcharFAR*nodename,
INconstcharFAR*servname,
INconststructaddrinfoFAR宰hints,
OUl’structadrinfoFAR}FAR事res):
(2)由地址获取名字信息函数getnameinfo函数定义。
intgetnameinfo(
INconststructsockaddrFAR*sa,INsoclden_tsalen,
OUTcharFAR+host,INsize._thostlen。
OUTcharFAR*$erv,INsize_tservlen。
INintflags);
2.2.3 IPv6中socket函数的使用
网络编程需要调用socket()函数在通信双方建立套接字,
在11%6中.只需要将第一个参数设置为PF_INET6,说明要使
用的是IPv6协议.如果是组播编程,则一般需创建UDP套接
字。
s=socket(PFjNET6,SOCK_DGRAM,0);∥创建UDP套接字
2.2.4组播应用程序接口函数WSAJoinLeaf
winsock2组播主要是通过WSAJoinLeaf来实现的,其函数
定义如下:
SOCKETWS从PIWSAJoinLeaf(SOCKETs.conststruct
80ckaddrFAR*name.
intnamelen,LPWSABUFlpCallerData,LPWSABUFlpCallee
data,
LPQOSlpSQOS,LPQOSIpGQOS,DWORDdwFlags);
它返回新创建的多点套接口的描述字。s:标识一个多点套
接El的描述字;name表示将与套接口连接的远端名字;
namelen表示名字长度;IpCallerData:一个指针。指向多点会晤
创建时传送给远端的用户数据:lpCalleeData:一个指针,指向多
点会晤创建时从远端传送回来的用户数据;IpSQOS:一个指向
套接Els的流描述的指针。每个方向一个;IpGQOS:一个指向
套接口组(如果存在)流描述的指针;参数dwFlags用来指示套
接字是用来作为发送者还是接收者还是两者兼具。
3客户端数据流的接收和播放设计
客户端主要功能是:首先将数据接收到缓冲区内,等到接
收到足够数量的数据,客户端就会创建源Filter-Net—Receiver,
将缓冲区内的数据拿来进行格式校验。依照不同格式创建一条
播放链路,创建成功后,客户端应用程序继续将接收到的的数
据存在缓冲区.同时Net—ReceiverFilter不断地从缓冲区读取
数据用来播放.这样便实现了流媒体边下载边播放的功能。本
文主要以MPEG2数据格式为例.介绍视频点播系统中客户端
数据流的接收和同步播放的设计技术。
3.1 DirectShow体系结构
DirectShow是微软公司提供的一套开发包。它与DirectX开
发包一起发布.是一套在Windows操作平台上处理各种格式的
多媒体文件的回放、音视频采集等多媒体应用的编程接口。如图
2所示。DirectShow系统位于应用层。它使用一种过滤图表的模
型来管理整个数据流的处理过程:参与数据处理的各个功能模
块叫做Filter;各个Filter在FilterGraph中按一定的顺序连接成
一条“流水线”协同工作。按照功能可分为三类:(1)源过滤器
(SourceFilter)负责获取数据.数据源可以是文件、网络、采集卡
或者其他地方等;(2)变换过滤器,(2)变换过滤器,(Transform,
Filter)负责数据的格式转换,如数据流分离、合成、解码、编码等;
(3)提交过滤器(RenderFilter)负责数据的最终去向,将数据送
给显卡和声卡进行播放。或者输出到文件进行存储。
3.2 Filter的数据传送方式
数据传送主要有两种模式:推模式和拉模式。
推模式最典型的情况发生在LiveSource(实时源,如采集
卡的CaptureFilter等)中。这种源能够自己产生数据。并且使用
专门的线程将这些数据“推”下去。如图2所示为这个传送过程
的示意图。
圈2拉模式
拉模式最典型的情况发生在FileSource(文件源)中。这种
源管理的数据没有把数据“推”下去的能力,而靠后面的Filter
来“拉”。如图3所示。
圈3推模式
万方数据
·148· 软件导刊 2010拒
VOD系统中客户机程序必须开发一个SourceFilter用于
接收网络数据并引入到FilterGraph中去。由于DirectShow提
供的SpitterFilter大都只能工作拉模式下,这些Splitter的输入
针上会专门使用一个线程到上一级SourceFilter中去“拉”数
据,而不支持SourceFilter直接将数据“推”下来,本文将Source
Filter—Net—ReceiverFilter写成拉模式后。播放的网络接收来的
媒体数据就与播放本地媒体文件一样。
图4给出了客户端在接收到播放接收到的MPEG2格式
媒体文件时创建的FilterGraph。
圈4播放Mpeg-2数据的FilterGrab
3.3接收部分Net-ReceiverFilter的设计
Net—ReceiverFilter设计主要包括如下一些类的实现:
3.3.1 CNetSreamOut类
classCNetStreamOut:publicCAsyncStream
{public:
//设置在流中的数据准备读取新数据
virtualHRESULTSetPointer(LONGLoNGUPos);
//读取一定的数据到指定的缓存中
∥数据流总长度以及当前获得的数据长度
//数据读取操作同步一锁定/解锁
};
该类使用一个控制对象.将真正的与数据读取相关的操作
都委托给这个控制对象.该控制对象负责接受网络数据和如
何将数据送出。因为数据是通过Socket从网络接收过来的。
3.3.2 INetReceiver类
DECLARE_IN7rERFACE一(INetReeeiver,IUnknown)
{∥设置将要接收的网络数据
STDMETHOD(SetStreamType)(THIS_IonginType)PURE;
//设置用于接收网络数据的socket
sTDM删OD(SetStreamSocket)(THIS_SOCKETinsocket
)PURE;
//判断是否已经预接收了足够的数据。可以将SourceFn.
ter往下连接的其他Filter
STDMETHOD(CanConnectToDownstream)(THIS)PURE;
};
INetReceiver类实现一个自定义的接口,以便于应用程序
设置进来用于接收数据的Socket句柄。
3.3.3 CFiherNetReeeivet类
classCFiherNetReceiver:publicCAsyncReader,publicIne·
tReeeiver
{∥暴露本Filter实现的自定义接口
STDMETHODIMPNonDelegatingQueryInterface(REFIIDri-
id,void**ppv);
//根据接收的网络数据类型决定输出pin上使用的媒体
类型
HRESULTDeeideOutputMediaType(10nginMedia);
⋯⋯ };
CFiherNetReceirer类主要用来指定CNetSreamOut类作为
数据源。
3.3.4CMediaController类
classC:MediaController
{//检查网络数据类型是否为MPEG一2,如果是MPEG一2
格式预接收数据。
//当从网络上接收到一快数据后,调用该函数将数据加入
到控制对象内部缓存中
BOOLAddData(ehar*inData,longinLength);
//设置数据流中的偏移量。准备下一次数据的读取
HRESULTSotPointer(LONGLoNGUPos);
};
CmediaController类是网络接收Filter的中心。主要完成生
成Sockets、管理网络数据缓冲等功能。
3.4数据流播放链路的构建
创建一个FilterGraphManger组件.将开发好的Net—Re.
ceiverFilter加入到FilterGraph中作为源.加入必要的Filter
完成整个FilterGraph链路的构建。
4结束语
由于11%6协议定义了流的概念.通过采用流标签提供了
一种更加高效地处理数据分组流的机制.这种办法对于实时应
用尤其重要。本文提出了基于IPv6网络构建视频点播系统.减
少了网络占用带宽,为客户提供实时的点播效果;并且在系统
客户端利用DirectShow技术设计并实现视频数据接收组件.实
现了数据的接收和同步播放。
参考文献:
[1]DEERINGS,HINDENR.Intemetprotocol,Version6(IPv6)Speci-
fication[M].RFC2460,1995.
【2]DEERINGS,HINDENR.IpVersion6AddressingArchitecture
[M].RFC2373,2003.
[3】蔡茂国,扬淑雯.基于IPv6的多媒体通信策略[J].计算机工程与
应用.2002(5).
[4】藏萍.网络视频点播系统[D】.天津:天津大学,2007.
[5]蒋文娟,卢朝晖。刘家宁.基于llN6的组播编程实例剖析[J].海南
师范大学学报。2007(4).
[6]钟礼秋,马争.基于DirectShow的MPEG--4监控系统的设计与实
现[J】.电子科技大学学报,2007(1).
[7】 陆其明.DirectShow开发指南[M】.北京:清华大学出版社。2003.
(责任鳊辑:杜能钢)
万方数据
基于IPV6的网络视频点播系统关键技术研究
作者: 王雄兵, 何维
作者单位: 王雄兵(中国地质大学(武汉)机械与电子信息学院,湖北,武汉,430074), 何维(四川泸定中
学化学系,四川,甘孜,626100)
刊名: 软件导刊
英文刊名: SOFT WARE GUIDE
年,卷(期): 2010,09(5)
参考文献(7条)
1.陆其明 DirectShow开发指南 2003
2.钟礼秋;马争 基于DirectShow的MPEG-4监控系统的设计与实现[期刊论文]-电子科技大学学报 2007(01)
3.蒋文娟;卢朝晖;刘家宁 基于IPv6的组播编程实例剖析[期刊论文]-海南师范大学学报 2007(04)
4.藏萍 网络视频点播系统 2007
5.蔡茂国;杨淑雯 基于IPv6的多媒体通信策略[期刊论文]-计算机工程与应用 2002(05)
6.DEERING S;HINDEN R RFC 2373.Ip Version 6 Addressing Architecture 2003
7.DEERING S;HINDEN R RFC 2460.Internet protocol,Version 6(IPv6)Specification 1995
本文链接:http://d.g.wanfangdata.com.cn/Periodical_rjdk201005057.aspx