说说Cordova实现拍视频和从相册选取视频功能过程中要踩的坑

这里不上代码,也不说实现细节,只说说这一路上踩的坑……

视频拍摄

我是用cordova-plugin-media-cature插件来做视频拍摄的,遇到一个问题就是拍完返回的时候界面卡住了,有时候还出现程序崩溃的情况,这问题找了很久,甚至觉得是插件和手机版本不兼容,毕竟插件最后一次更新是在三年前,后来在cordova-plugin-camera插件文档中找到了这个描述

 原来是我在回调函数里加了个alert来查看返回情况,这做法有点low,一般来讲,打印到控制台的话一般不会出现这种问题的,但是既然ios出现了这种限制,就在这里做一个记录吧。

拉起摄像机程序奔溃

找到原因发现是漏掉了对麦克风的授权

 按要求设置在config.xml

如果还是不行的话,就直接到 ** -info.plist 文件下去添加设置,例如下面

ios 中使用video播放视频时会自动全屏播放 

查了一下,网上很多人都说在video标签上加上两属性

但是没啥用,后来发现应该在config.xml中进行配置

 假如还是没用,则来这里配置

 这样应该就不会存在这个问题了。

相同的视频链接在ios上无法播放

首先,我们要知道的是,在ios内嵌的webview和Safari上,video标签播放视频是采用分段请求的方式进行的,而其它浏览器或者android则没有这种限制,所以要解决这种问题就必须在服务器响应请求时查看请求头中是否存在Range字段,有的话说明是分段请求,这时就不能返回整个视频数据,而是返回相应的数据段;当没有Range字段时,则返回整个视频数据。

下面我用nodejs实现的一个响应程序

在这之后,基本没有这个问题了。

选取视频返回路径后根据resolveLocalFileSystemURL获取文件时报FileError错误

视频选取插件我是使用cordova-plugin-camera来实现的,它返回一个路径,但是这路径虽然看起来没毛病,实际上很快就失效了,以致于文件管理器无法找到文件,所以报错,这个问题的解决方法是在cordova-plugin-camera的issues中找到的

 它的解决方法如下

找到圈红的两个文件,分别在圈绿的位置上加上上面的两行代码。

两文件位置

到这里两功能的实现就基本没问题了,第一次搞,要踩的坑比较多, 可能比较菜的原因,不过也是一个很好的学习过程,继续加油吧。

猜你喜欢

转载自blog.csdn.net/HU_YEWEN/article/details/120204814