# 回放示例-Playback
功能描述:連接設(shè)備開流 , 載入視頻文件進(jìn)行回放,并通過ESC_KEY鍵退出程序
> 本示例基于C++ High Level API進(jìn)行演示
首先需要?jiǎng)?chuàng)建一個(gè)用于回放文件的Pipeline
//創(chuàng)建用于回放的pipeline對(duì)象
ob::Pipeline pipe("./OrbbecPipeline.bag");
獲取回放對(duì)象的回放狀態(tài)回調(diào)
//獲取回放對(duì)象設(shè)置回放狀態(tài)回調(diào)
auto playback = pipe.getPlayback();
playback->setPlaybackStateCallback([&](OBMediaState state) {
if(state == OB_MEDIA_BEGIN) {
std::cout << "Playback file begin." << std::endl;
}
else if(state == OB_MEDIA_END) {
std::cout << "Playback file end." << std::endl;
}
});
從回放文件中讀取設(shè)備信息與內(nèi)參信息
//從回放文件中讀取設(shè)備信息
auto deviceInfo = playback->getDeviceInfo();
std::cout << "======================DeviceInfo: name : " << deviceInfo->name() << " sn: " << deviceInfo->serialNumber()
<< " firmware: " << deviceInfo->firmwareVersion() << " vid: " << deviceInfo->vid() << " pid: " << deviceInfo->pid() << std::endl;
//從回放文件中讀取內(nèi)參信息
auto cameraParam = pipe.getCameraParam();
std::cout << "======================Camera params : rgb width:" << cameraParam.rgbIntrinsic.width << " rgb height: " << cameraParam.rgbIntrinsic.height
<< " depth width: " << cameraParam.depthIntrinsic.width << " depth height: " << cameraParam.rgbIntrinsic.height << std::endl;
開啟回放
//開啟回放
pipe.start(NULL);
以阻塞的方式等待一幀數(shù)據(jù),該幀是一個(gè)復(fù)合幀,里面包含配置里啟用的所有流的幀數(shù)據(jù),并設(shè)置幀的等待超時(shí)時(shí)間
auto frameSet = pipe.waitForFrames(100); //設(shè)置等待時(shí)間為100ms
停止Pipeline,將不再產(chǎn)生幀數(shù)據(jù)
pipe.stop();
程序正常退出后會(huì)釋放資源
預(yù)期輸出: