Video.js 中的 MP4 在完全加载之前不会播放

Posted

技术标签:

【中文标题】Video.js 中的 MP4 在完全加载之前不会播放【英文标题】:MP4 in Video.js not playing until fully loaded 【发布时间】:2012-11-22 05:26:34 【问题描述】:

我正在使用 Video.js 在客户的网站上播放 MP4 格式的视频。 该播放器使用 html5 视频和 Adob​​e Flash Player 作为后备。 (就我而言,它似乎总是使用 Flash,所以我不知道原生 html5 播放器中是否也存在问题。)

视频只有在 *.mp4 文件完全加载后才开始播放。所以几秒钟没有缓冲。该文件必须在开始播放之前由浏览器完全下载。

当视频很长时,访问者必须等待很长时间才能看到视频正在播放。

现在的问题是,是浏览器、脚本 (video.js) 还是视频文件造成了这个问题。

在 videojs.com 网站上,但是视频在加载时正在播放,因此可以正常工作。所以我认为它不可能是浏览器。

还有其他人遇到过这个问题吗?我该如何解决这个问题? 非常感谢任何建议!

谢谢

最大

【问题讨论】:

有什么相关的代码可以加吗? 【参考方案1】:

这是因为mp4文件的moov atom在文件的末尾,播放器在开始播放前需要知道moov atom,你可以用MP4Box轻松地将moov atom移动到文件的开头,那里是 Windows 的 gui 版本。

在 Linux 命令行中,您可以使用以下命令移动 MA:MP4Box -add my_video.mp4 my_newVideo.mp4

这需要几秒钟。

更多信息:Adobe对moov atom的解释here

【讨论】:

要添加到这个答案,如果你在 Linux 上并且没有安装 MP4Box,你也可以使用我相信 ffmpeg 附带的 'qt-faststart' 来做到这一点 我不止一次回到这个答案。再次感谢! 下载 MP4Box(GPAC 的一部分)的快速链接:gpac.wp.imt.fr/downloads/gpac-nightly-builds 不反对,因为这似乎是某些人的解决方案,但对我来说,它没有帮助。【参考方案2】:

您确定您的标签带有 preload="none",因为我遇到了同样的问题并且我有 preload="auto"。我把它改成了“无”,效果很好!!

我的问题与 moov atom 无关,因为我也尝试过,但没有任何效果。我什至删除了这个转换后的视频,它仍然可以使用 preload="none"。

kjsharks

【讨论】:

这对我有用,非常感谢。在网页设计中使用视频时的快速提示。确实保持视频简短,必要时有一个很好的微妙循环,但 preload="none" 是跨浏览器修复它的原因。【参考方案3】:

我使用这个命令来添加元数据:

MP4Box -isma your-file.mp4

;)

【讨论】:

【参考方案4】:

引用http://docs.videojs.com/docs/guides/options.html

预加载属性通知浏览器是否应该在加载视频标签后立即开始下载视频数据。选项有自动、元数据和无。

【讨论】:

那个链接已经不存在了。

以上是关于Video.js 中的 MP4 在完全加载之前不会播放的主要内容,如果未能解决你的问题,请参考以下文章

video.js为啥有的视频可以播放,有的视频不能播放mp4格式 mp4视频格式都转成了h264和AAC,

有没有办法在完全加载之前告诉 .ogg 视频的文件大小?

视频未在 video.js 中播放,但直接链接有效

在用作另一个函数中的回调函数之前,函数不会完全初始化

Video.js无法播放本地视频?

使用ffmpeg转码的MP4文件需要加载完了才能播放的解决办法