20

奇怪的是,有些 MP4 文件可以在 HTML5 中播放,而有些则不会。这是一个测试页面http://psdtucss.com/test/test2.html,在 Chrome 19.0.1084.46 m 中打开。第一个 MP4 播放,但另一个不会。什么原因。代码非常简单:

<h3>the first mp4 file can play</h3> 
<p><video width="640" height="264" controls="controls"><source src="1.mp4" type="video/mp4" />Your browser does not support the video tag.</video></p> 
<h3>but the other can't play</h3> 
<p><video width="640" height="264" controls="controls"><source src="2.mp4" type="video/mp4" />Your browser does not support the video tag.</video></p>

我怎样才能解决这个问题?

我尝试了 videojs,但仍然无法播放一些 MP4 文件。测试页面在这里: http: //psdtucss.com/test/test.html

4

4 回答 4

19

mp4 只是容器格式。它可能包含许多不同编解码器中的视频和音频。播放器(包括浏览器中的播放器)需要支持容器格式和所有使用的编解码器才能正确播放视频。

使用 VideoJS 绝对是一个好主意,它为您处理了许多特定于浏览器的解决方法。


然而,它并没有解决一个问题:所有浏览器都不支持单一的视频编解码器。(另见维基百科:HTML5 视频:Browser_support

实际的解决方案可能是提供两个版本:mp4 容器中的 h264 和通常称为 webm(特定 Matroska 容器中的 VP8 视频和 vorbis 音频)的版本。有了这两个,您就可以覆盖所有主要的浏览器。


对于视频转换/重新编码,有一些可用的工具和服务。我不知道您的操作系统或要求。所以就像一个疯狂的猜测:

我曾经帮助一个朋友在他的小博客上发布一些视频的东西是这个使用 ffmpeg进行转换的shell 脚本。它仍然有很大的改进潜力(在所有视频质量、性能和编码方面),但应该足以开始使用。

于 2012-07-21T01:04:31.033 回答
12

第一个视频使用 h264 编码,除 Firefox 和 Opera 之外的所有软件都支持该编码。第二个视频使用浏览器不支持的 MPEG-4 视频编解码器。唯一广泛支持的视频编解码器是 Theora、H.264 和 VP8。

MPEG-4 Part 2视频编解码器不同于MPEG-4 Part 14容器格式

于 2012-07-21T01:18:14.090 回答
9

您的视频 1.mp4 使用 h.264 编码,但视频 2.mp4 不是。获取 MediaInfo 以检查它。

于 2012-11-03T16:12:51.607 回答
3

MP4 支持多种编解码器。有些播放器不支持所有编解码器(有些代码需要许可,或者有些编解码器是在编写浏览器后发布的)。

于 2012-07-21T00:58:55.000 回答