游密Video SDK可以实现一对一、一对多、多对多的实时通话功能;在相同频道内的用户可自由发言和收看视频画面;适用于实时音视频通话、多人语音视频群聊等场景。
主要功能 | 功能描述 |
---|---|
登录房间 | 用户可以自由登录房间 |
自由语音视频互动 | 用户可以自由加入或退出语音视频互动 |
接口 | 含义 |
---|---|
setLogLevel |
设置日志级别 |
init |
引擎初始化 |
接口 | 含义 |
---|---|
setVideoPreviewFps |
设置本地预览帧率,设置本地预览帧率,建议设置为 20 |
setVideoLocalResolution |
设置本地采集分辨率,建议设置为 960 * 720 |
setVideoFps |
设置视频编码帧率(大流),建议设置为 10 - 15 |
setVideoNetResolution |
设置网络传输分辨率(大流),建议设置,建议设置 640 * 480 |
setVBR |
设置视频编码是否采用VBR动态码率(大流),建议设置为 true |
setVideoCodeBitrate |
设置视频编码码率,若不调用则采用默认设置(大流),建议设置为 600 - 160 |
setVideoFpsForSecond |
设置视频帧率(小流)),建议设置为 7 |
setVideoNetResolutionForSecond |
设置编码分辨率(小流),建议设置为 336 * 256 (16的整数被) |
setVBRForSecond |
设置视频编码是否采用VBR动态码率(小流),建议设置为true |
setVideoCodeBitrateForSecond |
设置视频编码码率,若不调用则采用默认设置(小流),200 - 100 |
setVideoFpsForShare |
设置共享流帧率,一般共享建议设置为 10帧 |
setVideoNetResolutionForShare |
设置共享流编码分辨率,建议为 720p - 1080p |
setMicLevelCallback |
设置是否开启讲话音量级别回调 |
setFarendVoiceLevelCallback |
设置是否开启远端说话人音量级别回调 |
setAVStatisticInterval |
设置音视频统计上报间隔 |
setAutoSendStatus |
设置状态同步(mic,speaker的状态会通知给接收端) |
joinChannelSingleMode |
加入房间 |
createRender |
创建渲染 |
getCameraCount |
获取摄像头个数 |
getCameraName |
获取摄像头名称 |
setOpenCameraId |
设置打开摄像头 |
接口 | 含义 |
---|---|
startCapture |
打开摄像头采集 |
stopCapture |
关闭摄像头采集 |
setMicrophoneMute |
设置麦克风状态 |
setSpeakerMute |
设置扬声器状态 |
switchCamera |
切换摄像头 |
接口 | 含义 |
---|---|
createRender |
创建渲染 |
deleteRender |
删除渲染 |
setUsersVideoInfo |
设置观看用户的哪一路流(大小流),autoRecv设置为false时,需要调用该接口后才会接收对方的视频流 |
maskVideoByUserId |
设置是否屏蔽他人视频,屏蔽对方的所有视频流,包括共享流,音频流保留 |
setListenOtherVoice |
设置是否听其他人语音 |
onMemberChange |
房间内其它用户加入/离开回调通知 |
YOUME_EVENT_OTHERS_VIDEO_INPUT_START |
onEvent 事件,远端开启摄像头,可用于显示摄像头状态 |
YOUME_EVENT_OTHERS_VIDEO_INPUT_STOP |
onEvent 事件,远端关闭摄像头,可用于显示摄像头状态 |
YOUME_EVENT_OTHERS_SHARE_INPUT_START |
onEvent 事件,远端开启共享流,可用于显示共享画面 |
YOUME_EVENT_OTHERS_SHARE_INPUT_STOP |
onEvent 事件,远端关闭共享流,可用于移除共享画面 |
接口 | 含义 |
---|---|
leaveChannelAll |
退出所有房间 |
接口 | 含义 |
---|---|
unInit |
反初始化引擎 |
初始化(init), 等待初始化成功的通知事件YOUME_EVENT_INIT_OK
房间参数设置(视频参数、共享参数、QOS统计间隔等),也可采用默认设置
加入房间(joinChannelSingleMode),等待加入成功的通知事件 YOUME_EVENT_JOIN_OK
选择并打开摄像头(startCapture),设置麦克风扬声器等设备(setMicrophoneMute,setSpeakerMute)
创建本端预览,同时接收到视频数据回调事件YOUME_EVENT_OTHERS_VIDEO_ON
,创建渲染(createRender)
其它接口(开关摄像头、开关mic/speaker,屏蔽他人语音/视频)
退出房间
Video引擎底层对于耗时操作都采用异步回调的方式,函数调用会立即返回,操作结果会同步回调。因此,用户必须实现相关接口并在初始化完成以后进行注册。
新建一个类继承IYouMeEventCallback
并实现其纯虚函数(回调函数)名称自定,例如YouMeEventCallback。
实现virtual void onEvent(const YouMeEvent event, const YouMeErrorCode error, const char * channel, const char * param) override;
处理各类回调事件。
//监听各类回调事件
void onEvent(const YouMeEvent event, const YouMeErrorCode error, const char * channel, const char * param)
{
switch (event)
{
//case案例只覆盖了部分,仅供参考,详情请查询枚举类型YouMeEvent
case YOUME_EVENT_INIT_OK:
//"初始化成功";
break;
case YOUME_EVENT_INIT_FAILED:
// "初始化失败,错误码:" + errorCode;
break;
case YOUME_EVENT_JOIN_OK:
//"加入频道成功";
break;
case YOUME_EVENT_LEAVED_ALL:
// "离开频道成功";
break;
case YOUME_EVENT_JOIN_FAILED:
//进入频道失败
break;
default:
//"事件类型" + eventType + ",错误码" +
break;
}
}
游密Video SDK可以实现直播功能,通过屏幕共享分享游戏画面,实时直播游戏全过程,介绍玩法、策略,展示真实操作,同时支持主播和玩家通过弹幕、聊天、活动等形式互动。
主要功能 | 功能描述 |
---|---|
登录房间 | 支持以不同身份如主播/观众登录房间,决定是否只能观看 |
语音视频 | 观众可以听到主播的语音,观看主播视频画面 |
变声 | 主播可以自由变音 |
播放战歌 | 主播端支持播放战歌,提升直播效果 |
屏幕共享 | 主播可以共享自己的画面 |
接口 | 含义 |
---|---|
setLogLevel |
设置日志级别 |
init |
引擎初始化 |
接口 | 含义 |
---|---|
setVideoPreviewFps |
设置本地预览帧率,设置本地预览帧率,建议设置为 20 |
setVideoLocalResolution |
设置本地采集分辨率,建议设置为 960 * 720 |
setVideoFps |
设置视频编码帧率(大流),建议设置为 10 - 15 |
setVideoNetResolution |
设置网络传输分辨率(大流),建议设置,建议设置 640 * 480 |
setVBR |
设置视频编码是否采用VBR动态码率(大流),建议设置为 true |
setVideoCodeBitrate |
设置视频编码码率,若不调用则采用默认设置(大流),建议设置为 600 - 160 |
setVideoFpsForSecond |
设置视频帧率(小流)),建议设置为 7 |
setVideoNetResolutionForSecond |
设置编码分辨率(小流),建议设置为 336 * 256 (16的整数被) |
setVBRForSecond |
设置视频编码是否采用VBR动态码率(小流),建议设置为true |
setVideoCodeBitrateForSecond |
设置视频编码码率,若不调用则采用默认设置(小流),200 - 100 |
setVideoFpsForShare |
设置共享流帧率,一般共享建议设置为 10帧 |
setVideoNetResolutionForShare |
设置共享流编码分辨率,建议为 720p - 1080p |
setMicLevelCallback |
设置是否开启讲话音量级别回调 |
setFarendVoiceLevelCallback |
设置是否开启远端说话人音量级别回调 |
setAVStatisticInterval |
设置音视频统计上报间隔 |
setAutoSendStatus |
设置状态同步(mic,speaker的状态会通知给接收端) |
joinChannelSingleMode |
加入房间 |
createRender |
创建渲染 |
getCameraCount |
获取摄像头个数 |
getCameraName |
获取摄像头名称 |
setOpenCameraId |
设置打开摄像头 |
接口 | 含义 |
---|---|
startCapture |
打开摄像头采集 |
stopCapture |
关闭摄像头采集 |
setMicrophoneMute |
设置麦克风状态 |
setSpeakerMute |
设置扬声器状态 |
switchCamera |
切换摄像头 |
屏幕共享功能必须实在进入房间之后才可以打开,但是屏幕共享的参数设置可以在进入房间之前设置;屏幕共享和摄像头是分离的,可以单独打开视频共享。
接口 | 含义 |
---|---|
GetWindowInfoList |
获取窗口列表 |
GetScreenInfoList |
获取屏幕列表 |
setShareExclusiveWnd |
排除指定窗口 |
enableShareBorder |
边框开关 |
StartShareStream |
开始共享 |
StopShareStream |
结束共享 |
接口 | 含义 |
---|---|
createRender |
创建渲染 |
deleteRender |
删除渲染 |
setUsersVideoInfo |
设置观看用户的哪一路流(大小流),autoRecv设置为false时,需要调用该接口后才会接收对方的视频流 |
maskVideoByUserId |
设置是否屏蔽他人视频,屏蔽对方的所有视频流,包括共享流,音频流保留 |
setListenOtherVoice |
设置是否听其他人语音 |
onMemberChange |
房间内其它用户加入/离开回调通知 |
YOUME_EVENT_OTHERS_VIDEO_INPUT_START |
onEvent 事件,远端开启摄像头,可用于显示摄像头状态 |
YOUME_EVENT_OTHERS_VIDEO_INPUT_STOP |
onEvent 事件,远端关闭摄像头,可用于显示摄像头状态 |
YOUME_EVENT_OTHERS_SHARE_INPUT_START |
onEvent 事件,远端开启共享流,可用于显示共享画面 |
YOUME_EVENT_OTHERS_SHARE_INPUT_STOP |
onEvent 事件,远端关闭共享流,可用于移除共享画面 |
接口 | 含义 |
---|---|
leaveChannelAll |
退出所有房间 |
接口 | 含义 |
---|---|
unInit |
反初始化引擎 |
init
引擎初始化。
setVideoLocalResolution
设置本地采集分辨率。
setVideoNetResolution
设置网络传输分辨率。
joinChannelSingleMode
加入房间。
createRender
创建渲染。
getCameraCount
获取摄像头个数。
getCameraName
获取摄像头名称。
setOpenCameraId
设置打开摄像头。
startCapture
开始摄像头采集。
setMicrophoneMute
设置麦克风状态。
setSpeakerMute
设置扬声器状态。
setHeadsetMonitorOn
设置监听。
setBackgroundMusicVolume
设置战歌播放音量。
playBackgroundMusic
播放战歌。
StartShareStream
打开共享。
StopShareStream
关闭共享。
以主播身份进入频道 初始化(init)->joinChannelSingleMode(参数三传主播身份YOUME_USER_HOST), 观众传的身份可以是听众 也可以是自由人(住进自由人进入频道 需要关闭麦克风)
主播打开摄像头,麦克风等设备
设置监听 setHeadsetMonitorOn(true,true)参数1表示是否监听麦克风 true表示监听,false表示不监听 ,参数2表示是否监听战歌,true表示监听,false表示不监听
setBackgroundMusicVolume(70)调节背景音量大小
playBackgroundMusic(string pFilePath, bool bRepeat) 播放本地的mp3音乐。 参数一 本地音乐路径, 参数二 是否重复播放 true重复,false不重复
打开共享StartShareStream
远端有视频流过来,会通知 YOUME_EVENT_OTHERS_VIDEO_ON
事件,此时调用createRender创建相关渲染。
结束共享StopShareStream
,关闭共享屏幕;
退出房间
游密支持服务器录制,将语音视频通话或共享画面进行实时录制保存,提供给更多的人在方便的时间观看或回溯。
设置开启服务端录制某频道某用户的视频流或者屏幕共享流,当客户端用户加入频道开启屏幕共享成功后,调用set_media_recod_param接口,设置某频道视频录或共享流录制。
https://api.youme.im/v2/im/set_media_recod_param?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
header
Content-Type: application/json
{
"RoomID":"123456",
"UserId":"youme_01",
"Mode":1,
"VoiceType":2
}
RoomID
: 游戏频道ID,字符串,必选字段
UserId
: 用户ID,字符串,可选字段(录制共享流情况下不需要传userid)
Mode
: 模式,整型,0:默认模式(相当于恢复录制),1:长时间录制模式,可选字段,UserId必须为空,长时间录制模式表示第一次开启录制
VoiceType
: 声音合流模式,整型,0:默认模式(声音与视频流合流),2:共享流模式(声音与共享流合流),可选字段。
{
"ActionStatus" : "OK",
"ErrorCode" : 0,
"ErrorInfo" : ""
}
注:
appkey:在游密通信云官网注册账号时默认生成的的appkey。
curtime:当前UTC时间戳,从1970年1月1日0点0分0秒开始到现在的秒数(string类型)。
checksum:sha1(appsecret + restapikey+curtime),三个参数拼接的字符串,进行sha1计算,转化成16进制字符(string,小写), 其中restapikey和appsecret可在游密后台进行查看。
设置关闭服务端录制某频道某用户的视频流或者屏幕共享流,当客户端用户关闭屏幕共享之前,调用del_media_recod_param接口,设置某频道视频录或共享流录制。
https://api.youme.im/v2/im/del_media_recod_param?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
header
Content-Type: application/json
{
"RoomID":"123456",
"UserId": "youme_01",
"Mode": 1
}
RoomID
: 游戏频道ID,字符串,必选字段。
UserId
: 用户ID,字符串,可选字段(录制共享流情况下不需要传userid)。
Mode
: 模式,整型,0:默认模式(相当于恢复录制),1:长时间录制模式,可选字段,UserId必须为空,长时间录制模式表示第一次开启录制。
{
"ActionStatus" : "OK",
"ErrorCode" : 0,
"ErrorInfo" : ""
}
录制结束后可以获取房间录制信息,并获取录制的id号,用于查看单个录制流的详细信息,可调用get_media_recod_infos接口。
https://api.youme.im/v2/im/get_media_recod_infos?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
header
Content-Type: application/json
{
"RoomIDs":["123456", "123457"]
}
RoomIDs
: 多个频道ID,字符串数组,必选字段。
{
"ActionStatus" : "OK",
"ErrorCode" : 0,
"ErrorInfo" : "",
"MediaRecord" : [
{
"AppID" : 214,
"BackgroundRecordStatus" : 2,
"EndTime" : 1599642533,
"RecordID" : 13,
"RecordStatus" : 4,
"RoomID" : "1234596",
"StartTime" : 1599642514
},
{
"AppID" : 214,
"BackgroundRecordStatus" : 2,
"EndTime" : 1599641917,
"RecordID" : 9,
"RecordStatus" : 2,
"RoomID" : "1234596",
"StartTime" : 1599641905
}
]
}
响应是否获取成功:
"RecordID": 会议录制的id号。
"AppID": 会议录制的app id。
"RoomID": 会议录制的房间id。
"RecordStatus": 会议录制的状态,1:录制中 2:录制结束 3:无效录制 4:录制发布。
"BackgroundRecordStatus": 服务器会议录制的状态,1:录制中 2:录制结束。
"StartTime": 会议录制开始时间。
"EndTime": 会议录制结束时间。
获取到"RecordID"即会议录制的id号后,可用于查看单个录制流的详细信息。调用get_media_recod_info接口,获取到视频文件。
https://api.youme.im/v2/im/get_media_recod_info?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
header
Content-Type: application/json
{
"RecordID": 9
}
RoomID
: 游戏频道ID,字符串,必选字段。
UserID
: 游戏用户ID,字符串,必选字段。
DstUrl
: 单路rtmp流目的url,字符串,必选字段。
{
"ActionStatus" : "OK",
"AppID" : 214,
"BackgroundRecordStatus" : 2,
"EndTime" : 1599641917,
"ErrorCode" : 0,
"ErrorInfo" : "",
"MediaFiles" : [
{
"EndTime" : 1599641915,
"FileDownloadUrl" : "http://test3download.youme.im/media_file/214_1234596_an947112_1599641805_1599641915_0.mp4",
"Format" : "mp4",
"StartTime" : 1599641805,
"StreamID" : 0,
"UserID" : "an947112"
},
{
"EndTime" : 1599641915,
"FileDownloadUrl" : "http://test3download.youme.im/media_file/214_1234596_an198617_1599641805_1599641915_0.mp4",
"Format" : "mp4",
"StartTime" : 1599641805,
"StreamID" : 0,
"UserID" : "an198617"
}
],
"RecordID" : 9,
"RecordStatus" : 2,
"RoomID" : "1234596",
"StartTime" : 1599641905,
"SubtitleFiles" : [
{
"EndTime" : 1599641915,
"FileDownloadUrl" : "http://test3download.youme.im/subtitle_file/1599641805.srt",
"Format" : "srt",
"StartTime" : 1599641805,
"UserIdMapDownloadUrl" : "http://test3download.youme.im/subtitle_file/1599641805.json"
}
]
}
响应是否获取成功:
"RecordID": 会议录制的id号。
"AppID": 会议录制的app id。
"RoomID": 会议录制的房间id。
"RecordStatus": 会议录制的状态,1:录制中 2:录制结束 3:无效录制 4:录制发布。
"BackgroundRecordStatus": 服务器会议录制的状态,1:录制中 2:录制结束。
"StartTime": 会议录制开始时间。
"EndTime": 会议录制结束时间。
"MediaFiles": 会议录制相关的媒体文件,如mp4。
"MediaFiles[].UserID": 媒体文件关联的user id。
"MediaFiles[].Format": 媒体文件关联的文件格式, mp4。
"MediaFiles[].StreamID": 媒体文件关联的流id, 0:默认 2:共享。
"MediaFiles[].FileDownloadUrl": 媒体文件关联的文件下载路径。
"MediaFiles[].StartTime": 媒体文件开始时间。
"MediaFiles[].StartTime": 媒体文件结束时间。
"SubtitleFiles": 会议录制相关的字幕文件,如srt。
"SubtitleFiles[].Format": 字幕文件格式,srt。
"SubtitleFiles[].FileDownloadUrl": 字幕文件下载路径。
"SubtitleFiles[].UserIdMapDownloadUrl": 字幕文件userid映射文件下载路径,json格式。
"SubtitleFiles[].StartTime": 字幕文件开始时间。
"SubtitleFiles[].EndTime": 字幕文件结束时间。
游密支持CDN旁路直播,实现将音视频流推送至第三方CDN平台,从而观众可以方便快捷地通过接入H5观看CDN直播。
开启音视频通讯特定频道特定人员的服务端RTMP旁路推流功能,建议主播在客户端加入直播频道成功后,调用set_single_rtmp_param
接口,设置某频道的某用户单路RTMP推流。
https://api.youme.im/v2/im/set_single_rtmp_param?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
header
Content-Type: application/json
{
"RoomID":"123456",
"UserID":"ym_jason",
"DstUrl":"rtmp://10.10.102.205:1935/hls/111"
}
RoomID
: 游戏频道ID,字符串,必选字段。
UserID
: 游戏用户ID,字符串,必选字段。
DstUrl
: 单路rtmp流目的url,字符串,必选字段。
{
"ActionStatus" : "OK",
"ErrorCode" : 0,
"ErrorInfo" : ""
}
注:
appkey:在游密通信云官网注册账号时默认生成的的appkey。
curtime:当前UTC时间戳,从1970年1月1日0点0分0秒开始到现在的秒数(string类型)。
checksum:sha1(appsecret + restapikey+curtime),三个参数拼接的字符串,进行sha1计算,转化成16进制字符(string,小写), 其中restapikey和appsecret可在游密后台进行查看。
当直播结束时,可以调用del_single_rtmp_param
接口,关闭某频道的某用户单路RTMP推流。
header
Content-Type: application/json
请求URL
https://api.youme.im/v2/im/del_single_rtmp_param?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
{
"RoomID":"123456",
"UserID":"ym_jason"
}
RoomID
: 游戏频道ID,字符串,必选字段。
UserID
: 游戏用户ID,字符串,必选字段。
{
"ActionStatus" : "OK",
"ErrorCode" : 0,
"ErrorInfo" : ""
}
请求URL
https://api.youme.im/v2/im/set_room_mix_rtmp_param?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
body
{
"RoomID":"123456",
"PrimaryUserID":"ym_jason",
"DstUrl":"rtmp://10.10.102.205:1935/hls/111",
"VideoWidth":240,
"VideoHeight":320
}
body为json格式,各个字段解释如下:
RoomID
: 游戏频道ID,字符串,必选字段。
PrimaryUserID
: 合流主用户ID,字符串,必选字段。
DstUrl
: 单路rtmp流目的url,字符串,必选字段。
VideoWidth
: 视频背景宽度,整数,可选字段, 默认240。
VideoHeight
: 视频背景高度,整数,可选字段, 默认320。
{
"ActionStatus" : "OK",
"ErrorCode" : 0,
"ErrorInfo" : ""
}
添加某游戏某频道某用户rtmp合流推流参数。
请求URL
https://api.youme.im/v2/im/add_room_mix_user?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
body
{
"RoomID":"123456",
"UserID":"ym_jason",
"VideoWidth":240,
"VideoHeight":320,
"X":0,
"Y":0,
"Z": 0
}
body为json格式,各个字段解释如下:
RoomID
: 游戏频道ID,字符串,必选字段。
UserID
: 用户ID,字符串,必选字段。
X
: 视频显示X坐标,整数,必选字段。
Y
: 视频显示Y坐标,整数,必选字段。
Z
: 视频显示层次,整数,必选字段。
VideoWidth
: 视频显示宽度,整数,必选字段。
VideoHeight
: 视频显示高度,整数,必选字段。
{
"ActionStatus" : "OK",
"ErrorCode" : 0,
"ErrorInfo" : ""
}
删除某游戏某频道某用户rtmp合流推流参数,若请求删除主用户合流参数,则整个频道合流参数被删除。
请求URL
https://api.youme.im/v2/im/del_room_mix_user?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
body
{
"RoomID":"123456",
"UserID":"ym_jason",
}
RoomID
: 游戏频道ID,字符串,必选字段。
UserID
: 用户ID,字符串,必选字段。
{
"ActionStatus" : "OK",
"ErrorCode" : 0,
"ErrorInfo" : ""
}
请求URL
https://api.youme.im/v2/im/del_room_mix_rtmp_param?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
body
{
"RoomID":"123456",
}
RoomID
: 游戏频道ID,字符串,必选字段。
{
"ActionStatus" : "OK",
"ErrorCode" : 0,
"ErrorInfo" : ""
}