差别

这里会显示出您选择的修订版和当前版本之间的差别。

到此差别页面的链接

两侧同时换到之前的修订记录 前一修订版
后一修订版
前一修订版
im:server:basics:recordfiledownload [2019/06/14 09:11]
jk [获取会议内user全部录制文件]
im:server:basics:recordfiledownload [2020/06/25 02:27]
allenwang 移除
行 4: 行 4:
  
 环信使用 REST 的方式来获取实时音视频的录制文件,包括录制的音频文件和视频文件。 环信使用 REST 的方式来获取实时音视频的录制文件,包括录制的音频文件和视频文件。
-  * 录制功能由服务端控制开启,支持1v1录制和多人录制以及录制合成,默认录制功能是关闭的,开启请联系环信商务。 +  * 录制功能可以调用SDK接口控制开启,支持1v1录制和多人录制以及录制合成。 
-  * 文件默认仅在环信的音视频服务器保存30天,到期后会进行删除要延文件存储的时间需要联系环信商务。 +  * 录制文件默认仅在环信的音视频服务器保存30天,到期后会进行删除如需长期使用请自行下载保存。 
-  * 文件格式一为.webm。如果需要对音频视频进行转码生成其他格式,需要联系环信商务。 +  * 录制系统会自动根据音视频编码选择文件格式般是.webm,.mkv和.mp4三种;合成录制文件固定为.mp4格式 
-  * 如果对服务端录制文件进行合成生成的合成视频文件格式为.mp4+  * 如果需要其他格式,用户可以自己下载转换转换工具建议用ffmpeg
   * 获取录制文件后,如果需要下载,需要通过文件详情中的URL直接下载保存。   * 获取录制文件后,如果需要下载,需要通过文件详情中的URL直接下载保存。
 +  * SDK开启录制
 +    * [[http://​sdkdocs.easemob.com/​apidoc/​android/​chat3.0/​classcom_1_1hyphenate_1_1chat_1_1_e_m_call_manager.html#​af7447a6669e37d5d0bbf976b098b435b|android 1v1]]
 +    * [[http://​sdkdocs.easemob.com/​apidoc/​android/​chat3.0/​classcom_1_1hyphenate_1_1chat_1_1_e_m_conference_manager.html#​a6a9bd493a33203869d37780d7f8cdbfe|android 多人]]
 +    * [[http://​sdkdocs.easemob.com/​apidoc/​ios/​chat3.0/​protocol_i_e_m_call_manager-p.html#​a429bded3e8040875d02e84936cd75521|iOS 1v1]]
 +    * [[http://​sdkdocs.easemob.com/​apidoc/​ios/​chat3.0/​protocol_i_e_m_conference_manager-p.html#​a7cd6cdf1b116964fe114d700baf26dc6|iOS 多人]]
 +    * [[im/​web/​basics/​videocall#​集成步骤|web 1v1]]
 +    * [[im/​web/​basics/​multiuserconference#​用户a创建会议|web 多人]]
 +  * 获取录制文件时所需要的confrId,可以从SDK中获取,下面以新版本SDK属性名称为例,老版本以各端SDK头文件内的属性名称为准。
 +    * 移动端:
 +      * iOS:
 +        * 1v1时:在监听通话建立完成的回调中 - (void)callDidConnect:​(EMCallSession *)aSession,通过 aSession.serverVideoId 获取(serverVideoId为 EMCallSession 的属性,只有在通话建立完成后通过 EMCallSession 才能拿到 serverVideoId,否则在通话未建立完成时通过 EMCallSession 取到 serverVideoId 的为空)
 +        * 多人时:在创建并加入会议 createAndJoinConferenceWithType 或者加入会议室 joinConferenceWithConfId 成功后,通过回调中的 EMCallConference 对象 aCall.confId 获取到
 +      * 安卓:
 +        * 1v1时:在通话状态改变的监听中 void onCallStateChanged (CallState callState, CallError error),通过判断 callState 的状态为 connected 通话建立完成时,通过 EMCallSession 的 getServerRecordId () 获取到录制文件id
 +        * 多人时:在创建并加入会议 createAndJoinConference 或者加入会议室 joinConference 成功后,通过 callback 中的 EMConference 对象 调用 getConferenceId () 获取到
 +    * web端:1v1时为WebIM.call.getServerRecordId();多人时可以在createConference的回调里拿到,参考 [[im/​web/​basics/​multiuserconference#​用户a创建会议|创建会议]]
 +
 +服务器端存储的是压缩后的视频。录制文件的大小(每分钟)为:
 +====================
 +  * 240p: 0.75M ~ 3M 
 +  * 480p: 2.2M ~ 7.5M
 +  * 720p: 6.5M ~ 18.5M
 +  * 1080p: 15M ~ 37.5M
 +
 +**注意:** ​
 +
 +''​1、通话时长<​5s可能会出现服务器录制失败的情况。''​
 +
 +''​2、生成录制文件所花的时间和通话时长有关,通话时间越长,生成录制文件的时间也越长。一般情况下,通话时间1小时以下,在通话结束后2小时可以获取到,为了保证录制文件数据完整建议在24小时后获取。''​
  
-**注意:获取录制文件时所需要的confrId,可以从SDK中获取,1v1时为EMCallSession#​getServerRecordId,多人时为EMConference#​getConferenceId.** 
 ---- ----
  
行 46: 行 74:
 |confrBeginTime|录制文件所在多人会议的开始时间| |confrBeginTime|录制文件所在多人会议的开始时间|
 |confrEndTime|录制文件所在多人会议的结束时间| |confrEndTime|录制文件所在多人会议的结束时间|
-|confrType|会议类型,“CONFR”、“COMMUNICATION”均是普通会议、“COMMUNICATION_MIX”混音会议最多支持30人以下的音频混合、“LIVE”互动会议| +|confrType|会议类型,“CONFR”、“COMMUNICATION”均是普通会议、<del>“COMMUNICATION_MIX”混音会议最多支持30人以下的音频混合、“LIVE”互动会议</​del>​
-|confrId|会议中的唯一ID|+|confrId|会议ID,全局唯一|
 |userName|参加会议人员,以appkey_username表示(talker,直播模式下的主播)| |userName|参加会议人员,以appkey_username表示(talker,直播模式下的主播)|
 |memberName|参加会议人员,以appkey_username表示(talker,直播模式下的主播)IM情况下为 JID,系统唯一的ID| |memberName|参加会议人员,以appkey_username表示(talker,直播模式下的主播)IM情况下为 JID,系统唯一的ID|
行 60: 行 88:
  
 <code php> <code php>
-curl -X GET -i http://​a1.easemob.com/​easemob-demo/​testapp/​audio/​IM_X364829524644331520C14"​ -H '​Authorization:​ Bearer YWMte3bGuOukEeiTkNP4grL7iwAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnKdc-ZgBPGgBFTrLhhyK8woMEI005emtrLJFJV6aoxsZSioSIZkr5kw'​ -H '​Content-Type:​ application/​json'​+curl -X GET -i "http://​a1.easemob.com/​easemob-demo/​testapp/​audio/​IM_X364829524644331520C14"​ -H '​Authorization:​ Bearer YWMte3bGuOukEeiTkNP4grL7iwAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnKdc-ZgBPGgBFTrLhhyK8woMEI005emtrLJFJV6aoxsZSioSIZkr5kw'​ -H '​Content-Type:​ application/​json'​
 </​code>​ </​code>​
  
行 114: 行 142:
  
 <code php> <code php>
-curl -X GET -i http://​a1.easemob.com/​easemob-demo/​testapp/​audio/​20190101080607/​20190304050607/​0/​2"​ -H '​Authorization:​ Bearer YWMte3bGuOukEeiTkNP4grL7iwAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnKdc-ZgBPGgBFTrLhhyK8woMEI005emtrLJFJV6aoxsZSioSIZkr5kw'​ -H '​Content-Type:​ application/​json'​+curl -X GET -i "http://​a1.easemob.com/​easemob-demo/​testapp/​audio/​20190101080607/​20190304050607/​0/​2"​ -H '​Authorization:​ Bearer YWMte3bGuOukEeiTkNP4grL7iwAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnKdc-ZgBPGgBFTrLhhyK8woMEI005emtrLJFJV6aoxsZSioSIZkr5kw'​ -H '​Content-Type:​ application/​json'​
 </​code>​ </​code>​
 === 可能返回的结果示例 === === 可能返回的结果示例 ===
行 167: 行 195:
  
 <code php> <code php>
-curl -X GET -i http://​a1.easemob.com/​easemob-demo/​testapp/​audio/​merge/​20190101080607/​20190304050607/​0/​2"​ -H '​Authorization:​ Bearer YWMte3bGuOukEeiTkNP4grL7iwAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnKdc-ZgBPGgBFTrLhhyK8woMEI005emtrLJFJV6aoxsZSioSIZkr5kw'​ -H '​Content-Type:​ application/​json'​+curl -X GET -i "http://​a1.easemob.com/​easemob-demo/​testapp/​audio/​merge/​20190101080607/​20190304050607/​0/​2"​ -H '​Authorization:​ Bearer YWMte3bGuOukEeiTkNP4grL7iwAAAAAAAAAAAAAAAAAAAAGL4CTw6XgR6LaXXVmNX4QCAgMAAAFnKdc-ZgBPGgBFTrLhhyK8woMEI005emtrLJFJV6aoxsZSioSIZkr5kw'​ -H '​Content-Type:​ application/​json'​
 </​code>​ </​code>​
 === 可能返回的结果示例 === === 可能返回的结果示例 ===