前端离职,让我写个视频播放页面,木办法只有我来搞了。

默认用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全屏问题的更多相关文章

  1. 点击图片video全屏

    <!doctype html> <html> <head> <meta charset="utf-8" /> <title&g ...

  2. 解决微信浏览器video全屏的问题

    解决微信浏览器video全屏的问题 在微信浏览器里面使用video标签,会自动变成全屏,改成下面就好了,起码可以在video标签之上加入其他元素. <video id="videoID ...

  3. 利用gulp解决微信浏览器缓存问题

    做了好多项目,这次终于要解决微信浏览器缓存这个令人头疼的问题了.每次上传新的文件,在微信浏览器中访问时,总要先清除微信的缓存,实在麻烦,在网上搜罗了很多解决办法,终于找到了方法:利用gulp解决缓存问 ...

  4. H5 video全屏与取消全屏兼容

    H5 video全屏与取消全屏各浏览器兼容,  requestFullscreen()全屏方法,exitFullscreen()退出全屏方法.兼容各个浏览器与css3兼容一样加个前缀即可. // 全屏 ...

  5. vue video全屏播放

    需求: 1.视频为长方形,页面初始化打开为横屏全屏播放视频. 2.微信不支持自动播放,故自动播放需求删除. 方法: 1.vue-video-player插件 因需求较简单,仅要求播放本地一个视频,故未 ...

  6. 实现微信浏览器内打开App Store链接(已被和谐,失效了)

    微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”http://itunes.apple.com/us/app/id399608199″& ...

  7. 实现微信浏览器内打开App Store链接

    http://www.ildsea.com/1781.html 微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”http://itune ...

  8. [转]实现微信浏览器内打开App Store链接

    微信浏览器是不支持打开App Store 页面的,不知道微信为什么这么做.比如你页面写 <a href=”http://itunes.apple.com/us/app/id399608199″& ...

  9. 微信浏览器内建的WeixinJSBridge 实现“返回”操作

    微信浏览器内建的WeixinJSBridge 实现“返回”操作 WeixinJSBridge.call('closeWindow');

随机推荐

  1. Javascript加载talbe(包含分页、数据下载功能)

    效果图如下: 首先简单说明一下,后面会给所涉及到的代码都贴上来的. 1.excel图标是一个用户控件,用来触发下载 2.首页.上页......每页多少条,这一块是一个整体,你可以选择放置在表格下面,或 ...

  2. thjinkphp 变量调试

    输出某个变量是开发过程中经常会用到的调试方法,除了使用php内置的var_dump和print_r之外,ThinkPHP框架内置了一个对浏览器友好的dump方法,用于输出变量的信息到浏览器查看. 大理 ...

  3. Eclipse中如何使用Hibernate

    首先创建一个java web项目,其目录如下: (1)创建文件夹hibernate4(用于存放下载的hibernate工具包lib/required文件夹下所有的jar包),jar包目录如下: (2) ...

  4. 11 Python Libraries You Might Not Know

    11 Python Libraries You Might Not Know by Greg | January 20, 2015 There are tons of Python packages ...

  5. 多进程并发socket通信

    实现多个客户端同时接入server端,并且可以同时向客户端发送信息 server端 def dunc(conn,client_addr): while True: data=conn.recv(102 ...

  6. MongoDB后台运行

    文章目录 命令方式(推荐) 命令行和配置文件方式 命令行: 配置文件: 命令方式(推荐) 如果想在后台运行,启动时只需添加 --fork函数即可. fork: 以守护进程的方式运行MongoDB. 指 ...

  7. day 67 Django基础三之视图函数

    Django基础三之视图函数   本节目录 一 Django的视图函数view 二 CBV和FBV 三 使用Mixin 四 给视图加装饰器 五 Request对象 六 Response对象 一 Dja ...

  8. POJ 2187 /// 凸包入门 旋转卡壳

    题目大意: 求最远点对距离 求凸包上的最远点对 挑战263页 #include <cstdio> #include <string.h> #include <algori ...

  9. 2、Zookeeper原理及应用汇总

    1 Zookeeper简介-分布式服务框架 ZooKeeper为分布式应用程序提供高效且可靠的分布式协调服务,提供的服务:配置管理.统一命名服务.分布式同步.组服务等,是Google Chubby的开 ...

  10. Hibernate的多对多映射

    一.创建Java工程,新建Lib文件夹,加入Hibernate和数据库(如MySql.Oracle.SqlServer等)的Jar包,创建 hibernate.cfg.xml 文件,并配置,配置项如下 ...