接受并同意 cmets 这是一个边界编码问题/答案,我将尝试在编码上下文中提供答案(ish...),或者至少参考开发人员通常可能使用的工具用于调试此类问题。
调试此类问题很棘手,但使用调试器工具会有所帮助 - 您可以将手机连接到 Mac/PC 并使用 Chrome 或 Safari 开发人员工具查看控制台和网络流量以尝试查看此类错误的原因。示例链接(在撰写本文时是正确的,但如果链接中断/移动,摘要是:附加设备,启用 USB 调试;单击设备选项卡中的检查按钮以打开工具以检查设备)在此处获取有关 Chrome 开发人员工具的说明:
在您的情况下,这样做会表明该网站正在正常加载(预计会出现不相关的 HTTPS css 问题)。
您还可以查看页面源并找到视频 URL,然后从工具窗口打开一个选项卡,直接在移动浏览器上播放视频。
在您的情况下,视频无法播放。
查看页面源代码还可以让您看到正在使用的视频播放器,如果 mediaelement.js - 大多数网络视频播放使用除了视频标签之外的某种形式的 HTML5/javascript 播放器。
这个播放器是开源的 (https://github.com/mediaelement/mediaelement),所以可以在 GitHub 上检查代码,它提供了在整个版本的存储库中搜索文本字符串的能力。检查错误字符串甚至它的一部分会很快表明该错误不是由播放器生成的(或者不是当前版本——如果你想小心一点,你可以确保并检查网页中使用的任何版本)。
这表明问题出在底层浏览器或设备视频支持本身。
下载视频并使用 ffprobe (https://ffmpeg.org/ffprobe.html) 查看其属性会显示输出,包括以下内容:
Input #0, mov,mp4,m4a,3gp,3g2,mj2, from 'sbsfilm.mp4':
Metadata:
major_brand : mp42
minor_version : 0
compatible_brands: mp42mp41
creation_time : 2017-11-23T19:23:40.000000Z
Duration: 00:02:06.93, start: 0.000000, bitrate: 10311 kb/s
Stream #0:0(eng): Video: h264 (High) (avc1 / 0x31637661), yuv420p(tv, bt709), 1920x1080 [SAR 1:1 DAR 16:9], 9989 kb/s, 25 fps, 25 tbr, 25k tbn, 50 tbc (default)
这里的关键信息是“High”部分,这意味着它是 H.264 High profile 视频。 H.264 具有不同的配置文件和许多不同的潜在设置和选项,因此我们不能只说设备会播放 H.264,而是需要查看更多细节。
查看 Android 支持的媒体类型(在撰写本文时再次...)表明 High Profile 不在列出的支持类型中 (https://developer.android.com/guide/topics/media/media-formats.html):
这很可能是您的问题 - 如果您将视频重新编码为 H.264 Main 或 Baseline 配置文件并重试,视频应该可以在移动设备上运行(baseline 是最受支持的,但不提供良好的压缩作为 Mainline,因此您可能需要进行试验以找到最适合您需求的匹配项)。