请输入关键字
2019-05 10

解决html5网页中video标签无法播放的方法

为什么我录制的MP4视频在本地可以播放但是使用html5video多媒体播放标签不能正常播放只有一个进度条而不显示图像?


为了避免大家遇到同样的问题我在这里就给大家普及一下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/

 

demohttp://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 class="vjs-no-js">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),然后在网页中代码调用,看是否解决问题。