如何使用Black Magic Design DecklinkAPI.dll显示/预览输入视频?我可以逐帧获取视频,但我不知道如何在窗体/窗口中显示帧。我可以实现IDeckLinkInputCallback:
void IDeckLinkInputCallback.VideoInputFrameArrived(IDeckLinkVideoInputFrame video,
IDeckLinkAudioInputPacket audio)
{
IntPtr pData;
video.GetBytes(out pData);
// What should I do to get the preview?
System.Runtime.InteropServices.Marshal.ReleaseComObject(video);
}
我看到的另一种方法是实现IDeckLinkScreenPreviewCallback:
void IDeckLinkScreenPreviewCallback.DrawFrame(IDeckLinkVideoFrame theFrame)
{
// Constructor: m_ph = new CDeckLinkDX9ScreenPreviewHelper();
m_ph.SetFrame(theFrame);
// Should I use this method instead to get the preview?
System.Runtime.InteropServices.Marshal.ReleaseComObject(theFrame);
}
有更完整的代码示例,但它们仍然缺少重要的代码: blackmagic SDK in c#。 可以找到BMD Decklink SDK文档here。
感谢。
答案 0 :(得分:2)
如果您使用DeckLink SDK捕获视频,那么您有责任将帧转换为格式,这可以由演示API(GDI,GDI +,DirectShow,Media Foundation等)使用 - 由于您的某些努力,通常以非RGB像素格式捕获,并且可能以非标准步幅捕获。
或者,您可以使用DeckLink DirectShow视频捕获源捕获视频,并将其作为与DirectShow API兼容的Feed提供。您可以使用标准组件预览和处理视频。您可以通过DirectShow.NET library在C#中构建和控制DirectShow图。