这确实令人困惑,我们怀疑是iOS错误。
情况:
[我们有一个视频内容网站,我们将视频托管为mp4
,用户可以播放它们。这些视频在浏览器的HTML5播放器中内联显示。通常,用户会在同一页面上显示多个视频。
问题
[我们开始在iOS设备上从某些用户那里收到报告,其中一小部分视频显示为无法播放,如下所示:
现在,在屏幕上的所有视频中,只有少数几个不会发生这种情况。在非iOS设备上观看视频时,一切都很好;所有视频均可播放。对于这些用户,无论在该设备上使用什么浏览器都没有关系,也会发生同样的问题。
我们研究的内容
首先,我们研究了与Safari(和iOS)相关的常见HTML5视频播放问题。诸如确保服务器正在响应Range
请求并包括playsinline
之类的事情。请求和响应看起来不错,这是有道理的,因为这些视频都被转码成相同的格式并托管在同一台服务器(数字海洋空间)上。
一旦我们能够在iOS上重现此问题,我们就会发现它不是视频标签;甚至在浏览器中直接访问mp4
(没有HTML)(与哪一个无关)都将不起作用:
这将支持在任何浏览器上均不起作用的想法。这是我们在测试中发现的一些令人困惑的细节(我们正在使用在线服务进行测试,该服务可让我们访问iOS模拟器):
[当您搜索Apple论坛时,有很多关于视频播放的近期问题,更多是围绕13.4更新。
示例
我们能够用股票视频重新创建它。仅就上下文而言,我们花了大约16部视频才获得1项失败。
[当我们访问iOS模拟器(iPhone XS,iOS 12.4)中的“不工作”链接时,每次都会失败。
无论如何,我们对于如何解决此问题已无足够的想法,也许只是想确认一下这可能是iOS的已知问题。有人经历过吗?
非工作文件是yuv422色彩空间(请参见下面的Chroma subsampling : 4:2:2
)。大多数硬件(因此是移动设备)解码器只能播放yuv420。必须将文件转码为支持的色彩空间。
Video
ID : 1
Format : AVC
Format/Info : Advanced Video Codec
Format profile : High 4:2:[email protected]
Format settings : CABAC / 4 Ref Frames
Format settings, CABAC : Yes
Format settings, Reference frames : 4 frames
Codec ID : avc1
Codec ID/Info : Advanced Video Coding
Duration : 16 s 984 ms
Bit rate : 2 760 kb/s
Width : 720 pixels
Height : 496 pixels
Display aspect ratio : 4:3
Frame rate mode : Constant
Frame rate : 29.970 (30000/1001) FPS
Color space : YUV
Chroma subsampling : 4:2:2
Bit depth : 8 bits
Scan type : Progressive
Bits/(Pixel*Frame) : 0.258
Stream size : 5.59 MiB (100%)
Writing library : x264 core 157 r2969 d4099dd
Encoding settings : cabac=1 / ref=1 / deblock=1:0:0 / analyse=0x3:0x113 / me=hex / subme=2 / psy=1 / psy_rd=1.00:0.00 / mixed_ref=0 / me_range=16 / chroma_me=1 / trellis=0 / 8x8dct=1 / cqm=0 / deadzone=21,11 / fast_pskip=1 / chroma_qp_offset=0 / threads=15 / lookahead_threads=3 / sliced_threads=0 / nr=0 / decimate=1 / interlaced=0 / bluray_compat=0 / constrained_intra=0 / bframes=3 / b_pyramid=2 / b_adapt=1 / b_bias=0 / direct=1 / weightb=1 / open_gop=0 / weightp=1 / keyint=250 / keyint_min=25 / scenecut=40 / intra_refresh=0 / rc_lookahead=10 / rc=crf / mbtree=1 / crf=23.0 / qcomp=0.60 / qpmin=0 / qpmax=69 / qpstep=4 / ip_ratio=1.40 / aq=1:1.00
Color range : Full
Codec configuration box : avcC
模拟器有时可以工作,因为它们在软件中模拟解码器。许多软件解码器都支持4:2:2