互动模块

头文件

VHPaasRoomImpl.h

类名

VHPaasRoomImpl

方法

- 初始化话接口必须在main函数中调用

virtual void InitSDK();

- 注册互动SDK事件监听回调接口

virtual bool RegisterVHRoomMonitor(VHRoomMonitor* monitor);

- 登录互动业务服务器

    /*
    /* 登录互动业务服务器.登录成功之后即可加入“互动媒体房间”
    */
    virtual bool LoginHVRoom(const std::string& accesstoken, const std::string& appid, const std::string& thrid_user_id, const std::string& roomid);

- 登出互动服务处理

    /*
    *  登出互动服务处理
    */
    virtual void LogoutHVRoom() ;

- 进入互动媒体房间

    /*
    * 进入互动媒体房间
    */
    virtual void JoinVHMediaRoom();

- 退出互动媒体房间

    /*
    * 退出互动媒体房间
    */
    virtual bool LeaveVHMediaRoom();

- 用户权限

	/*
    *  获取当前用户权限
    */
    virtual Permission GetPermission();
permission
/*
 * 进入互动房间后可用权限
 * 注: didEnterRoom 后调用有效 具体权限如下:
 kick_inav              踢出互动房间 / 取消踢出互动房间
 kick_inav_stream       踢出路流 / 取消踢出流
 publish_inav_another   推旁路直播 / 结束推旁路直播
 apply_inav_publish     申请上麦
 publish_inav_stream    推流
 askfor_inav_publish    邀请用户上麦推流
 audit_inav_publish     审核申请上麦
 */

- 请求SDK互动房间人员列表

    /*
    * SDK互动房间人员列表
    */
    virtual void AsynGetVHRoomMembers();

- 获取被踢出互动房间人列表

    /*
    * 获取被踢出互动房间人列表
    */
    virtual void GetKickInavList();

- 申请上麦

    /*
    * 申请上麦
    */
    virtual int ApplyInavPublish();

- 审核申请上麦

    /**
    * 审核申请上麦
    * audit_user_id: 受审核人第三放用户ID
    * type: 是否同意 AuditPublish
    * 返回值:VhallLiveErrCode
    **/
    virtual int AuditInavPublish(const std::string& audit_user_id, AuditPublish type);

- 邀请上麦

/**
    * 邀请上麦
    * audit_user_id: 受审核人第三方用户ID
    **/
    virtual int AskforInavPublish(const std::string& audit_user_id);

- 回应邀请

    /**
    * 上/下/拒绝上麦状态回执,用户成功推流后调用服务端API
    * stream_id: 操作的流ID
    * type	int	否	1 上麦(默认) 2 下麦 3 拒绝上麦
    */
    virtual void UserPublishCallback(PushStreamEvent type, const std::string& stream_id = std::string());

- 踢出流/取消踢出流

    /**
    * 踢出流/取消踢出流  实际作用于AccessToken,踢出流相当于下麦
    * type	int	否	1 踢出流(默认) 2 取消踢出流
    * kick_user_id	string	是	被踢出的第三方用户ID
    **/
    virtual int KickInavStream(const std::string& kick_user_id, KickStream type);

- 踢出互动房间/取消踢出互动房间

    /**
    *  踢出互动房间/取消踢出互动房间  作用于进入房间
    *   type	int	否	1 踢出互动房间(默认) 2 取消踢出互动房间
    *   kick_user_id	string	是	被踢出的第三方用户ID
    * 返回值:VhallLiveErrCode
    **/
    virtual int KickInav(const std::string& kick_user_id, KickStream type);

- 开启旁路直播

    /*
    *   开启旁路直播
    *   live_room_id: 直播房间id
    *   width: 混流端布局的宽
    *   height: 混流端布局的高
    *   fps:帧率
    *   bitrate: 码率
    *   stream_id: 大画面流id
    */
    virtual int StartPublishInavAnother(std::string live_room_id, LayoutMode layoutMode, std::string stream_id = std::string() , BROAD_CAST_DPI dip = BROAD_CAST_DPI_UHD, FRAME_FPS fps = FRAME_FPS_20, BITRATE bitrate = BITRATE_1000);

- 停止旁路直播

    /*
    *   停止旁路直播
    *   live_room_id: 直播房间id
    */
    virtual int StopPublishInavAnother(std::string live_room_id);

- 设置观看端大屏展示的流

    /**
    *  当开启旁路直播之后,可以将某个用户的流设置在混流画面的主画面当中
    **/
    virtual int SetMainView(std::string stream_id);

- 判断当前媒体房间连接状态

    virtual bool IsVHMediaConnected();

-

    /*  开始摄像头\麦克风采集
    *   回调检测 OnStartLocalCapture OnCameraCaptureErr  OnLocalMicOpenErr
    */
    virtual int StartLocalCapture(VideoProfileIndex index);

- 判断所选设备是否支持所选分辨率

    /**
    * 判断所选设备是否支持所选分辨率
    *
    **/
    virtual bool IsSupported(const std::string& devGuid, VideoProfileIndex index);

- 判断给定设备是否支持给定分辨率

/*
*  判断给定设备是否支持给定分辨率
* dev 给定设备
* iProfileIndex 分辨率索引
*/
	virtual bool IsSupported(std::shared_ptr<vhall::VideoDevProperty>& dev, int iProfileIndex);

- 停止摄像头、麦克风采集

    /*停止摄像头\麦克风采集*/
    virtual void StopLocalCapture();

- 开始摄像头数据推流

    /*开始摄像头数据推流  回调检测:OnStartPushLocalStream*/
    virtual int StartPushLocalStream();

- 停止摄像头数据推流

    /*停止摄像头数据推流 回调检测:OnStopPushLocalStream*/
    virtual int StopPushLocalStream();

- 判断当前采集类型是否正在推流

    /**
    *   当前采集类型是否正在推流
    */
    virtual bool IsPushingStream(VHStreamType streamType);

- 获取流ID

    /**
    *   获取流ID
    */
    virtual std::string GetUserStreamID(const std::wstring user_id, VHStreamType streamType);

- 判断是否正在数据采集

    /*
    *   当前采集类型是否正在进行本地数据源采集
    */
    virtual bool IsCapturingStream(VHStreamType streamType);

- 判断当前互动房间是否存在桌面共享视频流

    /**
    *   当前互动房间是否存在桌面共享视频流
    */
    virtual bool IsUserPushingDesktopStream();

- 判断当前互动房间是否存在插播视频流

    /**
    *   当前互动房间是否存在插播视频流
    */
    virtual bool IsUserPushingMediaFileStream();

- 设置桌面共享最大推流宽高


    /**
    *   设置桌面共享最大推流宽高。
    *   如果不调用此接口,默认最大推流按照1280 * 720 分辨率推流,超过设置长宽则进行自动按照最大值进行裁剪,小于设置最大值时,按照实际大小推流
    **/
    virtual void SetDesktopPushStreamParam(int width, int height, int fps = 20, int bitRate = 600);

- 开始桌面共享采集

    /*开始桌面共享采集  回调检测:OnStartDesktopCaptureSuc OnStartDesktopCaptureErr*/
    virtual int StartDesktopCapture(int index, int width, int height) ;

- 停止桌面共享采集

    /*停止桌面共享采集*/
    virtual void StopDesktopCapture() ;

- 开始桌面共享采集推流

    /*开始桌面共享采集推流 回调检测:OnStartPushDesktopStream*/
    virtual int StartPushDesktopStream() ;

- 停止桌面共享采集推流

    /*停止桌面共享采集推流 回调检测:OnStopPushDesktopStream*/
    virtual int StopPushDesktopStream() ;

- 设置插播文件最大推流宽高

    /**
    *   设置插播文件最大推流宽高。
    *   如果不调用此接口,默认最大推流按照960 * 540 分辨率推流,超过设置长宽则进行自动按照最大值进行裁剪,小于设置最大值时,按照实际大小推流
    **/
    virtual void SetMediaFilePushStreamParam(int width, int height, int fps = 20, int bitRate = 600);

- 开始插播文件

    /*开始插播文件*/
    virtual int StartPlayMediaFile(std::string filePath) ;

- 开始渲染媒体数据流

	/**开始渲染媒体数据流*/
	virtual bool StartRenderStream(const std::wstring& user, void*  wnd, vlive::VHStreamType  streamType);

- 插播文件格式判断

    /*
    *   接口说明:查看当前播放的文件是否支持音频或视频格式,用于判断当前播放的是音频文件还是视频文件
    *   接口参数:
    type:音频、视频
    *   返回值:true 支持/ false 不支持
    */
    virtual bool IsSupportMediaFormat(CaptureStreamAVType type);

- 停止插播文件

    /*停止插播文件*/
    virtual void StopMediaFileCapture();

- 开始插播文件推流

    /*开始插播文件推流  回调检测:OnStartPushMediaFileStream*/
    virtual int StartPushMediaFileStream() ;

- 停止插播文件推流

    /*停止插播文件推流 回调检测:OnStopPushMediaFileStream*/
    virtual void StopPushMediaFileStream() ;

- 插播文件暂停处理

    //插播文件暂停处理
    virtual void MediaFilePause() ;

- 插播文件恢复处理

    //插播文件恢复处理 暂听后恢复播放
    virtual void MediaFileResume() ;

- 插播文件快进处理

    //插播文件快进处理,快进到某个点
    virtual void MediaFileSeek(const unsigned long long& seekTimeInMs) ;

- 插播文件总时长

    //插播文件总时长
    virtual const long long MediaFileGetMaxDuration() ;

- 插播文件当前播放的时间点

    //插播文件当前时长
    virtual const long long MediaFileGetCurrentDuration();

- 插播文件的当前状态

    //插播文件的当前状态 
    //返回值:播放状态  MEDIA_FILE_PLAY_STATE
    virtual int MediaGetPlayerState();
MEDIA_FILE_PLAY_STATE
/*
 * 插播文件的当前状态
        PLAY_STATE_NothingSpecial = 0,
        PLAY_STATE_Opening,               //正在打开文件
        PLAY_STATE_Buffering,             //正在加载文件
        PLAY_STATE_Playing,               //正在播放中
        PLAY_STATE_Paused,                //已暂停
        PLAY_STATE_Stopped,               //已停止
        PLAY_STATE_Ended,                 //播放完毕
        PLAY_STATE_Error                  //播放失败
 */

- 获取当前系统摄像头列表

    /**获取摄像头列表**/
    virtual void GetCameraDevices(std::list<vhall::VideoDevProperty> &cameras);

- 获取当前系统麦克风列表

    /**获取麦克风列表**/
    virtual void GetMicDevices(std::list<vhall::AudioDevProperty> &micDevList) ;

- 获取当前系统扬声器列表

    /**获取扬声器列表**/
    virtual void GetPlayerDevices(std::list<vhall::AudioDevProperty> &playerDevList);

- 设置采集音频使用的麦克风

    /*
    *  设置使用的麦克风
    *  index: GetMicDevices获取的列表中 vhall::VideoDevProperty中的 devIndex
    */
    virtual void SetUseMicIndex(int index);

- 设置采集视频使用的摄像头

    /*
    *  设置使用的摄像头
    *  index: GetCameraDevices获取的列表中 vhall::VideoDevProperty中的 guid
    */
    virtual void SetUseCameraGuid(std::string guid);

- 设置播放声音的扬声器

    /*
    *  设置使用的扬声器
    *  index: GetPlayerDevices获取的列表中 VhallLiveDeviceInfo中的 devIndex
    */
    virtual void SetUserPlayIndex(int index) ;

- 设置当前使用的麦克风音量

    /**设置当前使用的麦克风音量**/
    virtual bool SetCurrentMicVol(int vol);

- 当前使用的麦克风音量

    /**获取当前使用的麦克风音量**/
    virtual int GetCurrentMicVol();

- 设置扬声器音量

    /**设置当前使用的扬声器音量**/
    virtual bool SetCurrentPlayVol(int vol);

- 当前使用的扬声器音量

    /**获取当前使用的扬声器音量**/
    virtual int GetCurrentPlayVol();

- 本地摄像头打开状态

	virtual bool IsCameraOpen();

- 打开摄像头

    //打开摄像头
    virtual bool OpenCamera();

- 关闭摄像头

    //关闭摄像头
    virtual bool CloseCamera();

- 本地麦克风打开状态

	//本地麦克风开关状态
	virtual bool IsMicOpen();

- 打开麦克风

    /*
    *   打开麦克风
    */
    virtual bool OpenMic();

- 关闭麦克风

    virtual bool CloseMic();

- 打开、关闭远端用户本地视频

    /*
    *   打开、关闭远端用户本地视频
    */
    virtual int OperateRemoteUserVideo(std::wstring user_id, bool close = false) ;
	```
#### - 打开、关闭远端用户本地声音
/*
*   打开、关闭远端用户本地声音
*/
virtual int OperateRemoteUserAudio(std::wstring user_id, bool close = false) ;