解决微信浏览器内video全屏问题
前端离职,让我写个视频播放页面,木办法只有我来搞了。
默认用h5的 video标签 测试时候发现微信浏览器内访问video自动全屏播放。
搜了下
webkit-playsinline="true" playsinline="true" x-webkit-airplay="true" x5-video-player-type="h5" x5-video-player-fullscreen="true" x5-video-ignore-metadata="true"
video内加如下属性可以解决ios全屏问题。但是安卓还是不行。网上说是安卓的用了x5内核啥的乱七不糟的,反正微信安卓浏览器对video做了限制了。
然后怎么办呢?想到用 canvas (最近做h5视频推流相关业务接触到的,里面有个jsmpeg视频解码插件)然后 jsmpeg (英文不好的可以用chrome的翻译功能帮你翻译这个地址)看了下说明。
要把视频转换为ts格式 又要用到 ffmpeg。转码mp4 为ts格式。(还好之前自己稍稍的研究过这个ffmpeg。不然要崩溃了。扯的太远了)
不管怎么样,还是有点崩溃。。。太费事了
首先利用ffmpeg转文件格式为 ts格式(ffmpeg这个安装我之前研究安装过,大家可以百度搜到,这里不细说,主要这个东西太复杂我也不咋深入了解)。命令如下
ffmpeg -i in.mp4 -f mpegts -codec:v mpeg1video -s 960x540 -b:v 500k -r -bf -codec:a mp2 -ar -ac -b:a 128k out.ts
其中1.mp4是原视频文件名称,out.ts是要转换成的视频名称,-r 25 意思是视频帧率是25(这里我设置的和原视频一样,原视频的这个参数可以用一些播放软件查看到它的编码信息,比如qq影音)-b:v 是指视频码率 越大越清晰(尽量小点,不然文件太大了,我这里设置了500k,清晰度还行) -s是分辨率,
上面做这些是因为 这句 jsmpeg git上的这句话 “JSMpeg只支持MPEG1视频编解码器和MP2音频编解码器的MPEG-TS容器播放”;还有一点ts文件可以带声音
生成后把此文件放到同你当前业务域名下的某个目录里(非当前域名的ts文件地址在用jsmpeg的时候会报跨域错误,应该jsmpeg里用到了post导致,不细究)
<canvas id="video-canvas"></canvas>
<script type="text/javascript" src="/jsmpeg.min.js"></script>
<script>
var canvas = document.getElementById('video-canvas');
var url = '/share/image/500p2.ts';
var player = new JSMpeg.Player(url, {canvas: canvas);
</script>
上面是jsmpeg的基本使用方法
到这里解决了,微信安卓浏览器的问题了。
——————————————————————————————————————————————————————————————
操蛋的是,ios上又播放不了声音,实在不想搞了,程序判断下内核,是安卓 的微信浏览器 用canvas方式的模板,其他一律用video方式的模板。
更操蛋的是,好不容易基本解决的时候,发现 各种Oppo uc等等浏览器又出现一些小兼容问题。先到这里,待有空了再来细究。。。。
解决微信浏览器内video全屏问题的更多相关文章
- 点击图片video全屏
<!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...
- 解决微信浏览器video全屏的问题
解决微信浏览器video全屏的问题 在微信浏览器里面使用video标签,会自动变成全屏,改成下面就好了,起码可以在video标签之上加入其他元素. <video id="videoID ...
- 利用gulp解决微信浏览器缓存问题
做了好多项目,这次终于要解决微信浏览器缓存这个令人头疼的问题了.每次上传新的文件,在微信浏览器中访问时,总要先清除微信的缓存,实在麻烦,在网上搜罗了很多解决办法,终于找到了方法:利用gulp解决缓存问 ...
- H5 video全屏与取消全屏兼容
H5 video全屏与取消全屏各浏览器兼容, requestFullscreen()全屏方法,exitFullscreen()退出全屏方法.兼容各个浏览器与css3兼容一样加个前缀即可. // 全屏 ...
- vue video全屏播放
需求: 1.视频为长方形,页面初始化打开为横屏全屏播放视频. 2.微信不支持自动播放,故自动播放需求删除. 方法: 1.vue-video-player插件 因需求较简单,仅要求播放本地一个视频,故未 ...
- 实现微信浏览器内打开App Store链接(已被和谐,失效了)
微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”http://itunes.apple.com/us/app/id399608199″& ...
- 实现微信浏览器内打开App Store链接
http://www.ildsea.com/1781.html 微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”http://itune ...
- [转]实现微信浏览器内打开App Store链接
微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”http://itunes.apple.com/us/app/id399608199″& ...
- 微信浏览器内建的WeixinJSBridge 实现“返回”操作
微信浏览器内建的WeixinJSBridge 实现“返回”操作 WeixinJSBridge.call('closeWindow');
随机推荐
- SpringBoot入门到出家
SpringBoot的Actuator监控 Actuator:对系统的监控 是SpringBoot提供的对应用系统监控的集成功能,可以对系统进行配置查看,相关功能统计等,在Spring Cloud中, ...
- js代码触发事件
/*** * 需要触发谁的点击事件 * @param how_id 节点的id 如:<input id='test'/> 则how_id=test * @param how_this 这个 ...
- 一篇关于Matcher find方法深刻理解的文章
文章目录 知识点 find find(int var1) reset group(int var1) 源码 故事是这样的 探索 问题解决 方法一: 方法二: 方法三: 总结 知识点 find 首先fi ...
- 安装MySql社区版(35-3)
1,https://dev.mysql.com/ --------------------------------------------------------------------------- ...
- java设计模式系列1-- 概述
准备开始写些设计模式的随笔,这是第一篇,概述主要回顾下六大原则 先用轻松和谐的语言描述下这6个原则: 单一职责 每个类甚至每个方法都只要做自己分内的事,不要背别人的锅,也就是功能要分类,代码要解耦 里 ...
- 2_2.springboot2.x配置之自动配置原理
前言 SpringBoot 自动配置原理: 本文主要分为三大部分: SpringBoot 源码常用注解 SpringBoot 启动过程 SpringBoot 自动配置原理 1. SpringBoot ...
- 数据类中引用virtual
public class City { [Key] public int CityID { set; get; } [Display(Name = "城市名称")] [Requir ...
- angularJS ng-repeat="item in XXX track by $index"问题记录
参考:https://blog.csdn.net/lunhui1994_/article/details/80236315 问题:项目中对数据做了分页效果,理想是:当页数大于6时,隐藏>6的页数 ...
- LUA中的冒号、点和self
在Lua编程中,经常会看到有时用点号定义一个table的成员函数,有时却用冒号,在调用的时候也是如此.那么点号和冒号在使用上有什么区别呢?它们与self之间又是什么样的关系呢?稍安勿躁,接下来谜底将一 ...
- Centos--swoole平滑重启服务
平滑重启: 已经打开的服务: 首先在server服务中为进程添加名字: /** * @param $server */ public function onStart($server) { swool ...