为什么我录制的MP4视频在本地可以播放但是使用html5的video多媒体播放标签不能正常播放只有一个进度条而不显示图像?
为了避免大家遇到同样的问题我在这里就给大家普及一下html5关于<video>标签的知识吧。
在使用html4协议做网站时我们想要在网页上播放一个视频要不使用flash去播放,要么就是嵌入式页面来实现,对于html5来说这两种方法非常的不方便因为一个牛逼哄哄的<video>出现了,这个标签的功能就是让多媒体文件可以很方便的在网页中播放。
html中播放一个视频只需要一个标签:
<video src="http://sp.ntaotu.com/localhost-wordpress-phpstudy.mp4" controls="controls" width="500" height="300"></video>
代码虽然少了很多,但是功能却很健全,这就是html5的亮点之一吧!
关于<video>标签所支持的视频格式和编码:
MP4 = MPEG 4文件使用 H264 视频编解码器和AAC音频编解码器
WebM = WebM 文件使用 VP8 视频编解码器和 Vorbis 音频编解码器
Ogg = Ogg 文件使用 Theora 视频编解码器和 Vorbis音频编解码器
通过上面的信息我们会发现只有h264编码的MP4视频(MPEG-LA公司)、VP8编码的webm格式的视频(Google公司)和Theora编码的ogg格式的视频(iTouch开发)可以支持html5的<video>标签。
如果浏览器不支持video标签怎么办?
比如IE浏览器还有老版本的浏览器对html5的支持不太好,当用户用这些浏览器打开我们带有视频的网页怎么办呢?
我们可以把代码这样写:
<video src="http://sp.ntaotu.com/localhost-wordpress-phpstudy.mp4" controls="controls" width="500" height="300">您的浏览器不支持播放该视频!</video>
这样在不支持html5的浏览器中就会提示“您的浏览器不支持播放该视频!”啦!
关于video标签的扩展参数说明:
video 元素允许多个 source 元素。source 元素可以链接不同的视频文件。浏览器将使用第一个可识别的格式,这样我们只要多准备几个不同格式的视频就可以了。
用法:
1, <video width="500" height="250" controls="controls">
2, <source src="movie.ogg" type="video/ogg">
3 <source src="movie.mp4" type="video/mp4">
4,您的浏览器不支持此种视频格式。
5, </video>
1, autoplay :出现该属性意味着视频在就绪后将自动播放,用法:autoplay="autoplay"
2, controls :出现该属性意味着向用户显示控件,如播放按钮等,用法:controls="controls"
3, height:设置高度 width:设置宽度
4, loop:自动重播,用法:loop="loop"
5, preload:视频在页面加载时进行加载并预备播放,用法:preload="auto" - 当页面加载后载入整个视频;preload="meta" - 当页面加载后只载入元数据;preload="none" - 当页面加载后不载入视频。注意:若使用了autoplay,则忽略preload
6, src:要播放视频的url
mp4网页播放有声音无图像的解决办法:
关于网页播放mp4格式的视频,找了一些插件,这里推荐一下video.js
官方网址:http://www.videojs.com/
github :https://github.com/videojs/video.js/
demo:http://www.videojs.com/downloads/video-js-4.12.5.zip
使用方法:
①引入文件:指派flash播放的swf文件
<link href="//example.com/path/to/video-js.css" rel="stylesheet">
<script src="//example.com/path/to/video.js"></script>
<script>
videojs.options.flash.swf = "http://example.com/path/to/video-js.swf"
</script>
② 设置video参数(设置mp4视频地址)
<video id="example_video_1" class="video-js vjs-default-skin"
controls preload="auto" width="640" height="264"
poster="http://video-js.zencoder.com/oceans-clip.png"
data-setup=‘{"example_option":true}‘>
<source src="http://video-js.zencoder.com/oceans-clip.mp4" type=‘video/mp4‘ />
<source src="http://video-js.zencoder.com/oceans-clip.webm" type=‘video/webm‘ />
<source src="http://video-js.zencoder.com/oceans-clip.ogv" type=‘video/ogg‘ />
<p>To view this video please enable JavaScript, and consider upgrading to a web browser that <a href="http://videojs.com/html5-video-support/" target="_blank">supports HTML5 video</a></p>
</video>
使用demo里面的mp4视频源,播放一切正常,换上自己的mp4源发现只有声音并没有图像。这让我很为难。
想来想去这跟插件没关系,跟浏览器没有关系,跟自己视频源的格式编码有关系。
找了很多办法,尝试过swf播放,但是mp4转码成swf格式,失真太严重,导致视频很模糊,质量很糟糕。
下载了格式工厂,尝试着转换了很多格式,都不尽人意。
发现mp4的视频编码有三种:MPEG4(DivX),MPEG4(Xvid),AVC(H264),我使用格式工厂一个一个尝试。
最终发现转换成AVC(H264)编码,完美解决问题。
总结:网页播放mp4视频,出现有声音无图像问题,先使用格式工厂转换mp4->mp4格式,输出编码选择AVC(H264),然后在网页中代码调用,看是否解决问题。