C#调用网络摄像头API、C++代码“翻译”C#写的问题

.Net技术 码拜 9年前 (2016-02-23) 1836次浏览
首先说明本人的问题:本人现在要把一个网络摄像头的API使用方法、从C++的版本、需要重写一个C#的版本、但是在调用数据上卡在一个代码上、想让各路高手帮忙~
先贴一下问题代码图片:
1.C++ :一个数据回调方法、主要代码是在这里、本人不知道C#要怎么样获取到这个视频图像数据
C#调用网络摄像头API、C++代码“翻译”C#写的问题
2.C++:一个结构体、此结构体就是为了存储音频参数数据
C#调用网络摄像头API、C++代码“翻译”C#写的问题
1.本人的 C#:一个数据回调定义
C#调用网络摄像头API、C++代码“翻译”C#写的问题
3.本人的 C#:一个结构体、此结构体就是为了存储音频参数数据
C#调用网络摄像头API、C++代码“翻译”C#写的问题
2.本人的 C#:一个数据回调方法、开始仿照C++方式来“翻译”实现功能
C#调用网络摄像头API、C++代码“翻译”C#写的问题
好了、下面就是本人要描述的求帮助问题了、
C++ 写法:char *pVideo = pData + sizeof(AV_HEAD); 这样就可以获取到视频图像数据
本人的问题就是怎么用C#实现获取这个视频图像数据、然后实现视频播放
本人的想法是起码这个视频播放数据可以转成byte[]或是steam类的、本人的想法是这样、这样本人就可以转换成Image
还请各路高手帮帮忙、得到答案、100分送上~
解决方案

100

2种办法
1、用unsafe,直接操作指针
byte* pVideo = (byte*)pData + sizeof(AV_HEAD);
2、数据复制给byte[]
byte[] videoData = new byte[bVideo];
Marshal.Copy(pData + sizeof(AV_HEAD), videoData, 0, bVideo);
bVideo本人估计是数据的长度,假如不对本人更正
假如你用的.net版本是4以下,IntPtr是不能直接和int做加法的,需要先转int再转回来:new IntPtr((int)pData + sizeof(AV_HEAD))

CodeBye 版权所有丨如未注明 , 均为原创丨本网站采用BY-NC-SA协议进行授权 , 转载请注明C#调用网络摄像头API、C++代码“翻译”C#写的问题
喜欢 (0)
[1034331897@qq.com]
分享 (0)