网络实时广播SDK6.0版
 
1、网络输入设备可以是麦克风,CD机,电台,收音机,音频文件或其他连线设备,输入设备可以选择任意声卡。
2、音频接收端可以选择声卡,声道等属性。
3、音频接收端可以选择接收多台电脑的音频数据。
4、音频发送端可以网络广播,同一网段的多台电脑可以接收到数据。
5、音频接收端支持多块声卡,声卡资源分配由用户选择(声卡,声道等)。
6、音频接收端多块声卡可以分组接收数据,同一组接收的音频数据相同,可以分多组。
7、音频接收端和音频发送端UDP端口可以选择。
8、支持所有支持动态连接库编程的语言。(如:VB,DELPHI,C++ Builder,VC++等等)
9、注意网络测试,必须有两台电脑,IP地址必须在广播范围之内,也可以具体IP地址。
 
只有UDP才支持广播,TCP是不支持广播的。

广播有两种,
一种是directed broadcast,比如你的网段是192.168.0.X,你就往192.168.0.255发就可以了。
另一种是limited broadcast,广播地址是255.255.255.255

两者都是可以的。
directed broadcast不需要SetSockopt(),以标准的C类网为例,直接发送x.x.x.255就可以了,
这种广播只有同一逻辑子网中的机器才能收到,也就是说对方地址应该是x.x.x.y,如果不是
即使在同一物理子网中也是收不到的。当然,这和子网掩码有关。

limited broadcast必须有SetSockopt(FSocket,SOL_SOCKET,SO_BROADCAST, @broadcast,sizeof(broadcast));
它的广播地址是255.255.255.255,它的好处是只要在同一子网中的主机,就可以收到这种
广播,而不必非要在统一逻辑子网中,例如,如果你的地址是x.x.x.1,那么这种广播,
地址是x.y.z.a的主机也能收到。

注意:在WIN98和WIN2K,本程序可以进行两中广播方式,在WINXP和WIN2003下,只能用直接广播(directed broadcast),如果广播地址不知道怎么设置,可以联系作者。

 
 
音频接收端SDK函数
 
function stInitDevice(AppHandle:THandle):integer;
初始化函数,在使用其他函数之前必须调用。AppHandle:调用此函数的窗体句柄。
 
function stUnInitDevice:integer;stdcall;
释放分配的资源。
 
function stEnumWaveDevices(EnumDevice:Pchar):integer;
EnumDevice:已经分配的内存,得到当前系统音频设备列表,多个设备之间用回车换行分隔。返回值为:声卡数量,
 
function stSetVolume(Mixid,Id,Value: integer):integer;stdcall;
设置混合器Mixid的Id设备音量大小Value。 ID=-1 为主音量 ,ID=9 为WAVE音量
 
function stGetVolume(Mixid,Id: integer):integer;stdcall;
得到混合器Mixid的Id设备音量大小,ID=-1 为主音量 ,ID=9 为WAVE音量
 
function stSetSndVolPro(Mixid:integer;isRecPanel:integer):integer;stdcall;
显示混合器Mixid的属性。isRecPanel=0 为音量控制界面,不等于0为录音控制界面。
 
function stSetInDeviceID(Mixid:integer;Value:integer):integer;stdcall;
设置麦克风输入的声卡的ID号,Mixid=0;Value=声卡的ID号
 
function stSetInDeviceEnabled(Mixid:integer;Value:integer) : integer; stdcall;
设置麦克风输入的声卡是否可用,Mixid=0;Value=0 停止 , Value=1 使用
 
function stSetOutDeviceID(Mixid:integer;Value:integer):integer;stdcall;
设置混合器Mixid的输出声卡的ID号。Value=ID号
 
function stSetOutDeviceBalace(Mixid:integer;Value:integer):integer;stdcall;
设置混合器Mixid的输出平衡。Value < 0 不发声,0 左声道,1 右声道 2 混合声道
 
function stGetInDeviceDsp(Mixid:integer) : integer; stdcall; 返回值在0..300之间
得到输入设备的DSP值,Mixid=0;
 
function stListenNet(NetID,nPort,Listen:integer):integer;stdcall;
监听网络广播音频数据,NetID:网络连接ID(0..5), nPort :端口号;Listen=0 不监听 Listen=1 监听
 
function stPlayerLinkNetID(PlayerID,NetID:integer):integer;stdcall;

把连接和播放器连在一起,PlayerID:播放器ID号(0..5);NetID:网络连接ID号(0..5)

 
function stSetClientSN(RegStr : Pchar):integer; stdcall;
注册函数,RegStr为注册码 ,必须在最先调用。
 
 
音频发送端SDK函数
 
function stInitDevice(AppHandle:THandle):integer;
初始化函数,在使用其他函数之前必须调用。AppHandle:调用此函数的窗体句柄
 
function stUnInitDevice:integer;stdcall;
释放分配的资源。
 
function stEnumWaveDevices(EnumDevice:Pchar):integer;
EnumDevice:已经分配的内存,得到当前系统音频设备列表,多个设备之间用回车换行分隔。返回值为:声卡数量,
 
function stSetSndVolPro(Mixid:integer;isRecPanel:integer):integer;stdcall;
显示混合器Mixid的属性。isRecPanel=0 为音量控制界面,不等于0为录音控制界面。
 
function stLocalMute(nMute:integer):integer;stdcall;
设置本地是否发声音。nMute=0 发声, nMute=1 为静音
 
function stNetBroadcast(BroadcastIP:pchar; nPort;CardID:integer):integer;stdcall;
BroadcastIP 广播地址,地址也可以是指定电脑的IP地址。nPort 端口号, 客户端和服务端端口号必须一致。CardID:声卡ID号
 
function stFileBroadcast(BroadcastIP:pchar;nPort:integer;FileName:Pchar;isLoop:integer):integer;stdcall;
BroadcastIP 广播地址,地址也可以是指定电脑的IP地址。nPort 端口号, 客户端和服务端端口号必须一致,FileName 要广播的WAVE文件,isLoop等于0不循环播放不等于0循环播放。
 
function stStopBroadcast() :integer;stdcall;
停止广播。
 
function stSetServerSN(RegStr : Pchar):integer; stdcall;
注册函数,RegStr为注册码 ,必须在最先调用。
 
RegisterWindowMessage('WM_SYSTEM_PLAYSTATES'); 注册事件,用来接收播放文件时的状态。

作者:李国智(13574073303 0731-2600017)

邮件:stgzs@etang.com

智远科技:http://www.csdelphi.com

QQ: 10020020 23144351


汇款地址:http://www.csdelphi.com/accounts.asp


开发包详细使用,请参考演示程序。

注意:没有注册的用户,会弹出没有注册的信息,请原谅! ,注册用户可以得到MIXER函数设置,包括音量的设置,录音的选择,静音的设置等。