我被要求实施一个将图像播放到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);
}
}
答案 0 :(得分:2)
我知道Decklink对格式非常挑剔......你必须配置输出,并确保显示与该输出格式兼容的内容。 1024 * 768不是PAL,NTSC,720p或任何HD格式兼容......