移动端Video标签踩坑记录
需求
用户能在手机上上传视频并预览。
问题
- 上传完成后安卓下封面展示正常,ios下封面空白。如下图所示:

- 利用canvas截取视频第一帧发现,ios下截取到的第一帧一直是空白图片, 安卓正常。
- 后端利用javacv库截取,返回给前台封面图,ios竖屏拍摄下的视频截取到的图片有90度旋转,javacv库无法取得旋转信息,但是控制台打印出的视频元信息带有旋转信息。安卓无论横屏竖屏都没有旋转。
解决方案
- 上述的前两个问题,ios下html开发的文档中指出了video标签只有用户触发了playback才会展示封面图,否则建议指定poster,参考链接如下
https://developer.apple.com/library/archive/documentation/AudioVideo/Co 大专栏 移动端Video标签踩坑记录nceptual/Using_HTML5_Audio_Video/Device-SpecificConsiderations/Device-SpecificConsiderations.html#//apple_ref/doc/uid/TP40009523-CH5-SW1
那么既然要触发播放,我就想到利用js模拟click事件之后截取第一帧,发现依然是空白,于是放弃用后台截取。
这里如果前端能实现利用第一帧作为封面图,那么视频上传预览时,完全不必要把视频传到后端了,利用URL.createObjectURL这个api可以轻松做到前端预览,但是由于这个封面问题只能上传到后端。 - 后端利用javacv轻松截取到,但是竖屏拍摄图片旋转的问题难以解决。不知道为何getMetaData获取到的永远是个空的map,但是控制台红色输出的信息中又包含了各种元信息,虽然怀疑是java调用c的api出了问题,但是水平实在不够,于是只能放弃。最终由于时间紧,也没要求到必须旋转回来,毕竟空白问题解决,所以只能草草了之。但是也预备了个方案,继续寻找第三方能获取到视频元信息的依赖,这条路肯定是可以走通的。
总结
移动端的坑还是挺多的,尤其是展示上的,除此以外就是考虑到wx这个大平台的展示,只能是碰到了就一点点的记录。但是随着技术的发展,这点小坑终将会被填平。
移动端Video标签踩坑记录的更多相关文章
- VUE使用微信JDK(附踩坑记录)
VUE使用微信分享SDK(附踩坑记录) 微信分享官方文档 安装JS-SDK npm i -S weixin-jsapi 引入包 ES5 写法 const wx = require('weixin-js ...
- 你真的了解字典(Dictionary)吗? C# Memory Cache 踩坑记录 .net 泛型 结构化CSS设计思维 WinForm POST上传与后台接收 高效实用的.NET开源项目 .net 笔试面试总结(3) .net 笔试面试总结(2) 依赖注入 C# RSA 加密 C#与Java AES 加密解密
你真的了解字典(Dictionary)吗? 从一道亲身经历的面试题说起 半年前,我参加我现在所在公司的面试,面试官给了一道题,说有一个Y形的链表,知道起始节点,找出交叉节点.为了便于描述,我把上面 ...
- SUCTF 2019 Upload labs 2 踩坑记录
SUCTF 2019 Upload labs 2 踩坑记录 题目地址 : https://github.com/team-su/SUCTF-2019/tree/master/Web/Upload La ...
- [技术博客]iview组件样式踩坑记录
[技术博客]iview组件样式踩坑记录 iview官方文档. 在本次项目开发中,前端项目主要使用vue框架+iview组件构建,其中iview组件在使用过程中遇到了许多官方文档中没有明确说明或是很难注 ...
- unionId突然不能获取的踩坑记录
昨天(2016-2-2日),突然发现系统的一个微信接口使用不了了.后来经查发现,是在网页授权获取用户基本信息的时候,unionid获取失败导致的. 在网页授权获取用户基本信息的介绍中(http://m ...
- CentOS7.4安装MySQL踩坑记录
CentOS7.4安装MySQL踩坑记录 time: 2018.3.19 CentOS7.4安装MySQL时网上的文档虽然多但是不靠谱的也多, 可能因为版本与时间的问题, 所以记录下自己踩坑的过程, ...
- ubuntu 下安装docker 踩坑记录
ubuntu 下安装docker 踩坑记录 # Setp : 移除旧版本Docker sudo apt-get remove docker docker-engine docker.io # Step ...
- SpringBoot + Shiro + shiro.ini 的踩坑记录
0.写在前面的话 好久没写博客了,诶,好多时候偷懒直接就抓网上的资料丢笔记里了,也就没有自己提炼,偷懒偷懒.然后最近参加了一个网络课程,要交作业的那种,为了能方便看下其他同学的作业,就写了个爬虫把作业 ...
- google nmt 实验踩坑记录
最近因为要做一个title压缩的任务,所以调研了一些text summary的方法. text summary 一般分为抽取式和生成式两种.前者一般是从原始的文本中抽取出重要的word o ...
随机推荐
- TCP_Wrappers简介
转载自:http://www.cnblogs.com/duzhaoqi/ TCP_Wrappers 简介 TCP_Wrappers是一个工作在第四层(传输层)的的安全工具,对有状态连接的特定服 ...
- mysql,apache,php的关系
首先要明白动态网站与静态网站 所谓的动态网页,是指跟静态网页相对的一种网页编程技术.静态网页,随着html代码的生成,页面的内容和显示效果就基本上不会发生变化了——除非你修改页面代码.而动态网页则不然 ...
- python 运算符 取余 取商 in not in
#运算符sum = 9//2 #取商print(sum) sum = 9%2 #取余print(sum) #inname1 = '小林'name2 = '林倩'if '林' in name1: pri ...
- 虚函数重载(overwrite) 继承覆盖问题
引言 类接口需要添加默认参数,以适应不同情况调用, 但是clang-tidy 不允许在接口上设置默认参数,ps: 可能担心继承类里接口重新设置新默认参数而导致误用的情况 #include <st ...
- Pycharm 安装 autopep8 工具
引言:此处能看到pep8 的详细介绍:https://www.python.org/dev/peps/pep-0008/.是 Style Guide for Python Code,python代码的 ...
- 【转】Rendering Problems The following classes could not be instantiated
xml 设计时警告 打开es/values/目录下styles.xml文件. 把:<style name="AppTheme" parent="Theme.AppC ...
- MySQL 基础知识梳理
MySQL 的安装方式有多种,但是对于不同场景,会有最适合该场景的 MySQL 安装方式,下面就介绍一下 MySQL 常见的安装方法,包括 rpm 安装,yum 安装,通用二进制安装以及源码编译安装, ...
- office 无法打开xlsx文件的问题
1. 设置content-type和header response.setContentType("application/vnd.openxmlformats-officedocument ...
- stopping service [tomcat],服务未启动
1. 在主类中添加日志打印,查看错误: 2. 我的错误是因为两个controller含有相同的路径
- 七种常见经典排序算法总结(C++实现)
排序算法是非常常见也非常基础的算法,以至于大部分情况下它们都被集成到了语言的辅助库中.排序算法虽然已经可以很方便的使用,但是理解排序算法可以帮助我们找到解题的方向. 1. 冒泡排序 (Bubble S ...