解码控件开发说明文档.docx

上传人:b****1 文档编号:203843 上传时间:2023-04-28 格式:DOCX 页数:26 大小:28.98KB
下载 相关 举报
解码控件开发说明文档.docx_第1页
第1页 / 共26页
解码控件开发说明文档.docx_第2页
第2页 / 共26页
解码控件开发说明文档.docx_第3页
第3页 / 共26页
解码控件开发说明文档.docx_第4页
第4页 / 共26页
解码控件开发说明文档.docx_第5页
第5页 / 共26页
解码控件开发说明文档.docx_第6页
第6页 / 共26页
解码控件开发说明文档.docx_第7页
第7页 / 共26页
解码控件开发说明文档.docx_第8页
第8页 / 共26页
解码控件开发说明文档.docx_第9页
第9页 / 共26页
解码控件开发说明文档.docx_第10页
第10页 / 共26页
解码控件开发说明文档.docx_第11页
第11页 / 共26页
解码控件开发说明文档.docx_第12页
第12页 / 共26页
解码控件开发说明文档.docx_第13页
第13页 / 共26页
解码控件开发说明文档.docx_第14页
第14页 / 共26页
解码控件开发说明文档.docx_第15页
第15页 / 共26页
解码控件开发说明文档.docx_第16页
第16页 / 共26页
解码控件开发说明文档.docx_第17页
第17页 / 共26页
解码控件开发说明文档.docx_第18页
第18页 / 共26页
解码控件开发说明文档.docx_第19页
第19页 / 共26页
解码控件开发说明文档.docx_第20页
第20页 / 共26页
亲,该文档总共26页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

解码控件开发说明文档.docx

《解码控件开发说明文档.docx》由会员分享,可在线阅读,更多相关《解码控件开发说明文档.docx(26页珍藏版)》请在冰点文库上搜索。

解码控件开发说明文档.docx

解码控件开发说明文档

文档说明书

WDMMSDK版本号:

1.0.7.0更新日期:

2011.7.8

1.前言

该SDK中负责从网络上接收流媒体数据并进行解码和播放,适合于网络多媒体处理中不同应用的一套SDK。

可选择的开发工具有:

VC,VB,javascript,vbscript。

该控件WDMMSDK.dll(SDK)在进行开发和使用之前首先进行注册,要支持MPEG4视频解码要保证在WDMMSDK.dll文件的同级目录下要增加videocodec目录并且把MPEG4的解码库mpeg4codec.dll拷到目录下(该动态连接库不需要注册),也可以拷到和控件WDMMSDK.dll同一目录下。

说明:

该sdk为MPEG2/4解码控件,其中WDMMSDK.DLL为解码控件,需要注册才能使用,该控件支持了MPEG2视音频的解码,同时该控件可以自动加载其他视频压缩格式的解码库,其中视频解码库放置的目录为:

控件WDMMSDK.DLL所在的文件目录下的videocodec文件夹里(该文件夹内的解码库不需要注册)或者控件WDMMSDK.DLL所在的文件目录下。

注意:

1)要保证wdmmsdk.dll在全英文的目录下;

2)同时用多个控件解码时候,最多只能有一个控件播放音频,其余都要关闭音频播放,否则可能访问声卡冲突,出问题。

2.接口

1)Connect

longConnect(BSTRurl,VARIANTreserver)

接口功能:

连接一个视频源

参数说明:

●url:

BSTR,视频源的URL地址,格式如下:

a.file:

//文件地址,如:

file:

//c:

\test.mpg

b.udp:

//udp地址:

端口号,如:

udp:

//192.168.0.21:

8000

c.tcp:

//tcp地址:

端口号,如:

tcp:

//192.168.0.21:

8000

d.disk:

//e:

e.remote:

//地址:

端口,如:

remote:

//192.168.0.22:

4000

f.relay:

//relay服务器地址:

返回视频数据端口@视频源地址:

视频源端口|转发的组播地址[可选],如:

relay:

//192.168.0.22:

4000@225.0.0.1:

4500|225.0.1.2

g.http:

//地址:

端口号/stream/n,:

端口号可选,如果不加端口号,默认为80端口,地址可以是IP地址,也可以是机器名,n是指设备的第n路视频,如:

http:

//192.168.0.21:

8000/stream/1,http:

//192.168.0.21/stream/1,:

8000/stream/1等都合法。

h.以上的URL之一[空格]–audio=MP2@以上URL之一,视频和音频分开传输第一个URL传视频,第二个URL传音频,目前单独传输的音频只支持MpegAudioLayer2,以后会扩展。

例如:

http:

//192.168.0.99:

6100/stream/1-audio=MP2@udp:

//225.1.1.5:

4005

udp:

//225.1.1.4:

4001-audio=MP2@udp:

//225.1.1.5:

4005

为了尽快解出图像,可以用URL+MUXTYPE:

TS[PS,VES]指定媒体流的类型,和下面reserver定义一致,也就是说,reserver里的很多参数可以在URL里输入,而不必用reserver传入。

如果不指定MUXTYPE,控件会自动分析码流。

●reserver:

VARIANT,开始连接的选项,格式为:

选项1:

参数+选项2:

参数+……+选项n:

参数,选项支持如下:

1.MUXTYPE:

TS[PS,VES,PES],目前参数只能是TS、PS或者VES流,该选项指定视频流的复用类型,当使用该选项时,当时接收的视频源地址可以没有数据,而解码立即返回,解码软件处于等待状态,注:

当打开的视频源地址不是UDP模式时候无效;

2.RECFROM:

URL,url为ip地址,如192.168.0.2,该选项表示在接收视频数据时使用了recfrom的过滤功能,指定只对该ip地址(参数传入)编码器的视频数据进行解码而避免多个视频源冲突,参数有几个特殊值:

0.0.0.0表示不进行过滤,它的效果等同于没有该选项,255.255.255.255表示保留最后一次设置的过滤地址。

(注:

在每次连接的时候假如没有该选项或者选项为0.0.0.0则不采取过滤功能,以前设置的无效。

在连接后可以通过SendCommand函数改变过滤地址,详情请看函数的MPLAYER_CMD_PEEK命令);

3.RECTIMEOUT:

n,表示进行UDP/HTTP连接开始要等待数据的时间,假如超过该等待时间没有收到数据则Connect失败,不进行解码,如果不指定超时则缺省值是5秒,n表示等待的时间,单位为秒,n大于等于0有效,n等于0表示不做超时处理,永远等待。

注:

在配置文件中当有选项UdpTimeout且配置的时间大于0时候取配置超时,换句话说:

配置文件的配置优先级大于连接选项;n等于0 时候要指定MUXTYPE,否则只有等收到数据Connect才返回,如果没有数据则应用程序处于挂起状态,没有反应。

4.SHOT:

path,表示连接成功后立刻进行抓拍,path为抓拍文件路径。

 

返回值:

long型,返回执行的结果,0表示执行成功,其它表示失败或者警告,如MSG_E_INOPEN,MSG_E_DEMUX,表示的意义请查看OnMPMessage返回的消息;Connect方法在等到有数据或者超时后才返回,在等待过程中应用程序处于挂起状态。

如果指定MUXTYPE同时指定RECTIMEOUT为0,马上返回。

如果没有指定MUXTYPE同时指定RECTIMEOUT为0,则Connect方法一直等到有数据才返回,在等待过程中应用程序处于挂起状态。

2)Disconnect

HRESULTDisconnect()

接口功能:

断开连接。

3)GetInfo

HRESULTGetInfo(longID,VARIANTparam,[out]VARIANT*retval)

接口功能:

获取信息,包括视频,音频,SDK等信息

接口参数:

ID:

long,获取信息的ID号,在以下表1中描述;

param:

VARIANT,传入的参数,在表1中描述,它由ID值决定;

表1GetInfo中各个参数描述

#defineMPLAYER_INFO_INPROTOCAL0x02010100//获得现在支持的输入模块的协议,用BSTR表示,两个协议之间用“+”隔开,该版本返回file+disk+udp

#defineMPLAYER_INFO_DEMIMETYPE0x02010200//获得该版本支持的文件类型,用BSTR表示,如:

*.MPG等,中间用“+”隔开,该信息可以用在打开文件的对话框里,以便过滤特定的文件后缀

#defineMPLAYER_INFO_DEPROTOCAL0x02010201//获得该版本支持的媒体类型用BSTR表示,如MPEG1/2,MPEG4等,中间用“+”隔开

#defineMPLAYER_INFO_TOTALTIME0x02010202//返回该播放文件的总播放时间,用long表示,单位为秒,当返回小于等于0的时候表示该媒体流不能跳转,对于文件是否能够跳转应该以MPLAYER_INFO_SEEKABLE的信息为准,详情请查阅下面文档

#defineMPLAYER_INFO_VDPROTOCAL0x02010300//获得该版本支持的视频格式,规定如上

#defineMPLAYER_INFO_ADPROTOCAL0x02010400//获得该版本支持的音频格式,规定如上,BSTR表示,中间用用“+”隔开

#defineMPLAYER_INFO_CURTIME0x02060000//获得当前的播放时间描述,用long表示,单位为秒

#defineMPLAYER_INFO_SEEKABLE0x02010203//查询该播放文件的是否能拖动,返回BOOL,ture表示能够拖动,否则不能。

对于有些格式的音视频数据没有随机播放的能力,所以由MPLAYER_INFO_TOTALTIME返回的值小于或者等于0并不能完全的决定该视频源是否能够跳转

#defineMPLAYER_INFO_SPULANG0x02010600//获得子图像流的流号和所对应的语言种类信息,返回BSTR数组,共32项,假如该ID号没有对应的子图象则返回””,利用该信息可以选择某一个子图象,只要调用MPLAYER_CMD_SPUCH命令传入对应的ID值既可。

#defineMPLAYER_INFO_ALANG0x02010601//获得音频流的流号和所对应的语言种类信息,返回BSTR数组,共8项,假如该ID号没有对应的音频流则返回””,利用该信息可以选择某一个音频流,只要调用MPLAYER_CMD_AUDIOCH命令传入对应的ID值既可

#defineMPLAYER_INFO_PEEKADDR0x02020005//返回当前视频源过滤的地址,返回过滤的IP地址如:

192.168.0.111

#defineMPLAYER_INFO_SPEED0x02030001//返回该媒体类型能支持的播放速度,返回long数组,播放速度是以64的倍数标志,正负号表示向前或者向后,-号表示向后播放,+表示向前播放,如64表示向前一倍速播放,-128向后2倍数播放

#defineMPLAYER_INFO_DVDFLAG0x02030002//返回DVD标志,返回bool,true表示该格式为DVD视频格式,否则不是,对于目前只有DVD格式才有多种子图象(字幕)和多种音频流

#defineMPLAYER_INFO_PAUSEFLAG0x02030003//返回暂停标志,返回BOOL,true表示暂停,否则表示播放

#defineMPLAYER_INFO_CURSPEED0x02030004//返回当前的播放速度,返回long值,速度的规定与MPLAYER_INFO_SPEED规定一样

#defineMPLAYER_INFO_CUR_PROCESS0x02030005//返回当前的播放进度,返回long值,进度的为百分比,0-100,如果返回-1,表示不能表示进度和跳转(网络视频)

#defineMPLAYER_INFO_CURSUB0x02040001//获得当前选择的音频流,返回long,对应于ID值

#defineMPLAYER_INFO_CURAD0x02050000//获得当前选择的音频流,返回long,对应于ID值

#defineMPLAYER_INFO_VIDEOMODE0x02080001//获取当前视频显示模式,返回long,-1,表示没有视频播放,0:

强制半场,1:

强制全场,2:

自动,这时效果最好,但可能增加处理量

#defineMPLAYER_INFO_PROBEFLAG0x02080002//获取是否显示探针标志,返回BOOL,true表示使用探针,否则不使用探针,探针表示对某个范围进行运动侦测,假如有运动存在则返回MSG_N_MOVE消息

#defineMPLAYER_INFO_TOTALFRAME0x02010204//返回当前播放文件的总帧数,long型

#defineMPLAYER_INFO_CURFRAME0x02060001//获得当前的播放帧数,long型

#defineMPLAYER_INFO_PLAYING0x02040003//获取控件播放信息可,返回long型,由低位到高位,第1位:

是否接收数据(只限UDP方式)(0,不接收;1,接收);第2位:

是否正在播放视频(0,不播放;1,播放);第3位:

是否处于暂停状态(只对文件播放有效)(0,不暂停;1,暂停);第4位:

是否设定了录像标志(不区分是否接收到数据)(0,不录像;1,录像);第5位:

是否处于禁音状态(0,不禁音;1,禁音);

返回值:

retval:

VARIANT,存放返回的信息;

4)SetCallbackOwner

BOOLSetCallbackOwner([in]longid,[out]VARIANT*ret)

接口功能:

设置callback的标志,区分各个流的视音频数据。

5)SendCommand

BOOLSendCommand([in]longid,[in]VARIANTparam,[out]VARIANT*ret)

接口功能:

向SDK发送控制命令,如设置播放速度,录像等命令

接口参数:

id:

long,表示控制类型,在表2中描述

param:

VARIANT,表示控制参数,在表2中描述

返回值

ret:

返回:

BOOL,true表示命令被执行,false表示命令执行失败或者没有被执行

表2SendCommand中各个参数描述

#defineMPLAYER_CMD_REG0x01010001//注册控件,param

类型为BSTR的注册码

#defineMPLAYER_CMD_ENABLEMEMU0x01010002//是否需要右键菜单,param

类型为bool,true表示使用系统菜单,false表示不使用系统菜单

#defineMPLAYER_CMD_INITFRAME0x01010003//设定缓冲帧数,该Command必须在构造完成之后,Connect接口调用之前使用,param类型为VT_I2,取值范围为1至30,若设置的帧数低于1,则系统设定为1,若帧数超过30,则系统设定为30,若不调用该命令,则系统使用的默认值为5;

#defineMPLAYER_CMD_RECORD0x01020000//录像的文件名地址,param为BSTR类型,当param为0(用int表示)时表示关闭录像

#defineMPLAYER_CMD_PAUSE0x01030000//暂停播放,param为NULL(NULL表示无意义)

#defineMPLAYER_CMD_NEXTFRAME0x01030018//播放下一帧,注意当前播放状态必须是暂停。

param类型为VT_BOOL,值为0。

#defineMPLAYER_CMD_PREFRAME0x0103001B//播放上一帧,注意当前播放状态必须是暂停。

param类型为VT_BOOL,值为1。

#defineMPLAYER_CMD_RESUME0x01030001//继续播放,param为NULL

#defineMPLAYER_CMD_JUMP0x01030002//跳转到的时间,param为long表示跳转到的位置

#defineMPLAYER_CMD_JUMP_PROCESS0x01030017//跳转到的进度,param为long表示跳转到的进度(百分比,取值范围0-100)

#defineMPLAYER_CMD_SPEED0x01030005//设置播放速度,param用long表示,64表示1X,128表示2X,32表示1/2X,负号表示反向

#defineMPLAYER_CMD_MUTE0x01030007//禁音,param为bool值,ture为关闭声音,false为打开声音

#defineMPLAYER_CMD_SWITCHSRC0x01030011//切换视频源,param为BSTR,表示切换到新的一个视频源地址,于Connect函数的url格式一样,该命令只对网络的url有效

注:

1.当param为udp:

//0.0.0.0:

0的时候表示不切换到任何地址,只是离开多播组;

2.当使用recfrom过虑时,传入的参数在后面加入选项的协议,格式为:

udp:

//udp地址:

端口+选项1:

参数+选项2:

参数+……+选项n:

参数,具体的意义和MPLAYER_CMD_PEEK一样,即:

不传入或者传入RECFROM:

0.0.0.0时表示取消最后设置的过滤地址,传入RECFROM:

255.255.255.255时候保持最后设置的过滤地址,两者都不是时表示重新设置过滤地址;

#defineMPLAYER_CMD_SHOT0x01060000//抓拍一幅图画,param用BSTR表示保存的文件名,目前支持bmp和jpg两种格式,通过文件扩展名区别

#defineMPLAYER_CMD_VOLUME0x01070000//设置音量大小,param用long表示,高字节表示右声道,低字节表示左声道,大小表示百分比

#defineMPLAYER_CMD_GOTOC0x01020002//跳到一个文件,对于DVD则可能是跳到章节,param用long表示,对应于该文件的ID号

#defineMPLAYER_CMD_PEEK0x01020004//增加过滤选项,当param=0.0.0.0时候表示不进行过滤,param=255.255.255.255表示不改变,否则解码软件只对数据源地址等于param的视频源进行解码,注:

在connect前可以先进行设置,但设置后connect的保留选项一定要传入RECFROM:

255.255.255.255选项以保持最后的过滤地址,否则设置将在connect后无效。

#defineMPLAYER_CMD_SPUCH0x0103000F//选择一个子图像,param为long,子图象ID号

#defineMPLAYER_CMD_AUDIOCH0x01030010//选择一个音频流,param为long,音频流的ID号

#defineMPLAYER_CMD_SETSHMODE0x01060005//设置显示模式,param为long,

//参数:

0:

半场,1:

全场,2:

mean方式,3:

线性插值,4:

Blend方式

#defineMPLAYER_CMD_SETPROBLE0x01060006//设置能否显示探针,param为BOOL,TRUE表示使用探针,false表示不使用探针,该命令不管是否播放都有效

#defineMPLAYER_CMD_DDMODE0x01060009////设置显示模式,0:

表示自动模式(即优先考滤overlay,初始化失败再使用offsetscreen),1:

表示overlay,2:

表示offsetscreen,默认为overlay模式,控件每次启动只需要设置一次以后每次播放都按照最后设置播放

#defineMPLAYER_CMD_SHOW0x0106000A//设置是否解码,0:

表示不解码,1:

表示解码

#defineMPLAYER_CMD_OSDTEXT0x0106000C//设置叠加显示的字符串,param用BSTR表示要显示的字符串

#defineMPLAYER_CMD_OSD_X0x0106000D//设置叠加显示字符串的横坐标,param用long表示要显示字符串相对于控件左侧的位置,单位是像素

#defineMPLAYER_CMD_OSD_Y0x0106000E//设置叠加显示字符串的纵坐标,param用long表示要显示字符串相对于控件上方的位移,单位是像素

#defineMPLAYER_CMD_OSD0x01060003//控制叠加字符串的显示,param用long型,0表示不要显示字符串,1表示显示

#defineMPLAYER_CMD_SHOT_DEINTERLACER0x01060017//设置抓拍的效果处理,param分别取以下值,”lb”,”li”,”ci”,”md”,”fd”等5种不同的处理效果

#defineMPLAYER_CMD_OSD_FONTNAME0x0106001A//设置OSD字符串的显示字体,param用字符串(VT_BSTR),如"TimesNewRoman"

#defineMPLAYER_CMD_OSD_FONTSIZE0x0106001B//设置OSD字符串的字体大小,param用unsignedchar(VT_UI1)型

#defineMPLAYER_CMD_OSD_FONTCOLOR0x0106001C//设置OSD字符串的字体颜色,param用long(VT_I4)型,如RGB(255,0,0)

#defineMPLAYER_CMD_WINDOWHIDE0x0106001D//小窗口隐藏时停止该窗口的图像绘画处理,param用BOOL型(VT_BOOL)

#defineMPLAYER_CMD_BKGCOLOR0x01010004//设置解码控件的背景颜色,param用long(VT_I4)型,如RGB(255,0,0)

#defineMPLAYER_CMD_FULLSCREEN0x01060029//设置控件全屏及恢复,param用long(VT_I4)型,非0置为全屏,0取消全屏

#defineMPLAYER_CMD_HTTP0x01020005//HTTP协议命令,param用long(VT_I4)型,1为暂停,2为恢复。

原始数据回凋命令:

函数功能:

取得视音频原始数据

函数原型:

回凋函数:

typedefint(DataCallBack)(longhandle,void*buf,longparam);

只要向控件发以下控制id的命令则进行设置不同类型的数据回凋函数,把回凋函数的指针强制转化为int的类型传入,如传入的参数为0,则表示取消数据回凋。

#defineMPLAYER_CMD_ACB0x01030012//设置取得音频数据的回凋函数

buf的类型以下数据结构的指针

structbuf_element_t

{

unsignedchar*mem;

unsignedchar*content;/*startofrawcontentinpMem(withoutheaderetc)*/

uint32_tsize;/*sizeof_content_*/

uint32_tmax_size;

uint32_ttype;

int64_tPTS;/*presentationtimestamp,usedfora/vsync*/

int64_tSCR;/*systemclockreference,usedfordiscont.detection*/

int64_tinput_pos;/*rememberwherethisbufcamefromintheinputsource*/

int64_tinput_time;/*timeoffsetinsecondsfrombeginningofstream*/

uint32_tdeco

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 自然科学 > 物理

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2