关于宇视网络摄像头SDK解码问题

请问哪位大佬使用 宇视 网络摄像头SDK开发的?小弟目前使用C#语言进行YUV解码完全迷糊了,
对这方面的技术一点都不了解,请有经验的大佬们能够提供代码,并取得每帧的byte[]或bitmap。

DEMO如下:

[StructLayout(LayoutKind.Sequential)]
public struct NETDEV_PICTURE_DATA_S
{
    /// <summary>
    /// <para>pucData[0]:Y 平面指针</para>
    /// <para>pucData[1]:U 平面指针</para>
    /// <para>pucData[2]:V 平面指针</para>
    /// </summary>
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
    public byte[] pucData;               

    /// <summary>
    /// <para>ulLineSize[0]:Y平面每行跨距</para>
    /// <para>ulLineSize[1]:U平面每行跨距</para>
    /// <para>ulLineSize[2]:V平面每行跨距</para>
    /// </summary>
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 4)]
    public Int32[] dwLineSize;             

    /// <summary>
    /// 图片高度
    /// </summary>
    public Int32 dwPicHeight;               

    /// <summary>
    /// 图片宽度
    /// </summary>
    public Int32 dwPicWidth;              

    /// <summary>
    /// 用于渲染的时间数据类型
    /// </summary>
    public Int32 dwRenderTimeType;        

    /// <summary>
    /// 用于渲染的时间数据
    /// </summary>
    public Int64 tRenderTime;         
};

    /// <summary>
    /// 码流数据回调函数
    /// <para>1.用户应及时处理输出的视频流数据,确保函数尽快返回,否则会影响播放器内的媒体流处理.</para>
    /// <para>2.视频数据是yv12格式.排列顺序“Y0-Y1-......”,“U0-U1-......”,“V0-V1-......”</para>
    /// </summary>
    /// <param name="lpRealHandle">当前的实况播放句柄</param>
    /// <param name="pstPictureData">存放解码后视频流数据信息缓冲区指针</param>
    /// <param name="lpUserParam">用户设置参数,即用户在调用#NDPlayer_SetDecodeVideoDataCB函数时指定的用户参数</param>
    private void DecodeVideoDataCallBack(IntPtr lpRealHandle, ref NETDEV_PICTURE_DATA_S pstPictureData, IntPtr lpUserParam)
            {
                 //请大佬补充此处解码后返回的byte[]或bitmap图像数据
            }

https://download.csdn.net/download/u013129773/6704559

H.264的编码格式有很多种,YUV数据中,Y通道是亮度信号,如果需要显示为灰度BMP图片,可以设置RGB三色等于Y值即可。
如果需要显示为彩色BMP图片格式,需要进行YUV2RBG转换。