/// <summary> /// 视频捕捉前事件 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void VC_VideoCapturerBefore(object sender, VideoCapturedEventArgs e) { Console.WriteLine("bmiColors:" + e.BITMAPINFO.bmiColors.ToString()); Console.WriteLine("biSize:" + e.BITMAPINFO.bmiHeader.biSize.ToString() + " biSizeImage:" + e.BITMAPINFO.bmiHeader.biSizeImage.ToString() + " biBitCount:" + e.BITMAPINFO.bmiHeader.biBitCount.ToString() + " biWidth:" + e.BITMAPINFO.bmiHeader.biWidth.ToString() + " biHeight:" + e.BITMAPINFO.bmiHeader.biHeight.ToString() + " biClrUsed:" + e.BITMAPINFO.bmiHeader.biClrUsed.ToString() + " biClrImportant:" + e.BITMAPINFO.bmiHeader.biClrImportant.ToString() + " biXPelsPerMeter:" + e.BITMAPINFO.bmiHeader.biXPelsPerMeter.ToString() + " biYPelsPerMeter:" + e.BITMAPINFO.bmiHeader.biYPelsPerMeter.ToString() + " biPlanes:" + e.BITMAPINFO.bmiHeader.biPlanes.ToString() + " biCompression:" + e.BITMAPINFO.bmiHeader.biCompression.ToString()); if (VE == null) { VE = new VideoEncoder(e.BITMAPINFO, true); //根据摄像头采集数据的格式,创建新的视频编码器 } if (VR == null) { VR = new VideoRender(this.cRemote); VR.IniVideoRender(e.BITMAPINFO.bmiHeader); } if (VD == null) { VD = new VideoEncoder(e.BITMAPINFO, false); //初始化解码器 } //防止丢包,发送三次本地视频图像头信息给对方,以便对方解码器正确解码 // AVcommunication1.SendBITMAPINFOHEADER(e.BITMAPINFO.bmiHeader);//发送本地视频图像头信息给对方,以便对方解码器正确解码 // System.Threading.Thread.Sleep(300); // AVcommunication1.SendBITMAPINFOHEADER(e.BITMAPINFO.bmiHeader);//发送本地视频图像头信息给对方,以便对方解码器正确解码 // System.Threading.Thread.Sleep(300); // AVcommunication1.SendBITMAPINFOHEADER(e.BITMAPINFO.bmiHeader);//发送本地视频图像头信息给对方,以便对方解码器正确解码 }
/// <summary> /// 设置对方视频格式事件 /// </summary> /// <param name="BITMAPINFO"></param> public void SetRemoteBITMAPINFOHEADER(BITMAPINFO BITMAPINFO) { if (VD == null) { VD = new VideoEncoder(BITMAPINFO, false);//创建视频解码器 } if (VR == null) { VR = new VideoRender(this.cRemote);//创建视频回显组件 VR.IniVideoRender(BITMAPINFO.bmiHeader); } }