将H264帧解码为位图

问题描述 投票:0回答:1

我正在接收H264编码的帧,但是当我将其转换为位图时,我只会得到黑屏。分辨率是正确的。我尝试了很多事情,却找不到可行的方法。谢谢!这是我的代码

        public System.Drawing.Bitmap CopyDataToBitmap(byte[] data)
        {
            //Here create the Bitmap to the know height, width and format
            System.Drawing.Bitmap bmp = new System.Drawing.Bitmap((int)2592, (int)1936, System.Drawing.Imaging.PixelFormat.Format24bppRgb);

            //Create a BitmapData and Lock all pixels to be written 
            System.Drawing.Imaging.BitmapData bmpData = bmp.LockBits(
                                 new System.Drawing.Rectangle(0, 0, bmp.Width, bmp.Height),
                                 System.Drawing.Imaging.ImageLockMode.WriteOnly, bmp.PixelFormat);


            //Copy the data from the byte array into BitmapData.Scan0
            Marshal.Copy(data, 0, bmpData.Scan0, data.Length);


            //Unlock the pixels
            bmp.UnlockBits(bmpData);


            //Return the bitmap 
            return bmp;
        }
        public async void ListenVideo()
        {

            byte[] data = new byte[1024];
            IPEndPoint ipep = new IPEndPoint(IPAddress.Any, 11111);
            UdpClient newsock = new UdpClient(ipep);
            IPEndPoint sender = new IPEndPoint(IPAddress.Any, 11111);
            data = newsock.Receive(ref sender);
            string message = Encoding.UTF8.GetString(data, 0, data.Length);
            while (true)
            {

                data = newsock.Receive(ref sender);
                message = Encoding.UTF8.GetString(data, 0, data.Length);
                MemoryStream stream = new MemoryStream(data);
                panel1.BackgroundImage = CopyDataToBitmap(data);

                await Task.Delay(2000);

            }
        }
c# .net bitmap h.264
1个回答
0
投票

H.264是针对基本视频流的编码,不是针对单独图像的编码。

这意味着解码过程涉及视频编码的设置。没有单个功能(至少不应该这样工作)获取比特流并输出视频帧。

通常,您将设置流解码上下文,然后在准备好时输入输入并提取输出。

Windows附带有一个备用H.264编码器,并且使用此类解码服务的典型API是Media Foundation。它不是.NET的API,因此Media Foundation with C#

也有Media Foundation .NET项目带有本机Media Foundation API上的C#包装器。

© www.soinside.com 2019 - 2024. All rights reserved.