知道缓冲区指针,和大小 怎么读取其数据?

jjcl521 2010-08-01 01:45:21
其实是海康的DVR的一个录音功能


/// <summary>
/// 音频数据回调函数/语音数据回调函数
/// void(CALLBACK *fVoiceDataCallBack)(LONG lVoiceComHandle, char *pRecvDataBuffer, DWORD dwBufSize, BYTE byAudioFlag, DWORD dwUser)
/// 注意
/// 回调参数byAudioFlag=2, pRecvDataBuffer=NULL时,表示语音对讲收发线程退出
/// </summary>
/// <param name="lVoiceComHandle">NET_DVR_StartVoiceCom 的返回值</param>
/// <param name="pRecvDataBuffer">存放数据的缓冲区指针</param>
/// <param name="dwBufSize">缓冲区的大小,为80的整数倍</param>
/// <param name="byAudioFlag">数据类型:0-客户端采集的音频数据;1-设备端发送过来的音频数据</param>
/// <param name="dwUser">输入的用户数据</param>
public delegate void VoiceDataCallBack(int lVoiceComHandle, string pRecvDataBuffer, uint dwBufSize, byte byAudioFlag, uint dwUser);
private void fVoiceDataCallBack(int lVoiceComHandle, string pRecvDataBuffer, uint dwBufSize, byte byAudioFlag, uint dwUser)
{
//在这里面怎么读取缓冲区
}



...全文
296 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
showjancn 2010-08-01
  • 打赏
  • 举报
回复
public delegate void VoiceDataCallBack(int lVoiceComHandle, string pRecvDataBuffer, uint dwBufSize, byte byAudioFlag, uint dwUser);
private void fVoiceDataCallBack(int lVoiceComHandle, string pRecvDataBuffer, uint dwBufSize, byte byAudioFlag, uint dwUser)
{
//在这里面怎么读取缓冲区
}

可以尝试这样:
1:
public delegate void VoiceDataCallBack(int lVoiceComHandle, IntPtr pRecvDataBuffer, uint dwBufSize, byte byAudioFlag, uint dwUser);
private void fVoiceDataCallBack(int lVoiceComHandle, IntPtr pRecvDataBuffer, uint dwBufSize, byte byAudioFlag, uint dwUser)
{
//在这里面怎么读取缓冲区
Marshal.Copy()//从pRecvDataBuffer 读出数据。
}

2:string pRecvDataBuffer改成 byte[] pRecvDataBuffer应该也可以。

111,093

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧