Blackmagic Decklink显示静态图像

时间:2015-01-20 15:00:20

标签: c#

我被要求实施一个将图像播放到DeckLink卡的应用程序。

我写了下面的代码但是我发现我收到了错误。主要在Render Image Secton中。

有人能告诉我我做错了什么。

private void button1_Click(object sender, EventArgs e)
    {
        List<IDeckLink> deckLinks = new List<IDeckLink>();

        IDeckLink dl = null;

        IDeckLinkIterator d = new CDeckLinkIterator();

        while (true)
        {

            d.Next(out dl);

            if (dl == null)
                break;

            deckLinks.Add(dl);


        }


        RenderImage(deckLinks[0]);

    }

    private void RenderImage(IDeckLink decklink)
    {
        IDeckLinkOutput op = null;

        IDeckLinkMutableVideoFrame mvf;

        op.CreateVideoFrame(1024, 768, 1024 * 4, _BMDPixelFormat.bmdFormat8BitBGRA, _BMDFrameFlags.bmdFrameFlagFlipVertical, out mvf);

        DrawFlower(ref mvf);

        op.DisplayVideoFrameSync(mvf);


    }

    private void DrawFlower(ref IDeckLinkMutableVideoFrame mvf)
    {
        Bitmap bmp = Bitmap.FromFile("D:\\ss\\NI.png") as Bitmap;

        var deckLinkCompatableImage = ResizeImage(bmp, 1024, 768);


        ImageConverter converter = new ImageConverter();
        var imageBytes = (byte[])converter.ConvertTo(deckLinkCompatableImage, typeof(byte[]));

        IntPtr frameBytes; 
        mvf.GetBytes(out frameBytes);

        unsafe
        {

            byte* ptr = (byte*)frameBytes;

            Marshal.Copy(imageBytes, 0, frameBytes, imageBytes.Length);
        }

    }

1 个答案:

答案 0 :(得分:2)

我知道Decklink对格式非常挑剔......你必须配置输出,并确保显示与该输出格式兼容的内容。 1024 * 768不是PAL,NTSC,720p或任何HD格式兼容......