RM新时代网站

C++ 回放示例代碼-Playback

# 回放示例-Playback

 

功能描述:連接設備開(kāi)流 , 載入視頻文件進(jìn)行回放,并通過(guò)ESC_KEY鍵退出程序

> 本示例基于C++ High Level API進(jìn)行演示

 

首先需要創(chuàng )建一個(gè)用于回放文件的Pipeline

//創(chuàng )建用于回放的pipeline對象
ob::Pipeline pipe("./OrbbecPipeline.bag");

 

獲取回放對象的回放狀態(tài)回調

//獲取回放對象設置回放狀態(tài)回調
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;
    }
});

從回放文件中讀取設備信息與內參信息

//從回放文件中讀取設備信息
auto deviceInfo = playback->getDeviceInfo();
std::cout << "======================DeviceInfo: name : " << deviceInfo->name() << " sn: " << deviceInfo->serialNumber()
  << " firmware: " << deviceInfo->firmwareVersion() << " vid: " << deviceInfo->vid() << " pid: " << deviceInfo->pid() << std::endl;

//從回放文件中讀取內參信息
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;

開(kāi)啟回放

//開(kāi)啟回放
pipe.start(NULL);

 

以阻塞的方式等待一幀數據,該幀是一個(gè)復合幀,里面包含配置里啟用的所有流的幀數據,并設置幀的等待超時(shí)時(shí)間

auto frameSet = pipe.waitForFrames(100);    //設置等待時(shí)間為100ms

停止Pipeline,將不再產(chǎn)生幀數據

pipe.stop();

 

程序正常退出后會(huì )釋放資源

預期輸出:

image.png 


RM新时代网站