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

请问哪位大佬使用 宇视 网络摄像头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图像数据
            }

2个回答

otoumingse
透明色 你好。能否提供关键点代码呢?我下载DEMO后并未找到YUV解码部分的代码
大约 2 年之前 回复

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

Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问