p_af_AvSenderProj1.ocx
接口:
property VideoIP: WideString dispid 18;//视频IP
property AudioDrvIndex: Integer dispid //19;音频IP
property AudioFrameRate: Integer dispid 21;//音频采样速率默认为3
property AudioIP: WideString dispid 22;//音频IP
property AudioPort: Integer dispid 23;//音频端口
property VideoDrv: WideString dispid 24;视频设备,默认为第一个视频设备
property VideoMode: Integer dispid 25;//采样大小
property VideoRate: Integer dispid 26;//码率
property VideoFrameRate: Integer dispid 27;//采样频率
property VideoPort: Integer dispid 28; //视频端口
property MaxKeyFrameInterval: Integer dispid 29;//关键帧最大间隔
function ConnectDrv: WordBool; dispid 20; //初始化视频采集设备
property VideoConnected: WordBool readonly dispid 33; //设备已连接否
property HasVideoDrv: WordBool readonly dispid 34;//是否有至少一个视频设备
procedure DlgVideoSource; dispid 35;//显示视频设备对话框
function OpenVideo: WordBool; dispid 36;//开始发送视频
procedure CloseVideo; dispid 37;//关闭视频发送
function OpenAudio: WordBool; dispid 38;//开始发送音频
procedure CloseAudio; dispid 39;//关闭音频发送
procedure InitParams; dispid 30;//初始化参数,每次更改参数,必须调用该方法
property MenuVisible: WordBool dispid 31;//是否显示右键菜单
property HasAudioDrv: WordBool readonly dispid 32;//是否有至少一个录音设备
示例A(以delphi为例):视频采集压缩及发送
procedure TForm1.Button1Click(Sender: TObject);
begin
if af_AvSender1.HasVideoDrv then //是否有视频
begin
af_AvSender1.ConnectDrv; //连接视频源
af_AvSender1.VideoIP := '127.0.0.1'; //视频数据将发送到该IP
af_AvSender1.VideoPort := 8001; //视频数据将发送到该端口
af_AvSender1.VideoMode := 0;
//采样大小:(vm160 = 0, vm176, vm320, vm352, vm640);
af_AvSender1.VideoRate := 1;
//码率(影响视频质量的关键参数)
//可选:1表示128K/秒(vr64, vr128, vr192, vr256, vr384, vr512, vr768, vr1024);
af_AvSender1.VideoFrameRate := 5; //帧速:5表示每秒钟5帧
af_AvSender1.MaxKeyFrameInterval := 10;
//关键帧最大间隔 :每10帧至少有一个关键帧 如果网络带宽大,但易丢包的话建议将此值设小。注意:如果关键帧丢失图像将停顿直到下一个关键帧到来
end;
af_AvSender1.AudioDrvIndex := 0; //录音设备序号,0为第一个录音设备
af_AvSender1.AudioFrameRate := 3; //默认
af_AvSender1.AudioIP := '127.0.0.1'; //音频数据将发送到该IP
af_AvSender1.AudioPort := 8000; //音频数据将发送到该端口
af_AvSender1.InitParams; //初始化输入的参数,每次更改参数都需调用该方法
af_AvSender1.OpenVideo; //开始发送视频
af_AvSender1.OpenAudio; //开始发送音频
end;
示例B(以delphi为例):显示右键菜单
af_AvSender1.MenuVisible:=true;
示例C(以delphi为例):显示视频格式设置对话框
af_AvSender1.DlgVideoSource;
2、p_AF_AvReceiveProj1.ocx
接口:
property UserID: Integer dispid 18; //标识
property LocalAudioPort: Integer dispid 19;//本地音频端口
property LocalVideoPort: Integer dispid 20;//本地视频端口
property AudioProviderIP: WideString dispid 21;//音频提供者IP
property VideoProviderIP: WideString dispid 22;//视频提供者IP
property AudioProviderPort: Integer dispid 23;//音频提供都端口
property VideoProviderPort: Integer dispid 24; //视频提供都端口
function StartReceiveVideo: WordBool; dispid 25;//开始接收视频
procedure StopReceiveVideo; dispid 26;//停止接收视频
function StartReceiveAudio: WordBool; dispid 27;//开始接收音频
procedure StopReceiveAudio; dispid 28;//停止接收音频
property CountReceiveBits: Integer readonly dispid 29;//共接收bit
property ParentWidth: Integer dispid 30; //窗口宽度
property CountReceiveFrames: Integer readonly dispid 31;//共接收了多少帧
property RecFileName: WideString dispid 32; //指定录象文件名称
procedure InitReceive; dispid 33; //初始化接收参数
procedure StartRec; dispid 35;//开始录像
procedure StopRec; dispid 36;//停止录象
procedure PauseRec; dispid 37;//暂停录象
procedure ResumRec; dispid 38;//继续录象
示例A(delphi):接收一路视频及音频,并录象至’c:/t1.rec’文件中
with AF_AVReceive1 do
begin
UserID := 1;
LocalAudioPort := 8000;
LocalVideoPort := 8001;
AudioProviderIP := '127.0.0.1';
AudioProviderPort := 8000;
VideoProviderIP := '127.0.0.1';
VideoProviderPort := 8001;
RecFileName := 'c:/t1.rec';
ParentWidth := AF_AVReceive1.Width;
InitReceive;
StartReceiveVideo;
StartReceiveAudio;
StartRec;
end;
3、p_AF_PlayRecProj1.ocx
接口:
procedure Play(const ARecFileName: WideString); dispid 18;//播放录象文件
procedure Stop; dispid 19;//停止
procedure Pause; dispid 20;//暂停
procedure Resume; dispid 21;//继续
procedure SaveToDibFile(const ADibFileName: WideString); dispid 22;//抓取当前画面并存为DIB位图
procedure Init; dispid 23; //初始化
procedure RegFileType(const FExt: WideString; const fKey: WideString; const fDesc: WideString;const fPrg: WideString); dispid 24; //注册文件类型
示例A(以delphi为例):播放一个录象文件
AF_PlayRec1.Init; //不要在OnCreate中执行Init,建议第一次play前执行
AF_PlayRec1.Play('c:/t1.rec');