记一次微信小程序开发,视频兼容问题
参考链接:https://www.jianshu.com/p/31f0593496ef

问题描述:

微信小程序 内嵌webview 利用video标签播放流媒体视频, 部分视频 报错 error

问题确认:安卓正常, 谷歌正常, mac safari 正常, egretIde报错, iphone 报错

解决过程:

有问题的视频 代码错误提示:TypeError: 'caller' and 'arguments' are restricted function properties and cannot be accessed in this context.

  1. 字面意思是调用错误,首先觉得是代码问题,先搜索上下文 没有相关调用
  2. 然后换了个视频地址 可以播放 . 有可能是兼容问题
  3. 谷歌浏览器打开没问题.mac safari 打开没有问题, egret ide 打开报错
  4. 最后用出问题的手机测试. Safari 直接打开 视频显示异常
  5. 出问题的手机 微信直接打开连接 也显示无法播放
  6. 定位问题: 可能是ios 兼容问题
  7. 然后 上网寻找解决方案

解决方案

h264编码的压缩级别问题导致。

苹果官方文档中对 ios 能支持的压缩级别进行了描述:
https://developer.apple.com/library/content/documentation/NetworkingInternet/Conceptual/StreamingMediaGuide/FrequentlyAskedQuestions/FrequentlyAskedQuestions.html

我们可以通过 potplayer等软件,查看对应的mp4文件的 压缩级别,如果 压缩级别高于苹果能支持的压缩级别,则会出现ios下无法播放的问题。

如果视频存放在 阿里云或者七牛云,可以使用 他们的 视频转码服务(一般是按量计费),转码为 h264 high 4.1 就基本可以支持
phone4s + 的苹果设备了。 如果 要兼容所有(包括iphone3gs 和 iphone4),那需要转为 baseline 3.1

具体的苹果设备支持的编码格式列表,可以参考这里:
http://www.cnblogs.com/tinywan/p/6404411.html

出问题的编码信息如下(potplayer查看):

可以看到 Format profile : High@L3.1

General
Complete name                  : C:\Users\17838\Documents\WXWork\1688853547747770\Cache\Video\2019-10\light_train_1_test.mp4
Format                         : MPEG-4
Format profile                 : Base Media / Version 2
Codec ID                       : mp42 (mp42/mp41)
File size                      : 5.68 MiB
Duration                       : 27 s 880 ms
Overall bit rate               : 1 708 kb/s
Encoded date                   : UTC 2019-08-17 09:31:40
Tagged date                    : UTC 2019-08-17 09:31:45
TIM                            : 00:00:00:00
TSC                            : 25
TSZ                            : 1Video
ID                             : 1
Format                         : AVC
Format/Info                    : Advanced Video Codec
Format profile                 : High@L3.1
Format settings                : CABAC / 4 Ref Frames
Format settings, CABAC         : Yes
Format settings, Reference fra : 4 frames
Format settings, GOP           : M=3, N=25
Codec ID                       : avc1
Codec ID/Info                  : Advanced Video Coding
Duration                       : 27 s 880 ms
Bit rate                       : 1 383 kb/s
Width                          : 1 002 pixels
Height                         : 708 pixels
Display aspect ratio           : 3:2
Frame rate mode                : Constant
Frame rate                     : 25.000 FPS
Color space                    : YUV
Chroma subsampling             : 4:2:0
Bit depth                      : 8 bits
Scan type                      : Interlaced
Scan type, store method        : Separated fields
Scan order                     : Bottom Field First
Bits/(Pixel*Frame)             : 0.078
Stream size                    : 4.60 MiB (81%)
Language                       : English
Encoded date                   : UTC 2019-08-17 09:31:40
Tagged date                    : UTC 2019-08-17 09:31:40
Color range                    : Limited
Color primaries                : BT.709
Transfer characteristics       : BT.709
Matrix coefficients            : BT.709
Codec configuration box        : avcCAudio
ID                             : 2
Format                         : AAC LC
Format/Info                    : Advanced Audio Codec Low Complexity
Codec ID                       : mp4a-40-2
Duration                       : 27 s 880 ms
Source duration                : 27 s 861 ms
Bit rate mode                  : Constant
Nominal bit rate               : 317 kb/s
Channel(s)                     : 2 channels
Channel layout                 : L R
Sampling rate                  : 48.0 kHz
Frame rate                     : 46.875 FPS (1024 SPF)
Compression mode               : Lossy
Source stream size             : 1.05 MiB (19%)
Language                       : English
Encoded date                   : UTC 2019-08-17 09:31:41
Tagged date                    : UTC 2019-08-17 09:31:41

扩展阅读:

2H264编码是什么:

通过某种特定的压缩技术,将某个视频格式的文件转换为另一种视频格式的文件的技术称为视频编码。h264是视频流中其中一种编码标准。H264编码profile & level 控制https://www.cnblogs.com/tinywan/p/6402007.html,这里面说到H264编码的压缩级别,从压缩比例来说,baseline< main < high,对于带宽比较局限的在线视频,可能会优先选择high。但是上文说到,部分mp4视频不能在ios上播放,是由于h264编码的压缩比导致的,那么我们怎么知道ios支持哪些压缩级别呢?

ffmpeg如何控制profile&level:

ffmpeg -i input.mp4 -profile:v baseline -level 3.0 output.mp4ffmpeg -i input.mp4 -profile:v main -level 4.2 output.mp4ffmpeg -i input.mp4 -profile:v high -level 5.1 output.mp4

如果ffmpeg编译时加了external的libx264,那就这么写:

ffmpeg -i input.mp4 -c:v libx264 -x264-params "profile=high:level=3.0" output.mp4

苹果的设备对不同profile的支持。

这里可以看到 是不支持上面出问题的 High@L3.1

微信小程序 webview mp4视频 在ios无法播放 安卓和谷歌浏览器正常相关推荐

  1. 微信小程序 - 将 MP4 视频下载保存到用户手机相册(网络路径 / 临时路径)

    前言 网上大部分教程代码都有大大小小的问题,另外代码没有注释非常乱. 本文将从 0 - 1 完成整个过程,将网络视频或临时路径的视频,保存到用户相册中, 已经进行苹果安卓真机测试,保证兼容性. 除了核 ...

  2. 微信小程序web-view 外部引用h5页面调用摄像头录制视频 配有提示音

    微信小程序web-view 外部引用h5页面调用摄像头录制视频 配有提示音 1.目前的需求是什么 2.都踩了那些坑 1.小程序 2.h5语音提示 3.语音合成声音录制不进去,ios有时候是麦克风,有时 ...

  3. 教你如何用手机下载视频号[微信小程序]中的视频

    ** 如何下载微信视频号**[微信小程序]**中的视频 ** 事情是这样的,因为近期所在工作单位要迎接检查,老板发了几个小程序视频给我,需要我把他下下来,我最初找了一下,并不能够找到下载按钮,就打算改 ...

  4. 微信小程序填坑 视频篇

    写了一年小程序,每天接受数万付费用户的考验,踩过小程序的坑数不胜数.先写一下视频篇,写一些会影响到用户正常看视频功能和影响业务主体流程的坑. 1.一些低端设备无法播放高清视频 1080p 需要接入转码 ...

  5. 微信小程序 RTMP 音视频 通话 ffmpeg_WebRTC与微信小程序音视频互通方案设计与实现...

    背景 在之前的WebRTC实时音视频通话之语音通话设计与实践中介绍了58 TEG部门基于 WebRTC 的实时音视频通话解决方案. 考虑到腾讯微信的小程序平台提供了音视频通话与直播的支持,如果能打通基 ...

  6. 微信小程序模仿开眼视频app(一)——视频首页、视频详情、分类

    可到我的github账号上去copy文件 先展示一下我实现了的功能吧 提示,如果有出现无法加载域名之类问题的的,可以在"设置"-"项目设置"-打钩"不 ...

  7. 微信小程序实战开发视频

    微信小程序实战开发视频: 链接:http://pan.baidu.com/s/1jIAwBLs     密码:ej3b

  8. 使用Filler4提取微信小程序中的视频

    因为需要做防范电信网络诈骗的宣传,但是相关视频网站的内容都不适合宣传使用,最后在微信小程序搜索到一些合适的内容,但是微信小程序的视频不能直接下载,就考虑通过获得文件地址直接下载. 1.机器环境 系统: ...

  9. 视频教程-微信小程序快速入门视频课程-微信开发

    微信小程序快速入门视频课程 北京八维研修学院技术工程师,5年大型项目实战开发经验,3年授课经验. 孟宪杰 ¥168.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 AP ...

最新文章

  1. robot向linux发送命令,linux发送手机短信 利用fesion robot
  2. cin 和 getline 混用中需要注意的问题
  3. ExtJS 等待两个/多个store加载完再执行操作
  4. 三行代码实现阿拉伯数字转中文大小写转
  5. myeclipse搭建php,MyEclipse配置JDK类库的简易流程
  6. hdu 2531 Catch him
  7. oracle raise_application_error,RAISE_ APPLICATION_ ERROR--之异常处理
  8. android 外部内容分享到app内,外部跳转APP
  9. 分布式精华问答 | 如何实现分布式系统的高可用性?
  10. HTML图形映射技术
  11. vim 保存文件的回车换行模式
  12. mysql8.0下载64位_MySQL数据库8.0
  13. Mathematical operation
  14. 微信开发平台对接流程(Java版本)1
  15. ORACLE 数据泵之NETWORK_LINK
  16. 股票数据开源接口-陆股通持股
  17. 基于SSM的校园医务室系统
  18. HiveQL的基础操作全集
  19. 大数据带来新机遇:如何利用大数据技术优化跨境电商运营?
  20. python excel sheet_人生苦短我学Python——Excel处理之快速创建多个Sheet并重命名

热门文章

  1. BMP位图格式详解二--转载
  2. android的卡怎么打开不了图片,手机sim卡读不出来怎么办【图文教程】
  3. android web hook,webhook
  4. Cocos2D-X屏幕适配新解
  5. 关于组合数据类型的基础知识学习总结
  6. 电脑无法上网,怎么处理?
  7. 黑马程序员 飞机大战 笔记 上
  8. java fel_FEL表达式的用法
  9. substance designer 使用iray渲染置换效果
  10. MathType的标尺栏与公式对齐