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

默认用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. jupyter|魔法函数问题| UsageError: Line magic function `%` not found

    问题: jupyter notebook 使用魔法函数% matplotlib inline,报错:UsageError: Line magic function `%` not found 解决: ...

  2. 廖雪峰Java16函数式编程-2Stream-7其他操作

    1. 排序 Stream<T> sorted(); //按元素默认大小排序(必须实现Comparable接口) Stream<T> sorted(Comparator<? ...

  3. ~/.bashrc的常用alias设置,30 个方便的 Bash shell 别名

    centos6.5/centos7系统中,alias定义在/etc/bashrc,分别写在/etc/profile.d/*.sh中,可以在此目录添加my.sh,或者~/.bashrc,或者~/.bas ...

  4. JS 基本的介绍

    JS中的注释   HTML的注释:<!—注释内容-->   CSS注释:/* 注释 */   JavaScript的注释:// 或 /*  多行注释 */ 变量 1.变量的概念 变量是变化 ...

  5. PAT甲级——A1111 Online Map【30】

    Input our current position and a destination, an online map can recommend several paths. Now your jo ...

  6. winform程序捕获全局异常,对错误信息写入日志并弹窗

    使用场景:在winform程序中如果没对方法进行try catch操作,若方法内出错,则整个程序报错并退出,如下图 如果程序已在客户手中,若没对错误的详细信息进行拍照,我们则不知道错误原因是什么.我们 ...

  7. Spring 基于Aspectj切面表达式(6)

    1 package com.proc; 2 3 import org.aspectj.lang.JoinPoint; 4 import org.aspectj.lang.ProceedingJoinP ...

  8. WPF实现Drag/Drop操作

    原文:WPF实现Drag/Drop操作 有时候我们方便用户操作,总会把一下Copy/Paste 或者 input操作转换为Drag/Drop, WPF 跟之前WinForm 一样提供了一些实现方式方便 ...

  9. Echarts——更改仪表盘方向和颜色

    做小项目需要用到仪表盘,官方给出的颜色设置如下: 而我想要如下样式的: 最后,经过一番折腾算是搞成了如下样式效果: 要达到上面效果关键在于设置Echarts的如下两处js代码: 1.大小值要颠倒,因为 ...

  10. Linux用户管理 (3)

    用户管理 1 用户添加 基本语法 useradd [选项] 用户名 添加一个用户: 注意事项 1)当用户创建成功后,会自动的创建和用户同名的家目录 2)也可以通过 useradd -d 指定目录 新的 ...