p2pnet-meeting
所属分类:P2P编程
开发工具:Delphi
文件大小:3731KB
下载次数:32
上传日期:2012-04-19 17:07:49
上 传 者:
ruichimail
说明: 视频会议 一套可视化视频同步软件源码,请查看
(net meeting a viewable netmeeting source code)
文件列表:
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\KTAVMRecv.exe (462336, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\KTAVMSend.exe (503808, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\Recv\KTAVMRecv.cfg (442, 2012-04-17)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\Recv\KTAVMRecv.dof (3083, 2012-04-17)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\Recv\KTAVMRecv.dpr (196, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\Recv\KTAVMRecv.res (876, 2012-04-17)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\Recv\Main.dfm (2735, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\Recv\Main.pas (5620, 2007-10-07)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\Send\KTAVMSend.dpr (227, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\Send\Main.dfm (8462, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\Send\Main.pas (14856, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\Send\SetParam.dcu (2218, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\Conference\ConfDemo.exe (542720, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\Filter\KTAVMulticast.ax (592384, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\Filter\Reg.bat (25, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\Filter\REGSVR32.EXE (11024, 2003-06-20)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\Filter\Unreg.bat (28, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\Filter\『源码天空』.url (164, 2005-02-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\Filter\使用说明.txt (1619, 2006-07-30)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\Filter\免费『商业源码』.url (164, 2005-02-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\SendFilm01.jpg (78397, 2007-10-06)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\SendFilm02.jpg (73627, 2007-10-06)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\SendFilm03.jpg (47875, 2007-10-06)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\SendFilm04.jpg (36359, 2007-10-06)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\SendFilm05.jpg (86433, 2007-10-06)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\SendFilm06.jpg (39608, 2007-10-06)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\SendFilm07.jpg (83716, 2007-10-06)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\SendFilm08.jpg (39056, 2007-10-06)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\SendFilm09.jpg (60619, 2007-10-06)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\SendFilm10.jpg (48517, 2007-10-06)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\SendFilm11.jpg (65193, 2007-10-06)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\w.avi (2559540, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\Recv (0, 2012-04-17)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource\Send (0, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\AppSource (0, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\Conference (0, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141\Filter (0, 2007-10-08)
音视频完全同步的局域网组播DirectShow过滤器\200710916444141 (0, 2012-04-17)
音视频完全同步的局域网组播DirectShow过滤器 (0, 2012-04-16)
... ...
音视频完全同步的组播过滤器KTAVMulticast.ax
一、过滤器说明:
KTAVMulticast.ax是一组基于DirectShow技术开发的音视频组播传输过滤器,包括音视
频组播发送KTAVMSender及音视频组播接收KTAVMReceiver两个Filter,可应用于局域网内实
时音视频及电影的组播与接收,也可以用于局域网视频会议、视频教学系统的开发。其接口
如下:
1. KTAVMSender:是一个Render型的Filter,用于音频或视频组播。
Delphi:
CLSID_KTAVMSender: TGUID = '{5AF8DA7F-***8A-4783-B4A7-14AEA8658E10}';
//发送端回调接口
IKTAVMSenderCB = interface(IUnKnown)
['{2C0C7789-15D9-4178-A75B-2D184D5F3190}']
//输出内部控制数据,应传送到另一个KTAVMSender的函数InternalControl
function OnInternalControl(FilterID: Integer; Data: PByte): HRESULT; stdcall;
//输出传送帧速,Fps-帧/秒,Bps-字节/秒
function OnSendRate(FilterID, MajorMediaType, Fps, Bps: Integer): HRESULT; stdcall;
end;
IKTAVMSender = interface(IUnKnown)
['{5307A19B-313F-4475-A393-759F0C993B25}']
//设置授权码
function Authorise(Company, Code: PChar): HRESULT; stdcall;
//设置组IP
function SetMulticastIP(MulticastIP: PChar): HRESULT; stdcall;
//取得组IP,默认是233.0.0.1
function GetMulticastIP(out MulticastIP: PChar): HRESULT; stdcall;
//设置组播端口
function SetMulticastPort(MulticastPort: Integer): HRESULT; stdcall;
//取得组播端口,默认是12700
function GetMulticastPort(out MulticastPort: Integer): HRESULT; stdcall;
//取得本机所有网络适配器的IP地址,每个IP用回车换行符分隔
function GetLocalIPs(out LocalIPs: PChar): HRESULT; stdcall;
//设置本机局域网IP(应在GetLocallIPs取得的列表中选取)
function SetLocalIP(LocalIP: PChar): HRESULT; stdcall;
//取得本机局域网IP,默认是127.0.0.1
function GetLocalIP(out LocalIP: PChar): HRESULT; stdcall;
//设置应用程序识别码,只有相同识别码的程序能互相识别,处理数据
function SetAppID(AppID: Word): HRESULT; stdcall;
//设置本发送端用户标识
function SetUserID(UserID: Integer): HRESULT; stdcall;
//取得本发送端用户标识,默认是1000
function GetUserID(out UserID: Integer): HRESULT; stdcall;
//设置本Filter所组播的媒体类型:0-视频;1-音频,默认是0
function SetMajorMediaType(MajorMediaType: Integer): HRESULT; stdcall;
//取得本Filter正组播的媒体类型
function GetMajorMediaType(out MajorMediaType: Integer): HRESULT; stdcall;
//设置传输模式:0-实时传送;1-传送电影,默认是0
function SetTransmissionMode(TransmissionMode: Integer): HRESULT; stdcall;
//取得当前传输模式
function GetTransmissionMode(out TransmissionMode: Integer): HRESULT; stdcall;
//设置回调函数,FilterID用于本Filter在应用程序中的唯一识别码
function SetCallback(Callback: IKTAVMSenderCB; FilterID: Integer): HRESULT; stdcall;
//用于内部控制,输入另一个KTAVMSender回调函数中输出的数据
function InternalControl(Data: PByte): HRESULT; stdcall;
//组播用户的普通数据
function MulticastData(Data: PByte; DataLen: Integer): HRESULT; stdcall;
end;
VC++:
DEFINE_GUID(CLSID_KTAVMSender,
0x5AF8DA7F, 0x***8A, 0x4783, 0xB4, 0xA7, 0x14, 0xAE, 0xA8, 0x65, 0x8E, 0x10);
EXTERN_GUID(IID_IKTAVMSenderCB,
0x2C0C7789, 0x15D9, 0x4178, 0xA7, 0x5B, 0x2D, 0x18, 0x4D, 0x5F, 0x31, 0x90);
MIDL_INTERFACE("2C0C7789-15D9-4178-A75B-2D184D5F3190")
IKTAVMSenderCB : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE OnInternalControl(int FilterID, char *Data) = 0;
virtual HRESULT STDMETHODCALLTYPE OnSendRate(int FilterID, int MajorMediaType, itn Fps, int Bps) = 0;
};
EXTERN_GUID(IID_IKTAVMSender,
0x5307A19B, 0x313F, 0x4475, 0xA3, 0x93, 0x75, 0x9F, 0x0C, 0x99, 0x3B, 0x25);
MIDL_INTERFACE("5307A19B-313F-4475-A393-759F0C993B25")
IKTAVMSender : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE Authorise(char *Company, char *Code) = 0;
virtual HRESULT STDMETHODCALLTYPE SetMulticastIP(char *MulticastIP) = 0;
virtual HRESULT STDMETHODCALLTYPE GetMulticastIP(/* [out] */ char **MulticastIP) = 0;
virtual HRESULT STDMETHODCALLTYPE SetMulticastPort(int MulticastPort) = 0;
virtual HRESULT STDMETHODCALLTYPE GetMulticastPort(/* [out] */ int *MulticastPort) = 0;
virtual HRESULT STDMETHODCALLTYPE GetLocalIPs(/* [out] */ char **LocalIPs) = 0;
virtual HRESULT STDMETHODCALLTYPE SetLocalIP(char *LocalIP) = 0;
virtual HRESULT STDMETHODCALLTYPE GetLocalIP(/* [out] */ char **LocalIP) = 0;
virtual HRESULT STDMETHODCALLTYPE SetAppID(WORD AppID) = 0;
virtual HRESULT STDMETHODCALLTYPE SetUserID(int UserID) = 0;
virtual HRESULT STDMETHODCALLTYPE GetUserID(/* [out] */ int *UserID) = 0;
virtual HRESULT STDMETHODCALLTYPE SetMajorMediaType(int MediaType) = 0;
virtual HRESULT STDMETHODCALLTYPE GetMajorMediaType(/*[out]*/ int *MediaType) = 0;
virtual HRESULT STDMETHODCALLTYPE SetTransmissionMode(int TransmissionMode) = 0;
virtual HRESULT STDMETHODCALLTYPE GetTransmissionMode(/*[out]*/ int *TransmissionMode) = 0;
virtual HRESULT STDMETHODCALLTYPE SetCallback(IKTAVMSenderCB *Callback, int FilterID) = 0;
virtual HRESULT STDMETHODCALLTYPE InternalControl(char *Data) = 0;
virtual HRESULT STDMETHODCALLTYPE MulticastData(char *Data, int DataLen) = 0;
};
2. KTAVMReceiver:是一个Source型的Filter,用于音视频接收。
Delphi:
CLSID_KTAVMReceiver: TGUID = '{2AE139CE-46B1-47C6-A56D-291CD6C2F84F}';
//接收端的回调接口
IKTAVMReceiverCB = interface(IUnknown)
['{70C3BCA5-B715-4487-AA38-00ED892DF682}']
//用于Render输出脚Output
function OnRender(FilterID, MajorMediaType, TransmissionMode: Integer; Output: IPin): HRESULT; stdcall;
//用于播放本Filter Graph
function OnRun(FilterID: Integer): HRESULT; stdcall;
//用于停止本Filter Graph并清除所有其它的Filter
function OnStop(FilterID: Integer): HRESULT; stdcall;
//指示音视频缓冲进度,0~100
function OnFillBuffer(FilterID, PercentFill: Integer): HRESULT; stdcall;
//输出接收帧速
function OnRecvRate(FilterID, MajorMediaType, Fps, Bps: Integer): HRESULT; stdcall;
//输出接收到的用户普通数据
function OnRecvData(FilterID, FromUserID: Integer; Data: PByte; DataLen: Integer): HRESULT; stdcall;
end;
IKTAVMReceiver = interface(IUnknown)
['{A8674DF5-15B5-40E2-99E0-9B5B***A1BB40}']
function Authorise(Company, Code: PChar): HRESULT; stdcall;
function SetMulticastIP(MulticastIP: PChar): HRESULT; stdcall;
function GetMulticastIP(out MulticastIP: PChar): HRESULT; stdcall;
function SetMulticastPort(MulticastPort: Integer): HRESULT; stdcall;
function GetMulticastPort(out MulticastPort: Integer): HRESULT; stdcall;
function GetLocalIPs(out LocalIPs: PChar): HRESULT; stdcall;
function SetLocalIP(LocalIP: PChar): HRESULT; stdcall;
function GetLocalIP(out LocalIP: PChar): HRESULT; stdcall;
//设置网络组播接收器状态,Active:TRUE为开始接收,FALSE为停止接收,默认Filter创建时为TRUE
function SetActive(Active: Bool): HRESULT; stdcall;
//取得网络组播接收器状态
function GetActive(out Active: Bool): HRESULT; stdcall;
function SetAppID(AppID: Word): HRESULT; stdcall;
function SetUserID(UserID: Integer): HRESULT; stdcall;
function GetUserID(out UserID: Integer): HRESULT; stdcall;
function SetCallback(Callback: IKTAVMReceiverCB; FilterID: Integer): HRESULT; stdcall;
end;
VC++:
DEFINE_GUID(CLSID_KTAVMReceiver,
0x2AE139CE, 0x46B1, 0x47C6, 0xA5, 0x6D, 0x29, 0x1C, 0xD6, 0xC2, 0xF8, 0x4F)
EXTERN_GUID(IID_IKTAVMReceiverCB,
0x70C3BCA5, 0xB715, 0x4487, 0xAA, 0x38, 0x00, 0xED, 0x89, 0x2D, 0xF6, 0x82)
MIDL_INTERFACE("70C3BCA5-B715-4487-AA38-00ED892DF682")
IKTAVMReceiverCB : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE OnRender(int FilterID, int MajorMediaType, int TransmissionMode, *IPin Output) = 0;
virtual HRESULT STDMETHODCALLTYPE OnRun(int FilterID) = 0;
virtual HRESULT STDMETHODCALLTYPE OnStop(int FilterID) = 0;
virtual HRESULT STDMETHODCALLTYPE OnFillBuffer(int FilterID, int PercentFill) = 0;
virtual HRESULT STDMETHODCALLTYPE OnRecvRate(int FilterID, int MajorMediaType, int Fps, int Bps) = 0;
virtual HRESULT STDMETHODCALLTYPE OnRecvData(int FilterID, int FromUserID; char *Data, int DataLen) = 0;
};
EXTERN_GUID(IID_IKTAVMReceiver,
0xA8674DF5, 0x15B5, 0x40E2, 0x99, 0xE0, 0x9B, 0x5B, 0x***, 0xA1, 0xBB, x040);
MIDL_INTERFACE("A8674DF5-15B5-40E2-99E0-9B5B***A1BB40")
IKTAVMReceiver : public IUnknown
{
public:
virtual HRESULT STDMETHODCALLTYPE Authorise(char *Company, char *Code) = 0;
virtual HRESULT STDMETHODCALLTYPE SetMulticastIP(char *MulticastIP) = 0;
virtual HRESULT STDMETHODCALLTYPE GetMulticastIP(/* [out] */ char **MulticastIP) = 0;
virtual HRESULT STDMETHODCALLTYPE SetMulticastPort(int MulticastPort) = 0;
virtual HRESULT STDMETHODCALLTYPE GetMulticastPort(/* [out] */ int *MulticastPort) = 0;
virtual HRESULT STDMETHODCALLTYPE GetLocalIPs(/* [out] */ char **LocalIPs) = 0;
virtual HRESULT STDMETHODCALLTYPE SetLocalIP(char *LocalIP) = 0;
virtual HRESULT STDMETHODCALLTYPE GetLocalIP(/* [out] */ char **LocalIP) = 0;
virtual HRESULT STDMETHODCALLTYPE SetActive(BOOL Active) = 0;
virtual HRESULT STDMETHODCALLTYPE GetActive(/* [out] */ BOOL *Active) = 0;
virtual HRESULT STDMETHODCALLTYPE SetAppID(WORD AppID) = 0;
virtual HRESULT STDMETHODCALLTYPE SetUserID(int UserID) = 0;
virtual HRESULT STDMETHODCALLTYPE GetUserID(/* [out] */ int *UserID) = 0;
virtual HRESULT STDMETHODCALLTYPE SetCallback(IKTAVMReceiverCB *Callback, int FilterID) = 0;
};
二、简要说明:
1. 注册Filter:
使用KTAVMulticast.ax前请先用压缩包里的Reg.bat对其进行注册,注册后在DirectShow
Filters里会出现KTAVMSender Filter及KTAVMReceiver Filter两个Filter。
2. 在GraphEdit里测试:
参考图SendFilm01.jpg至图SendFilm11.jpg并按其说明步骤来做。传送实时音视频的方法
与此类似。
3. 编程:
参考AppSource里的Send及Recv文件夹中的源码来实现。更复杂一点的应用请参考Conference
文件夹中的视频会议演示程序(源码经授权后才提供)。
4. 视频会议演示程序:
Conference目录下有个简单的5人视频会议的演示程序,这个程序就是使用这个Filter所写。
测试时可以在局域网多台不同的机器上运行,先对应设好各个用户的ID,1001至1005(注意:ID
不能重复),并选择好本机所在的局域网IP地址,点“实时传送”按钮后,所有在“远程”页里
选择了该用户ID的视频就能收到和显示了(双击各视频可切换到全屏模式),也能听到传来的麦
克风的声音,本程序的实时传送的视频使用XVID作为压缩器,因此运行前需安装XVID;点“电
影传送”按钮并选择电影文件后,电影的音视频就会组播出去,其它用户就会收看到了。
三、版权说明:
本组播过滤器为共享软件,版权归开发者所有,凭授权可无任何限制使用;未经授权可随
意发布并仅可用于测试使用;任何情况下均不允许随意修改。
QQ:93202767(网上飘)
近期下载者:
相关文件:
收藏者: