直播项目搁置了将近1年,以为都搁浅了,没想到头头又提起来了,这次直播技术更替为了腾讯云,消息系统没变,采用的依然是融云,新增了礼物赠送功能。

项目完成基本就是这样子:

一,播放器

由阿里云转腾讯云,web这边基本没有什么变化,也就是更换个播放器,不过腾讯云直播的效果确实比阿里云强一些(仅从画面上,其他的深层次就不是我能去谈论的了)。

var  tcPlayer = new TcPlayer('tx-video', {
"m3u8": 'xxx', //请替换成实际可用的播放地址(m3u8)
"autoplay" : false, //iOS下safari浏览器,以及大部分移动端浏览器是不开放视频自动播放这个能力的
"live": true,
"coverpic" : "xxxxxx", //你的封面图片地址
"width" : '100%',//视频的显示宽度,请尽量使用视频分辨率宽度
"height" : '100%',//视频的显示高度,请尽量使用视频分辨率高度
"controls": 'none',
"systemFullscreen": true,
"x5_player": true,
"x5_type": "h5",
"x5_fullscreen": "true"
});

几点建议:

1. 自动播放建议关闭,这样可以让所有机型保持统一

2. 因为是在微信中做直播,所以要实现全屏效果需要打开X5同层(具体大家可以去搜X5同层协议,这里就不妨传送门了,请原谅我的懒惰)

二,关于ios与android区别问题

在wx里,ios与android打开视频同层,ios正常,而android会隐去原本在上方的标题栏,此处处理方式为监听wx给出的事件

<video id=“myVideo".../>

//进入全屏
myVideo.addEventListener("x5videoenterfullscreen", function(){ alert("player enterfullscreen"); }) //退出全屏
myVideo.addEventListener("x5videoexitfullscreen", function(){
  alert("player exitfullscreen");

})
 

然而在项目中,发现并触发不了 - -!

还好有另一个监听:

window.onresize = function(){

  myVideo.style.width = window.innerWidth + "px";

  myVideo.style.height = window.innerHeight + "px";

}

通过这个我们能够监听到屏幕的变化(仅在安卓端判断即可)

三,赠送礼物:

赠送礼物考虑到并发问题,最终决定使用融云消息推送,具体如何注册消息,监听消息大家可以查看我之前的随笔。

赠送礼物其实就是点击礼物,通过融云发送礼物消息,里面带着用户信息,用户头像,礼物个数就ok了,是不是很简单,其实里面还是有不少坑的。(可是我们wx端只负责接收,不用做赠送礼物,具体问题就靠小伙伴们自己挖掘啦)!!!

四,接收礼物

接收礼物(连击礼物)这里,起先我们是每次用户点击送礼物都会发送一条消息,然后来做反显,最后实现出来后发现其中逻辑比较复杂,在考虑到消息丢失的可能性,最后采用了当礼物连击结束后统一将信息发送给各端来处理。

这里我的处理方式是:

1. 创建一个正在进行动画的队列(限制其中最多只能有3个动画进行)

2. 创建一个等待动画的队列

在消息进来时,判断正在进行动画的队列是否有空的位置,如果有的话则插入,没有的话则放入等待队列(先进先出),在动画队列中的每一条动画结束后去查询等待队列中是否有数据,有的话则插入动画队列。

听着简单,但实现起来还是有一些复杂的,本人代码比较乱,就不贴出来了,有什么问题可以留言,会第一时间回复的。

动画方面建议使用css3,使用js动画在一些配置低的手机上会有些许卡顿。

上一篇:

web 直播&即时聊天------阿里云、融云(三)

web 直播&礼物赠送------腾讯云(四)的更多相关文章

  1. 怎样将本地web项目部署到腾讯云服务器上?

    怎样将本地web项目部署到腾讯云服务器上? 1.本地计算机的工作: (1).用eclipse新建一个web项目,然后在webcontent下新建一个index.html,然后在本地部署到Tomcat服 ...

  2. 【手把手教程】uniapp + vue 从0搭建仿斗鱼虎牙直播App:腾讯云MLVB移动直播实践连麦PK+带货

    基于uniapp + vue 实现仿斗鱼虎牙腾讯云移动直播应用实践,实现以下功能 1: 用户登陆 2: 房间管理 3: 房间聊天 4: 直播美颜 5: Svga礼物动画 6: 一对一连麦观众 项目开发 ...

  3. web 直播&即时聊天------阿里云、融云(三)

    经过前面的知识,基本已经把聊天室的功能搞定了,剩下的就是直播的问题了... 一如既往,阿里云的web demo也是少的可怜,只有一个web播放器(Prismplayer),所以这里主要就此播放器踩的坑 ...

  4. ***腾讯云直播(含微信小程序直播)研究资料汇总-原创

    这段时间抽空研究了下直播技术,综合比较了下腾讯云直播的技术和文档方面最齐全,现把一些技术资料和文档归集如下: 1.微信小程序移动直播入门导读 https://cloud.tencent.com/doc ...

  5. EasyNVR结合阿里云/腾讯云CDN实现微信/小程序直播的方案

    背景需求: 许多客户有这样的需求:微信公众号做为平台来对摄像机进行直播:可以让用户随时随地打开公共号就可以观看:保证画面的流畅性:保证视频的并发访问量等. 问题分析: 虽然需求看似很简单,其实真正实现 ...

  6. uni-app + Cloudbase——uni-app 项目中如何使用腾讯云开发后端服务

    1 基本介绍 uni-app 是一个基于 Vue.js 的跨端开发框架,一套代码可以发布到 App.小程序.Web 等不同平台 腾讯云开发平台 Cloudbase 提供的 @cloudbase/js- ...

  7. 腾讯云服务器手动和自动安装WordPress网站程序

    如果我们需要建站的话,对于基础个人网站.博客建站选择基础的1Mbps带宽配置的1GB内存的腾讯云服务器还是够用的,且如果我们需要用来建网站的话可以手工添加程序,以及有些面板,比如宝塔面板是自带CMS程 ...

  8. 如何用Baas快速在腾讯云上开发小程序-系列1:搭建API & WEB WebSocket 服务器

    版权声明:本文由贺嘉 原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/221059001487422606 来源:腾云阁 h ...

  9. 腾讯云点播视频存储(Web端视频上传)

    官方文档 前言 所谓视频上传,是指开发者或其用户将视频文件上传到点播的视频存储中,以便进行视频处理.分发等. 一.简介 腾讯云点播支持如下几种视频上传方式: 控制台上传:在点播控制台上进行操作,将本地 ...

随机推荐

  1. Hibernate Error: a different object with the same identifier value was already associated with the session

    在执行Hibernate的Update操作时,报错:a different object with the same identifier value was already associated w ...

  2. UVA - 10723 类似LCS

    思路:dp(i, j)表示第一个串前i个字符和第二个串前j个字符需要的最短字符串长度,cnt(i, j)表示第一个串前i个字符和第二个串前j个字符需要的最短字符串的个数. 转移方程: if(s1[i] ...

  3. Luogu P1092 虫食算

    题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 +8468#6633 44445509678 其中# ...

  4. Linux基础一

    基本命令 useradd xxx 创建一个用户 uname     查看系统架构信息 uname -a  显示详细信息 uname -r  显示内核信息 date      显示当前网络时间 cat ...

  5. java 8 Lambda表达式(翻译自Stackoverflow)

    (原文链接)Lambda只能作用于一个只有一个抽象方法的函数式接口(Function Interface),不过函数式接口可以有任意数量default或static修饰的方法(因此,它们有时也被当做单 ...

  6. 浏览器通过Scheme协议启动APP中的页面

    在APP开发过程中,通过外部浏览器调起APP页面的场景也很普遍使用.下面就介绍一下通过外部H5页面唤起APP中页面的通用方法. 1.首先需要在AndroidMainifest.xml中对你要启动的那个 ...

  7. Struts2实现文件上传(一)

    Struts2实现文件上传 文件上传成功后结果页面 result.jsp: <%@ page language="java" import="java.util.* ...

  8. freemarker写select组件报错总结(七)

    1.错误描述 六月 26, 2014 11:26:27 下午 freemarker.log.JDK14LoggerFactory$JDK14Logger error 严重: Template proc ...

  9. web开发性能优化---代码优化篇

    1.合理使用缓存使用 提高性能最好最快的办法当然是通过缓存来改善,对于任何一个web开发者都应该善用缓存.Asp.net下的缓存机制十分强大,用好缓存机制可以让我们极大的改善web应用的性能. 1.页 ...

  10. python装饰器理解

    1.装饰器的作用 在不修改被装饰对象的源代码以及调用方式的前提下为被装饰对象添加新功能 原则: 1.不修改被装饰对象的源代码2.不修改被装饰对象的调用方式 目标: 为被装饰对象添加新功能 2.装饰器的 ...