繁体   English   中英

从Blackmagic设备获取框架

[英]Getting a frame from a Blackmagic device

我正在尝试使用Balckagic SDK。 而且我无法获得设备“ DeckLink SDI”的框架

void    get_video(IDeckLink* decklink){
HRESULT                         result;
IDeckLinkInput*                 decklinkinput = NULL;
BSTR                            name = NULL;
IDeckLinkDisplayModeIterator*   displayModeIterator = NULL;
IDeckLinkInputCallback*         theCallback = NULL; 
IDeckLinkVideoInputFrame*       decklinkInputVideoframe =NULL;
IDeckLinkDisplayMode*           displayMode = NULL;
IDeckLinkVideoInputFrame*       inputVideoFrame;
IDeckLinkAudioInputPacket*      inputAudioPacket;
IBMDStreamingDeviceInput*       capture;
IDeckLinkVideoFrame*            deckLinkVideoFrame = NULL;
unsigned long                       avaibleFrames = NULL;


result = decklink->QueryInterface(IID_IDeckLinkInput,(void**) &decklinkinput);


result = decklinkinput->GetDisplayModeIterator(&displayModeIterator); 

result = decklinkinput->SetCallback(theCallback);
result = decklinkinput->EnableVideoInput(BMDDisplayMode::bmdModeHD1080i50,BMDPixelFormat::bmdFormat8BitYUV,bmdVideoInputEnableFormatDetection);
result = decklinkinput->DisableAudioInput();

result = decklinkinput->StartStreams();
decklinkinput->GetAvailableVideoFrameCount(&avaibleFrames); 




cout<<"Number of avaible frames " << avaibleFrames<<endl;
result = decklinkinput->SetCallback(theCallback);
theCallback->VideoInputFrameArrived(inputVideoFrame, inputAudioPacket);
result = decklinkinput->StopStreams();


}

而且我没有语法错误,我得到的只是fram的数量为0。而且我不知道如何保存框架。 非常感谢您的帮助。

看一下代码示例。 过程:

  1. 初始化Decklink板
  2. 注册回调并开始流式传输
  3. 继续主线程上的其他工作

现在,每当有框架可用时,Decklink SDK就会使用刚处理的框架调用已注册的回调函数。 从上面的帖子中,我感觉到您不了解回调的概念。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM