小视频消息
用户可以通过 IMKit 图库(本地相册)或小视频插件发送小视频消息。消息将出现在会话页面的消息列表组件中。插件默认发送的消息包含小视频消息内容对象 SightMessage(类型标识:RC:SightMsg
)。
局限性
小视频功能目前存在以下限制:
- IMKit 仅单聊会话和群聊会话支持发送小视频消息。
- 如果使用小视频插件进行录制,支持录制长度不超过 10 秒的小视频。
- 如果从本地相册中选择视频文件,请注意服务端的默认视频时长上限为 2 分钟。如需调整上限,请联系商务。
- 仅支持
H.264
+AAC
编码的视频文件,因为 IMKit 的短视频录制、播放只实现了该编码组合的支持。 - 如果 App Key 使用 IM 旗舰版或 IM 尊享版,文件存储时长默认为 180 天(不含小视频文件,小视频文件存储 7 天)。注意,IM 商用版(已下线)默认存储 7 天。如需了解IM 旗舰版或 IM 尊享版的具体功能与费用,请参见融云官方价格说明页面及计费说明。
用法
建议通过集成 IMKit 小视频插件使用小视频消息功能。
集成小视频插件
IMKit 的小视频插件实现了小视频消息的消息注册、录制、播放等功能。集成小视频模块后,在单聊、群组会话输入区域的扩展面板中自动出现发送小视频消息的入口。
-
在应用的
build.gradle
文件中增加对小视频的依赖。dependencies{
// 插件版本需要与主 SDK 版本保持一致。
api 'cn.rongcloud.sdk:sight:x.y.z'
}
各个 SDK 的最新版本号可能不相同,还可能是 x.y.z.h,可前往 融云官网 SDK 下载页面 或 融云的 Maven 代码库 查询。
-
通过
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);
发送小视频消息
用户点击输入栏右侧 +
号按钮可展开扩展面板,点击图片或小视频图标,即可发送小视频消息。
定制化
修改小视频文件保存位置
客户端接收小视频消息后,在会话页面中长按保存时,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()
方法。详见输入区域。