为什么有些MP4文件不能通过HTML5播放?

时间:2012-07-21 00:55:35

标签: html5 video html5-video

奇怪的是,一些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 个答案:

答案 0 :(得分:18)

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

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


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

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


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

我曾经帮助朋友在他的小博客上发布一些视频的内容this shell script using ffmpeg进行转换。它仍然有很大的改进潜力(在所有的视频质量,性能和编码方面),但应该足够好开始。

答案 1 :(得分:8)

第一个视频使用h264编码,除了Firefox和Opera之外的所有内容都支持这种编码。第二个视频使用浏览器不支持的MPEG-4视频编解码器。唯一受到广泛支持的视频编解码器是Theora,H.264和VP8。

MPEG-4 Part 2视频编解码器与MPEG-4 Part 14容器格式

不同

答案 2 :(得分:8)

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

答案 3 :(得分:3)

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