跳到主要内容

小视频消息

用户可以通过 IMKit 图库(本地相册)或小视频插件发送小视频消息。消息将出现在会话页面的消息列表组件中。插件默认发送的消息包含小视频消息内容对象 SightMessage(类型标识:RC:SightMsg)。

(width=250) (width=250)

局限性

小视频功能目前存在以下限制:

  • IMKit 仅单聊会话和群聊会话支持发送小视频消息。
  • 如果使用小视频插件进行录制,支持录制长度不超过 10 秒的小视频。
  • 如果从本地相册中选择视频文件,请注意服务端的默认视频时长上限为 2 分钟。如需调整上限,请联系商务。
  • 仅支持 H.264 + AAC 编码的视频文件,因为 IMKit 的短视频录制、播放只实现了该编码组合的支持。
  • 如果 App Key 使用 IM 旗舰版IM 尊享版,文件存储时长默认为 180 天(不含小视频文件,小视频文件存储 7 天)。注意,IM 商用版(已下线)默认存储 7 天。如需了解IM 旗舰版IM 尊享版的具体功能与费用,请参见融云官方价格说明页面及计费说明

用法

建议通过集成 IMKit 小视频插件使用小视频消息功能。

集成小视频插件

IMKit 的小视频插件实现了小视频消息的消息注册、录制、播放等功能。集成小视频模块后,在单聊、群组会话输入区域的扩展面板中自动出现发送小视频消息的入口。

  1. 在应用的 build.gradle 文件中增加对小视频的依赖。

    dependencies{
    // 插件版本需要与主 SDK 版本保持一致。
    api 'cn.rongcloud.sdk:sight:x.y.z'
    }
提示

各个 SDK 的最新版本号可能不相同,还可能是 x.y.z.h,可前往 融云官网 SDK 下载页面融云的 Maven 代码库 查询。

  1. 通过 RongExtensionManager,向 IMKit 的输入区域 RongExtension 中注册小视频模块 SightExtensionModule。小视频模块会向 IMLib 注册 SightMessage,并向扩展面板中添加小视频插件 SightPlugin

    RongExtensionManager.getInstance().registerExtensionModule(new SightExtensionModule());

从本地相册选择小视频

提示

前提条件:集成 IMKit 小视频插件后,插件内部会向 IMLib 注册(SightMessage)类型的消息。请先集成 IMKit 小视频插件,再进行以下配置,否则 SDK 无法识别小视频消息。

通过 IMKit 输入区域中的图库插件 ImagePlugin 打开本地相册时,默认不包含视频文件,用户无法选择视频文件进行发送。

您可以修改全局配置,设置在本地相册中包含视频文件。

RongConfigCenter.featureConfig().rc_media_selector_contain_video = true;

如果通过 XML 资源修改 IMKit 默认配置,可在应用 res/values 目录下创建 rc_config.xml 文件,添加以下配置:

<bool name="rc_media_selector_contain_video">true</bool>

如果您的项目中不使用 IMKit 小视频插件,但仍希望支持从本地发送小视频文件,请自行向 IMLib 注册 SightMessage,否则 SDK 无法发送小视频消息。您还需要自行实现小视频录制、播放(在会话页面消息点击事件中处理播放)功能。

// 注册 SightMessage,必须在连接之前处理
RongIMClient.registerMessageType(SightMessage.class);

发送小视频消息

用户点击输入栏右侧 + 号按钮可展开扩展面板,点击图片小视频图标,即可发送小视频消息。

extension(width=250)

定制化

修改小视频文件保存位置

客户端接收小视频消息后,在会话页面中长按保存时,SDK 默认保存到 /RongCloud/Video/ 下。您可以在应用程序目录下创建 res/values/rc_config 文件,全局修改默认保存位置:

<string name="rc_file_default_saved_path">/RongCloud/Video/</string>

调整小视频压缩质量

小视频文件会被压缩为分辨率 544 * 960 的文件。小视频首帧画面会被用于生成缩略图,在聊天界面中展示。SDK 默认以原图 30% 质量生成符合标准大小要求的缩略图后再上传和发送,缩略图最长边不超过 240 px。

一般情况下不建议修改 SDK 默认压缩配置。如需调整 SDK 压缩质量,详见知识库文档如何修改 SDK 默认的图片与视频压缩配置

自定义小视频消息的 UI

IMKit 默认生成和发送小视频消息(RC:SightMsg),使用 SightMessageItemProvider 模板展示在消息列表中。

所有消息展示模板都继承自 BaseMessageItemProvider<CustomMessage>,您可以继承 BaseMessageItemProvider<CustomMessage>,自行实现一个小视频消息展示模板类,并将该自定义模板提供给 SDK。

您也可以直接替换小视频消息展示模板中引用的样式资源、字符串资源和图标资源。详见 IMKit 源码 SightMessageItemProvider.java 中引用的资源。

例如:您可以复制 IMKit 源码中的 rc_item_sight_message.xml 的全部内容,您可以在项目下创建 /res/layout/rc_item_sight_message.xml 文件,修改其中定义的样式值。请勿删减 SDK 默认控件,不要随意修改 View 的 ID。

如果希望修改录制、播放 UI,可以参考 IMKit 小视频插件源码 Sight

动态隐藏小视频入口

如需动态隐藏输入区域扩展面板中的小视频功能入口,可创建自定义的扩展面板配置类 MyExtensionConfig,继承自 DefaultExtensionConfig,重写其中的 getPluginModules() 方法。详见输入区域