设为首页收藏本站

AnyChat技术支持论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
查看: 1594|回复: 2

视频数据回调函数使用的问题

[复制链接]

21

主题

74

帖子

275

积分

中级会员

Rank: 3Rank: 3

积分
275
发表于 2015-12-16 11:54:30 | 显示全部楼层 |阅读模式
本帖最后由 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:03 | 显示全部楼层
您好,首先需要在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:48 | 显示全部楼层
本帖最后由 佰锐科技-李永星 于 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)
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|AnyChat ( 粤ICP备13022410号-1 )  

GMT+8, 2020-6-4 07:02 , Processed in 0.146014 second(s), 22 queries .

Powered by Discuz! X3

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表