AnyChat技术支持论坛

标题: 视频数据回调函数使用的问题 [打印本页]

作者: hk92    时间: 2015-12-16 11:54
标题: 视频数据回调函数使用的问题
本帖最后由 hk92 于 2015-12-16 11:57 编辑

您好,我做了以下的测试,来利用视频数据回调函数数据,结果没有数据按照我想要的方式输入到我指定的文件当中。
  1. namespace ANYCHATAPI
  2. { public delegate void VideoDataCallback(int userId, IntPtr buf, int len, AnyChatCoreSDK.BITMAPINFOHEADER bitMap, int userValue);}
复制代码
然后注册视频回调
  1.   AnyChatCoreSDK.SetVideoDataCallBack(AnyChatCoreSDK.PixelFormat.BRAC_PIX_FMT_RGB24, video_Callback, hWnd.ToInt32());
复制代码
  1. static AnyChatCoreSDK.VideoData_CallBack video_Callback = new AnyChatCoreSDK.VideoData_CallBack(VideoData_CallBack);
复制代码
然后是
  1. public static VideoDataCallback Video_OnCallBack = null;
复制代码
  1.   private static void VideoData_CallBack(int userId, IntPtr buf, int len, AnyChatCoreSDK.BITMAPINFOHEADER bitMap, int userValue)
  2.         {
  3.             
  4.             if (Video_OnCallBack != null)
  5.                 Video_OnCallBack(userId, buf, len, bitMap, userValue);
  6.            // Console.WriteLine("123");
  7.         }
复制代码
以上是 初始化AnyChat sdk 注册 callback
然后在初始化房间的时候
  1. SystemSetting.Video_OnCallBack = new VideoDataCallback(Received_Videodata);
复制代码
  1. private void Received_Videodata(int userId, IntPtr buf, int len, AnyChatCoreSDK.BITMAPINFOHEADER bitMap, int userValue)
  2.         {
  3.             string m_Command = Marshal.PtrToStringAnsi(buf);
  4.             File.AppendAllText("D:\\a.txt", m_Command);     
  5.         }
复制代码
按照开发文档说的,在调用ret = AnyChatCoreSDK.UserCameraControl(-1, true)时就会触发回调函数,那么我测试的时候,为什么在D盘下的a.txt文档中没有数据呢?

作者: 佰锐科技-李友勤    时间: 2015-12-17 09:25
您好,首先需要在BRAC_InitSDK里面设置功能标识。

  1. ulong dwFuncMode = AnyChatCoreSDK.BRAC_FUNC_VIDEO_AUTODISP |AnyChatCoreSDK.BRAC_FUNC_AUDIO_AUTOPLAY | AnyChatCoreSDK.BRAC_FUNC_CHKDEPENDMODULE | AnyChatCoreSDK.BRAC_FUNC_AUDIO_VOLUMECALC | AnyChatCoreSDK.BRAC_FUNC_NET_SUPPORTUPNP | AnyChatCoreSDK.BRAC_FUNC_FIREWALL_OPEN | AnyChatCoreSDK.BRAC_FUNC_VIDEO_CBDATA

  2. BRAC_InitSDK(HWND hWnd, DWORD dwFuncMode)
复制代码

作者: 佰锐科技-李永星    时间: 2015-12-17 09:58
本帖最后由 佰锐科技-李永星 于 2015-12-17 10:01 编辑
  1. AnyChatCoreSDK.SetVideoDataCallBack(AnyChatCoreSDK.PixelFormat.BRAC_PIX_FMT_YUV420P, video_Callback, hWnd.ToInt32());
复制代码
  1. private static void VideoData_CallBack(int userId, IntPtr buf, int len, AnyChatCoreSDK.BITMAPINFOHEADER bitMap, int userValue)
  2.         {
  3.             if (userId == UserID) //保存指定用户ID的YUV数据
  4.             {
  5.                 DateTime time = DateTime.Now;

  6.                 FileStream fs = new FileStream("test.yuv", FileMode.Append);
  7.                 BinaryWriter wt = new BinaryWriter(fs);

  8.                 byte[] wtBuff = new byte[len];
  9.                 Marshal.Copy(buf, wtBuff, 0, len);

  10.                 wt.Write(wtBuff);

  11.                 wt.Close();
  12.                 fs.Close();

  13.                 TimeSpan span = DateTime.Now.Subtract(time);
  14.                 Console.Out.WriteLine(span.TotalMilliseconds);
  15.             }
  16.         }
复制代码
请看昨天的贴子,初始化按楼上方式调用(AnyChatCoreSDK.BRAC_FUNC_VIDEO_CBDATA)




欢迎光临 AnyChat技术支持论坛 (http://bbs.anychat.cn/) Powered by Discuz! X3