基于腾讯webIm+cos实现语音,视频,文件,定位等多媒体功能

        web技术在这几年内迭代很快,技术也越来越成熟,相应的,市面上就有很多App选择用webApp来制作,webApp较与传统原生开发优势有以下几点:

        1.开发时间大大缩短,开发人员从2个端(安卓,IOS)减少到一个端(web前端).

        2.便于维护:许多变更频繁的页面只需在服务端部署更改即可。

        3.开发耗费成本降低。

        有优点,相应的缺点也尤其的突出,体验效果差,许多原生App的功能,web端不能实现,或者实现效果达不到商用需求,但是这些问题随着前端的js框架的流行(vue,ng,react),移动端UI库的风靡(ionic),压缩工具的崛起(gulp,webpack),打包工具的流行(cordova,Hbulider),缺点逐步在改善。

        这里我们就针对其中的IM解决方案进行进一步探讨:

        市面上成熟的IM服务器厂商有,腾讯云通信,环信,融云,野狗云,网易云信等等。这里我用过腾讯云通信和环信,其他几家我就不进行阐述了,有兴趣的可以去他们官网下个demo研究下。

        腾讯云的webim方案和环信的webim方案的异同:

        同:能发送文本信息,表情信息,自定义信息,允许App自有用户登录

        异:环信的webim还能发送语音,视频,文件等多媒体信息,但是环信的云端不存储信息,需要开发者自行存储。

        腾讯的webim不能发送语音,视频,文件等多媒体信息,但是可以将用户信息储存他们云端7天,并提供接口,自行导出。

        腾讯和环信各有各有优缺点,因为公司的需要,这里就选择了腾讯云通信。那么如何实现那些多媒体功能呢?

        解决思路:

        腾讯除了能发送文本信息,表情信息外,还能发送自定义文本信息(这里的自定义信息,仅限于文本,还有大小限制),那么我如何给用户发语音,视频,定位呢。因为我们公司的资源都是存储在腾讯的COS对象存储上面的,所以,这里我们也需要将语音,视频,定位等文件传到COS上,然后获取到存放地址,将存放地址,以自定义详细的形式发送出去,并标记类型,在接收端对自定义消息进行解析,然后显示成不同的标签,如audio(语音),video(视频),img(定位)。

        实现步骤:

        1.实现语音发送:这里我们采用的Hbuiler,里面封装了手机录音和播放功能,此时,我们调用录音功能,将录音生成的文件发送至我们的逻辑功能处理服务器,然后将相对路径返回给App端,之后继续将录音文件上传至COS服务器,App端用COS域名+相对路径获取语音文件。但是这里要注意一点,安卓和IOS录制出来的语音格式是不一样的,而且安卓的amr格式无法在IOS上进行正常的播放,所以我们需要在我们的逻辑功能处理服务器利用FFmpeg将音频文件统一转为MP3格式,实际测试MP3格式IOS和安卓都能正常播放。

        2.实现短视频发送:Hbuilder虽然封装了调用视频的接口,但是无法控制拍摄时长,和拍摄质量,我们遂采取安卓和IOS原生代码来实现短视频拍摄,因为之前没接触过安卓和IOS,这里遇到了很多坑,如果需要源码和如何接入App的方案可以私信我,这里我不多提。后面的步骤与语音相同。

        3.实现定位功能:这里我们需要先获取App获取位置的权限,然后获取百度地图坐标系的坐标,注意每个地图的坐标系坐标是不一样的,这里是个隐藏的坑,做过地图类似的功能的就会了解的。申请百度地图开放接口,然后在App端生成百度地图,并实现周围功能,地图点击功能,这些功能都很简单,去研读下百度地图的Api就知道了,选中了位置后,如果将这个定位发出去呢? 第一步:记录选中地点的经纬度,第二步,利用canvas的绘图功能,绘制当前地图组件的载体-DIV,然后将绘制出来的图发给逻辑功能处理服务器,得到图片路径,然后将路径和经纬度按自定义消息发送出去。解析步骤与语音相同。

        就这样,腾讯的webIM就有了多媒体功能,这里没贴代码,因为每个人的代码风格有差异,而且这里的代码有点多,容易误导,所以就将思路贴了出来,如果有不懂的地方,可以私信我。

效果展示:

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 221,052评论 6 513
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 94,267评论 3 397
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 167,518评论 0 360
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 59,457评论 1 296
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 68,474评论 6 397
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 52,143评论 1 308
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 40,728评论 3 420
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 39,650评论 0 276
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 46,184评论 1 319
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 38,269评论 3 339
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 40,415评论 1 352
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 36,083评论 5 348
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 41,775评论 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 32,257评论 0 23
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 33,389评论 1 271
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 48,777评论 3 375
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 45,419评论 2 359

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 172,259评论 25 707
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,117评论 4 61
  • 风吹铃响灯笼飘,绵绵不绝诵经声。我像食了罂粟般,被这里的美景,这里的清净施了毒,不愿离开。逃避现实也好,远离...
    小神马阅读 835评论 7 12
  • 我们小时候所受的痛苦,大都由于需求不足。 孩提时代两大主要需求是归属感和确认自己的重要性。有时需求没有得到满足所造...
    暖儿_8833阅读 431评论 0 0
  • 我的内在父母非常强大,强大不是因为照顾我,而是指责我,或者很多问题帮助我给出好多限制性思维。我至今都是一个乖宝宝,...
    酸爽的橙子阅读 675评论 0 0