我正在尝试使用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.我不知道如何保存帧。我很感谢你的帮助。
答案 0 :(得分:1)
看看代码示例。过程:
现在,每当一个帧可用时,Decklink SDK将使用刚刚处理的帧调用已注册的回调函数。从上面的帖子中我感觉你没有掌握回调的概念。