移动端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 ...
随机推荐
- 简单模拟B1011
#include<iostream> using namespace std; int main() { int n; long long a,b,c; cin >> n; ; ...
- Eclipse上传Git远程仓库,并且增加Maven Dependencies
前言: 遇见问题了,公司一台电脑,家里一台电脑,当有项目在进行的时候,又不想把电脑背来背去的,就像一个人玩单机,这个时候GIT就可以帮你解决这个问题.当GIT准备就绪的时候,新的问题来了git下载下载 ...
- 17.3.12---logging日志模块level配置操作
1----logging日志记录模块的使用和配置 logging模块我们不需要单独再安装,经常要调试程序,记录程序运行过程中的一些信息,手工记录调试信息很麻烦,所以python的logging模块,会 ...
- 豆瓣爬虫Scrapy“抄袭”改写
主要是把项目从docker里面扒拉出来,但是扒拉完好像又没有什么用,放在docker里面运行多好. 源码下载下面主要记一下改动的地方吧. 配置:在database.py中改掉自己的数据库配置. 表结构 ...
- JavaScript学习笔记 - 入门篇(2)- 常用互动方法
输出内容(document.write) document.write() 可用于直接向 HTML 输出流写内容.简单的说就是直接在网页中输出内容. 第一种:输出内容用""括起,直 ...
- leetcode 746. 使用最小花费爬楼梯
题目: 数组的每个索引做为一个阶梯,第 i个阶梯对应着一个非负数的体力花费值 cost[i](索引从0开始). 每当你爬上一个阶梯你都要花费对应的体力花费值,然后你可以选择继续爬一个阶梯或者爬两个阶梯 ...
- drf三大认证补充
频率认证 源码分析部分 def check_throttles(self, request): for throttle in self.get_throttles(): if not throttl ...
- java合并一个文件夹下所有txt文件,输出到另一个txt
最近写了个单元测试,递归调用方法,把同一个文件夹里所有的txt合并输出到一个txt文件.参考了两个博客,分别是已有的方法,还有个就是检测txt文件所用编码的技术贴.如果不检测txt文件的编码,那么转换 ...
- iTOP-4418开发板Qt Creator 编译注意事项
用“Qt Creator3.2.2”打开“qt4.7.1”环境下的工程文件可能会提示版本太旧.环境不匹 配导致程序无法编译,解决办法:建立新的工程把测试程序代码粘贴上去即可(界面需要自己 添加). 在 ...
- 统计学中比较重要的分布及python中使用方法
比较重要的四种分布:正态分布.卡方分布.F分布.t分布 卡方分布概率密度曲线 t分布概率密度曲线 F分布概率密度曲线 参考资料: 统计学中四个概率分布 重要抽样分布