显示问题的示例视频:https://gget.it/io64/h264test13576.mp4 - 你可以在 Safari 上播放吗?
我在 HTML 页面上有一个视频
<video controls><source src="/files/test.mp4"></video>
它可以在 PC(Firefox、Chrome 等)上运行,但遗憾的是它不能在 iPhone Safari 上运行(我手头没有,所以很难调试):不是视频,而是灰色背景。
阻止 MP4 视频在 iPhone 版 Safari 上播放的常见原因有哪些?
注意:我尝试过各种方法,例如:
controls
=> controls="true"
如HTML5 视频标签在 Safari、iPhone 和 iPad 中不起作用(不重复) 中所述
添加
playsinline
从
<video ...><source src="..."></video>
更改为<video ... src="...">
但是问题依然存在。
Safari 不喜欢
moov
原子不在文件开头。
ffprobe -v trace -i h264test13576.mp4 2>&1 | grep -e 'mdat' -e 'moov'
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x14a704930] type:'mdat' parent:'root' sz: 592695 56 597025
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x14a704930] type:'moov' parent:'root' sz: 4282 592751 597025
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x14a704930] type:'mvhd' parent:'moov' sz: 108 8 4274
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x14a704930] type:'trak' parent:'moov' sz: 1943 116 4274
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x14a704930] type:'trak' parent:'moov' sz: 2105 2059 4274
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x14a704930] type:'udta' parent:'moov' sz: 118 4164 4274
这解决了它:
ffmpeg -i h264test13576.mp4 -movflags faststart -c copy updated.mp4
ffprobe -v trace -i updated.mp4 2>&1 | grep -e 'mdat' -e 'moov'
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x140605150] type:'moov' parent:'root' sz: 4022 40 596757
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x140605150] type:'mvhd' parent:'moov' sz: 108 8 4014
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x140605150] type:'trak' parent:'moov' sz: 2200 116 4014
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x140605150] type:'trak' parent:'moov' sz: 1609 2316 4014
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x140605150] type:'udta' parent:'moov' sz: 97 3925 4014
[mov,mp4,m4a,3gp,3g2,mj2 @ 0x140605150] type:'mdat' parent:'root' sz: 592695 4070 596757