Video 场景方案

实时音视频通话

场景概览

游密Video SDK可以实现一对一、一对多、多对多的实时通话功能;在相同频道内的用户可自由发言和收看视频画面;适用于实时音视频通话、多人语音视频群聊等场景。

功能列表

主要功能 功能描述
登录房间 用户可以自由登录房间
自由语音视频互动 用户可以自由加入或退出语音视频互动

快速开始

开发环境要求

  • Xcode 5.0 或以上版本。
  • 两台iOS 7.0 或以上版本且支持音频的 iOS 设备或模拟器(推荐使用真机),用于模拟两个用户进行语音通话。
  • iOS 设备已经连接到 Internet。

开发环境集成

  1. Talk SDK中有两个子文件夹:include、lib。

    • include:SDK的头文件,包括:
      YMVoiceService.h封装了语音SDK的全部功能接口,集成方可通过[YMVoiceService getInstance]直接调用。
      VoiceEngineCallback.h包含需要实现的语音SDK的回调接口协议。
      YouMeConstDefine.h包含错误码定义等各类枚举类型定义。
    • lib:iOS库文件,包含libyoume_voice_engine.a文件和libYouMeCommon.a文件。
  2. 将SDK放置到xcode工程目录下(开发者也可根据实际路径填写),如下图所示 alt

  3. 添加库文件路径:Build Settings -> Search Paths -> Library Search Paths,直接将SDK的ios文件夹拖到xcode需要填入的位置,然后自动生成路径。

  4. 添加依赖库:在Build Phases -> Link Binary With Libraries下添加:
    libc++.tbd
    libsqlite3.0.tbd
    libyoume_voice_engine.a
    libYouMeCommon.a
    libz.dylib
    libz.1.2.5.tbd
    libresolv.9.tbd
    SystemConfiguration.framework
    CoreTelephony.framework
    AVFoundation.framework
    AudioToolBox.framework
    CFNetwork.framework

  5. 为iOS10以上版本添加录音权限配置:iOS10系统使用录音权限,需要在target的info.plist中新加NSMicrophoneUsageDescription键,值为字符串(授权弹窗出现时提示给用户)。首次录音时会向用户申请权限。配置方式如下: alt

实现视频通话(内部采集、内部渲染)

相关接口

API的调用可使用“[YMVoiceService getInstance]”来直接操作,接口使用的基本流程为初始化->收到初始化成功回调通知->加入房间->收到加入房间成功回调通知->使用其它接口->离开房间->反初始化,要确保严格按照上述的顺序使用接口。

初始化相关接口

接口 含义
[YMVoiceService getInstance] setLogLevelforConsole 设置日志级别
[YMVoiceService getInstance] initSDK 引擎初始化

加入房间相关接口

接口 含义
[YMVoiceService getInstance] setVideoFps 设置视频采集帧率
[YMVoiceService getInstance] setVideoNetResolutionWidth 设置本地采集分辨率
[YMVoiceService getInstance] setVBR 设置视频编码是否采用VBR动态码率(大流)
[YMVoiceService getInstance] setVideoCodeBitrate 设置视频编码码率
[YMVoiceService getInstance] setVideoFpsForSecond 设置视频帧率(小流)
[YMVoiceService getInstance] setVideoNetResolutionWidthForSecond 设置编码分辨率(小流)
[YMVoiceService getInstance] setVBRForSecond 设置视频编码是否采用VBR动态码率(小流)
[YMVoiceService getInstance] setVideoCodeBitrateForSecond 设置视频编码码率(小流)
[YMVoiceService getInstance] setVideoFpsForShare 设置共享流帧率
[YMVoiceService getInstance] setVideoNetResolutionWidthForShare 设置共享流编码分辨率
[YMVoiceService getInstance] setMicLevelCallback 设置是否开启讲话音量级别回调
[YMVoiceService getInstance] setFarendVoiceLevelCallback 设置是否开启远端说话人音量级别回调
[YMVoiceService getInstance] setAVStatisticInterval 设置音视频统计上报间隔,建议为5秒
[YMVoiceService getInstance] setAutoSendStatus 设置状态同步(mic,speaker)
[YMVoiceService getInstance] joinChannelSingleMode 加入房间,建议 role建议设置为1,autoRecv设置为false

本地设备控制接口

接口 含义
收到 YOUME_EVENT_JOIN_OK 事件后可设置
[YMVoiceService getInstance] startCapture 打开摄像头采集
[YMVoiceService getInstance] stopCapture 关闭摄像头采集
[YMVoiceService getInstance] switchCamera 切换摄像头
[YMVoiceService getInstance] createRender 创建本端预览
[YMVoiceService getInstance] setMicrophoneMute 设置麦克风状态
[YMVoiceService getInstance] setSpeakerMute 设置扬声器状态

接收远端音视频

接口 含义
[YMVoiceService getInstance] createRender 创建渲染
[YMVoiceService getInstance] deleteRender 删除渲染
[YMVoiceService getInstance] setUsersVideoInfo 设置观看用户的哪一路流(大小流),autoRecv设置为false时,需要调用该接口后才会接收对方的视频流
[YMVoiceService getInstance] maskVideoByUserId 设置是否屏蔽他人视频,屏蔽对方的所有视频流,包括共享流,音频流保留
[YMVoiceService getInstance] setListenOtherVoice 设置是否听其他人语音
onMemberChange 房间内其它用户加入/离开回调通知

离开房间

接口 含义
[YMVoiceService getInstance] leaveChannelAll 退出所有房间

反初始化

接口 含义
[YMVoiceService getInstance] unInit 反初始化引擎

关键调用顺序

  1. 初始化(init), 等待初始化成功的通知事件YOUME_EVENT_INIT_OK

  2. 房间参数设置(视频参数、共享参数、QOS统计间隔等)

  3. [YMVoiceService getInstance] joinChannelSingleMode YOUME_EVENT_JOIN_OK

  4. 打开摄像头([YMVoiceService getInstance] startCapture),设置麦克风扬声器([YMVoiceService getInstance] setMicrophoneMute[YMVoiceService getInstance] setSpeakerMute

  5. 创建本端预览,同时接收到视频数据回调事件 YOUME_EVENT_OTHERS_VIDEO_ON,创建远端视频渲染([YMVoiceService getInstance] createRender

  6. 其它接口(开关摄像头、开关mic/speaker,屏蔽他人语音/视频)

  7. 退出房间

  8. 反初始化

实现回调

使用者要遵守协议 VoiceEngineCallback 并实现相关函数(回调函数)。回调都在子线程中执行,不能用于更新UI等耗时操作。

  • 具体实现回调方法:
   -(void) onYouMeEvent:(YouMeEvent_t)eventType errcode:(YouMeErrorCode_t)iErrorCode roomid:(NSString *)roomid param:(NSString *)param {
    switch (eventType)
    {
            //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;
        case YOUME_EVENT_REC_PERMISSION_STATUS:
            // "通知录音权限状态,成功获取权限时错误码为YOUME_SUCCESS,获取失败为YOUME_ERROR_REC_NO_PERMISSION(此时不管麦克风mute状态如何,都没有声音输出)";
            break;
        case YOUME_EVENT_RECONNECTING:
            //"断网了,正在重连";
            break;
        case YOUME_EVENT_RECONNECTED:
            // "断网重连成功";
            break;
        case  YOUME_EVENT_OTHERS_MIC_OFF:
            //其他用户的麦克风关闭:
            break;
        case YOUME_EVENT_OTHERS_MIC_ON:
            //其他用户的麦克风打开:
            break;
        case YOUME_EVENT_OTHERS_SPEAKER_ON:
            //其他用户的扬声器打开:
            break;
        case YOUME_EVENT_OTHERS_SPEAKER_OFF:
            //其他用户的扬声器关闭
            break;
        case YOUME_EVENT_OTHERS_VOICE_ON:
            //其他用户开始讲话
            break;
        case YOUME_EVENT_OTHERS_VOICE_OFF:
            //其他用户停止讲话
            break;
        case YOUME_EVENT_MY_MIC_LEVEL:
            //麦克风的语音级别,值把iErrorCode转为整形即是音量值
            break;
        case YOUME_EVENT_MIC_CTR_ON:
            //麦克风被其他用户打开
            break;
        case YOUME_EVENT_MIC_CTR_OFF:
            //麦克风被其他用户关闭
            break;
        case YOUME_EVENT_SPEAKER_CTR_ON:
            //扬声器被其他用户打开
            break;
        case YOUME_EVENT_SPEAKER_CTR_OFF:
            //扬声器被其他用户关闭
            break;
        case YOUME_EVENT_LISTEN_OTHER_ON:
            //取消屏蔽某人语音
            break;
        case YOUME_EVENT_LISTEN_OTHER_OFF:
            //屏蔽某人语音
            break;
        default:
            //"事件类型" + eventType + ",错误码" +errcode
            break;
    }
}

// pcm数据回调
- (void)onPcmDataRemote: (int)channelNum samplingRateHz:(int)samplingRateHz bytesPerSample:(int)bytesPerSample data:(void*) data dataSizeInByte:(int)dataSizeInByte {
}

- (void)onPcmDataRecord: (int)channelNum samplingRateHz:(int)samplingRateHz bytesPerSample:(int)bytesPerSample data:(void*) data dataSizeInByte:(int)dataSizeInByte {
}

- (void)onPcmDataMix: (int)channelNum samplingRateHz:(int)samplingRateHz bytesPerSample:(int)bytesPerSample data:(void*) data dataSizeInByte:(int)dataSizeInByte {
}

//RestAPI回调
-(void) onRequestRestAPI: (int)requestID iErrorCode:(YouMeErrorCode_t) iErrorCode  query:(NSString*) strQuery  result:(NSString*) strResult {
}

//获取频道用户列表回调
-(void) onMemberChange:(NSString*) channelID changeList:(NSArray*) changeList { 
}

//SDK内置连麦抢麦接口对应的回调
- (void) onBroadcast:(YouMeBroadcast_t)bc strChannelID:(NSString*)channelID strParam1:(NSString*)param1 strParam2:(NSString*)param2 strContent:(NSString*)content;

//音视频通话码率、丢包率回调
- (void) onAVStatistic:(YouMeAVStatisticType_t)type  userID:(NSString*)userID  value:(int) value ;

//视频h264裸数据回调
- (void)onVideoPreDecodeDataForUser:(const char *)userId data:(const void*)data len:(int)dataSizeInByte 
{
}

实时音视频直播

场景概览

游密Video SDK可以实现直播功能,通过屏幕共享分享游戏画面,实时直播游戏全过程,介绍玩法、策略,展示真实操作,同时支持主播和玩家通过弹幕、聊天、活动等形式互动。

功能列表

主要功能 功能描述
登录房间 支持以不同身份如主播/观众登录房间,决定是否只能观看
语音视频 观众可以听到主播的语音,观看主播视频画面
变声 主播可以自由变音
播放战歌 主播端支持播放战歌,提升直播效果
屏幕共享 主播可以共享自己的画面

快速开始

开发环境要求

  • Xcode 5.0 或以上版本。
  • 两台iOS 7.0 或以上版本且支持音频的 iOS 设备或模拟器(推荐使用真机),用于模拟两个用户进行语音通话。
  • iOS 设备已经连接到 Internet。

开发环境集成

  1. Talk SDK中有两个子文件夹:include、lib。

    • include:SDK的头文件,包括:
    • YMVoiceService.h封装了语音SDK的全部功能接口,集成方可通过[YMVoiceService getInstance]直接调用。
    • VoiceEngineCallback.h包含需要实现的语音SDK的回调接口协议。
    • YouMeConstDefine.h包含错误码定义等各类枚举类型定义。
    • lib:iOS库文件,包含libyoume_voice_engine.a文件和libYouMeCommon.a文件。
  2. 将SDK放置到xcode工程目录下(开发者也可根据实际路径填写),如下图所示 alt

  3. 添加库文件路径:Build Settings -> Search Paths -> Library Search Paths,直接将SDK的ios文件夹拖到xcode需要填入的位置,然后自动生成路径。

  4. 添加依赖库:在Build Phases -> Link Binary With Libraries下添加:
    libc++.tbd
    libsqlite3.0.tbd
    libyoume_voice_engine.a
    libYouMeCommon.a
    libz.dylib
    libz.1.2.5.tbd
    libresolv.9.tbd
    SystemConfiguration.framework
    CoreTelephony.framework
    AVFoundation.framework
    AudioToolBox.framework
    CFNetwork.framework

  5. 为iOS10以上版本添加录音权限配置:iOS10系统使用录音权限,需要在target的info.plist中新加NSMicrophoneUsageDescription键,值为字符串(授权弹窗出现时提示给用户)。首次录音时会向用户申请权限。配置方式如下: alt

实现音视频直播

相关接口

API的调用可使用“[YMVoiceService getInstance]”来直接操作,接口使用的基本流程为初始化->收到初始化成功回调通知->加入房间->收到加入房间成功回调通知->使用其它接口->离开房间->反初始化,要确保严格按照上述的顺序使用接口。

初始化相关接口

接口 含义
[YMVoiceService getInstance] setLogLevelforConsole 设置日志级别
[YMVoiceService getInstance] initSDK 引擎初始化

加入房间相关接口

接口 含义
[YMVoiceService getInstance] setVideoFps 设置视频采集帧率
[YMVoiceService getInstance] setVideoNetResolutionWidth 设置本地采集分辨率
[YMVoiceService getInstance] setVBR 设置视频编码是否采用VBR动态码率(大流)
[YMVoiceService getInstance] setVideoCodeBitrate 设置视频编码码率
[YMVoiceService getInstance] setVideoFpsForSecond 设置视频帧率(小流)
[YMVoiceService getInstance] setVideoNetResolutionWidthForSecond 设置编码分辨率(小流)
[YMVoiceService getInstance] setVBRForSecond 设置视频编码是否采用VBR动态码率(小流)
[YMVoiceService getInstance] setVideoCodeBitrateForSecond 设置视频编码码率(小流)
[YMVoiceService getInstance] setVideoFpsForShare 设置共享流帧率
[YMVoiceService getInstance] setVideoNetResolutionWidthForShare 设置共享流编码分辨率
[YMVoiceService getInstance] setMicLevelCallback 设置是否开启讲话音量级别回调
[YMVoiceService getInstance] setFarendVoiceLevelCallback 设置是否开启远端说话人音量级别回调
[YMVoiceService getInstance] setAVStatisticInterval 设置音视频统计上报间隔,建议为5秒
[YMVoiceService getInstance] setAutoSendStatus 设置状态同步(mic,speaker)
[YMVoiceService getInstance] joinChannelSingleMode 加入房间,建议 role建议设置为1,autoRecv设置为false

本地设备控制接口

接口 含义
收到 YOUME_EVENT_JOIN_OK 事件后可设置
[YMVoiceService getInstance] startCapture 打开摄像头采集
[YMVoiceService getInstance] stopCapture 关闭摄像头采集
[YMVoiceService getInstance] switchCamera 切换摄像头
[YMVoiceService getInstance] createRender 创建本端预览
[YMVoiceService getInstance] setMicrophoneMute 设置麦克风状态
[YMVoiceService getInstance] setSpeakerMute 设置扬声器状态
打开屏幕共享流程

受iOS的系统限制,iOS实现屏幕共享,需要添加额外的拓展:点击 file -> new -> Target -> Broadcast Upload Extension添加拓展,会同时添加拓展的UI,需要在拓展里再次导入一遍Video SDK,并需要初始化SDK init、设置共享分辨率、帧率、加入房间操作,然后调用系统的共享接口,获取到屏幕共享数据,调用inputPixelBufferShare接口传输给到SDK。

接口 含义
inputPixelBufferShare:(RPSampleBufferType)sampleBufferType withBuffer:(CMSampleBufferRef)sampleBuffer; 屏幕共享输入接口
setVideoFpsForShare:(int)fps 设置共享流帧率
setVideoNetResolutionWidthForShare:(int)width height:(int)height 设置共享流分辨率
setVideoCodeBitrateForShare:(unsigned int) maxBitrate minBitrate:(unsigned int ) minBitrate 设置共享流码率
setVBRForShare:( bool) useVBR 设置VBR模式

接收远端音视频

接口 含义
[YMVoiceService getInstance] createRender 创建渲染
[YMVoiceService getInstance] deleteRender 删除渲染
[YMVoiceService getInstance] setUsersVideoInfo 设置观看用户的哪一路流(大小流),autoRecv设置为false时,需要调用该接口后才会接收对方的视频流
[YMVoiceService getInstance] maskVideoByUserId 设置是否屏蔽他人视频,屏蔽对方的所有视频流,包括共享流,音频流保留
[YMVoiceService getInstance] setListenOtherVoice 设置是否听其他人语音
onMemberChange 房间内其它用户加入/离开回调通知

离开房间

接口 含义
[YMVoiceService getInstance] leaveChannelAll 退出所有房间

反初始化

接口 含义
[YMVoiceService getInstance] unInit 反初始化引擎

相关接口

[YMVoiceService getInstance] initSDK 引擎初始化 [YMVoiceService getInstance] setVideoLocalResolution 设置本地采集分辨率 [YMVoiceService getInstance] setVideoNetResolution 设置网络传输分辨率 [YMVoiceService getInstance] joinChannelSingleMode 加入房间 [YMVoiceService getInstance] createRender 创建渲染 [YMVoiceService getInstance] startCapture 开始摄像头采集 [YMVoiceService getInstance] setMicrophoneMute 设置麦克风状态 [YMVoiceService getInstance] setSpeakerMute 设置扬声器状态 [YMVoiceService getInstance] setHeadsetMonitorMicOn 设置监听 [YMVoiceService getInstance] setBackgroundMusicVolume 设置战歌播放音量 [YMVoiceService getInstance] playBackgroundMusic 播放战歌

关键调用顺序

  1. 以主播身份进入频道 初始化([YMVoiceService getInstance] initSDK)->[YMVoiceService getInstance] joinChannelSingleMode(参数三传主播身份YOUME_USER_HOST), 观众传的身份可以是听众也可以是自由人(注:以自由人进入频道,需要关闭麦克风)

  2. 主播打开摄像头,麦克风等设备

  3. 设置监听 ([YMVoiceService getInstance] setHeadsetMonitorMicOn:true BgmOn:true)参数1表示是否监听麦克风 true表示监听,false表示不监听 ,参数2表示是否监听战歌,true表示监听,false表示不监听

  4. [YMVoiceService getInstance] setBackgroundMusicVolume:70 调节背景音量大小

  5. [YMVoiceService getInstance] playBackgroundMusic:pFilePath repeat:bRepeat 播放本地的mp3音乐。 参数一 本地音乐路径, 参数二 是否重复播放 true重复,false不重复

  6. 屏幕共享:受iOS的系统限制,iOS实现屏幕共享,需要添加额外的拓展:点击 file -> new -> Target -> Broadcast Upload Extension添加拓展,会同时添加拓展的UI,需要在拓展里再次导入一遍Video SDK,并需要初始化SDK init、设置共享分辨率、帧率、加入房间操作,然后调用系统的共享接口,获取到屏幕共享数据,调用inputPixelBufferShare接口传输给到SDK。

  7. 远端有视频流过来,会通知 YOUME_EVENT_OTHERS_VIDEO_ON 事件,此时调用 [YMVoiceService getInstance] createRender 创建相关渲染。

  8. 退出房间

  9. 反初始化

服务器录制(服务器接口RESTAPI)

场景概览

游密支持服务器录制,将语音视频通话或共享画面进行实时录制保存,提供给更多的人在方便的时间观看或回溯。

开启服务端录制

设置开启服务端录制某频道某用户的视频流或者屏幕共享流,当客户端用户加入频道开启屏幕共享成功后,调用set_media_recod_param接口,设置某频道视频录或共享流录制。

  • 请求URL
    https://api.youme.im/v2/im/set_media_recod_param?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
  • header

    Content-Type: application/json
  • body
    {
    "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接口,设置某频道视频录或共享流录制。

  • 请求URL
    https://api.youme.im/v2/im/del_media_recod_param?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
  • header

    Content-Type: application/json
  • body
    {
    "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接口。

  • 请求URL
    https://api.youme.im/v2/im/get_media_recod_infos?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
  • header

    Content-Type: application/json
  • body
    {
    "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接口,获取到视频文件。

  • 请求URL
    https://api.youme.im/v2/im/get_media_recod_info?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
  • header

    Content-Type: application/json
  • body
    {
    "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": 字幕文件结束时间。

旁路直播(服务器接口RESTAPI)

场景概览

游密支持CDN旁路直播,实现将音视频流推送至第三方CDN平台,从而观众可以方便快捷地通过接入H5观看CDN直播。

开启单路rtmp服务端推流

开启音视频通讯特定频道特定人员的服务端RTMP旁路推流功能,建议主播在客户端加入直播频道成功后,调用set_single_rtmp_param接口,设置某频道的某用户单路RTMP推流。

  • 请求URL
    https://api.youme.im/v2/im/set_single_rtmp_param?appkey=123456789&identifier=admin&curtime=123456789&checksum=123456789abcdefg
  • header

    Content-Type: application/json
  • body
    {
    "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可在游密后台进行查看。

停止单路rtmp服务端推流

当直播结束时,可以调用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
  • body
    {
    "RoomID":"123456",
    "UserID":"ym_jason"
    }

RoomID: 游戏频道ID,字符串,必选字段。
UserID: 游戏用户ID,字符串,必选字段。

  • 响应
    {
    "ActionStatus" : "OK",
    "ErrorCode" : 0,
    "ErrorInfo" : ""
    }

开启rtmp服务端合流推流

  • 请求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服务端合流单个用户参数

添加某游戏某频道某用户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服务端合流单个用户参数

删除某游戏某频道某用户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" : ""
    }

停止rtmp服务端合流推流

  • 请求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" : ""
    }