在实时音视频场景下,百家云 SDK 支持对房间内的视频流截图。相关函数接口在 c++-sdk 2.5.5 及以上版本支持。
通过过接口 snapshotVideo 对指定用户的指定流(主画面,还是屏幕分享)进行截图,截图画面来源,支持视频流(BRTCSnapshotSourceTypeStream)和视频渲染画面(BRTCSnapshotSourceTypeView),数据信息通过回调 onSnapshotComplete 返回图片数据。
BRTCCore::BRTCCore() { m_pBrtc = getBRTCShareInstance(); m_pBrtc->setCallback(this); } void BRTCCore::enterRoom() { BRTCParams params; params.appID = "klskd0sd8sdfooi7we"; params.roomID = "123456"; params.sign = "9sdw9sssq"; BRTCUser user; user.userId = "111111"; params.user = user; m_pBrtc->enterRoom(params); } void BRTCCore::snapshotVideo() { // 视频画面截图,保存在本地文件中 m_pBrtc->snapshotVideo(user.userId .c_str(), BRTCVideoStreamTypeBig, BRTCSnapshotSourceTypeView); }
截图完成时回调,返回截图画面的宽高和数据。截图数据仅支持格式 ARGB32 。
class BRTCCore : public BRTCCallback { public: // interface BRTCCallback void onEnterRoom(int result) override; void onSnapshotComplete(const char* uid, char* data, uint32_t length, uint32_t width, uint32_t height) override; void snapshotVideo() ; void enterRoom(); private: BRTC* m_pBrtc = nullptr; } void BRTCCore::onEnterRoom(int result) { LOG(INFO) << "onEnterRoom, result[" << result << "]"; m_pBrtc->startLocalPreview(view); m_pBrtc->muteLocalVideo(false); } void BRTCCore::onSnapshotComplete(const char* uid, char* data, uint32_t length, uint32_t width, uint32_t height) { if (data == nullptr || length == 0) { return; } std::string user_id = uid; if (user_id.empty()) { user_id = "local"; } // 图片保存到本地文件中 std::string file_name = user_id + std::to_string(snap_file_index_++) + ".bmp"; std::wstring path(L""); BrtcUtil::getAppDirectory(path); path += UTF82Wide(file_name); HBITMAP hbitmap = CreateBitmap(width, height, 1, 32, data); BrtcUtil::SaveBitmapToFile(hbitmap, Wide2UTF8(path)); if (hbitmap != nullptr) { DeleteObject(hbitmap); } }
视频截图
在实时音视频场景下,百家云 SDK 支持对房间内的视频流截图。
相关函数接口在 c++-sdk 2.5.5 及以上版本支持。
视频截图
通过过接口 snapshotVideo 对指定用户的指定流(主画面,还是屏幕分享)进行截图,截图画面来源,支持视频流(BRTCSnapshotSourceTypeStream)和视频渲染画面(BRTCSnapshotSourceTypeView),数据信息通过回调 onSnapshotComplete 返回图片数据。
截图回调接口实现
截图完成时回调,返回截图画面的宽高和数据。截图数据仅支持格式 ARGB32 。