奇怪的是,一些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
答案 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支持多种编解码器。有些播放器不支持所有编解码器(某些代码需要许可,或者在编写浏览器后发布了一些编解码器)。