為什么我錄制的MP4視頻在本地可以播放但是使用html5的video多媒體播放標(biāo)簽不能正常播放只有一個(gè)進(jìn)度條而不顯示圖像?
為了避免大家遇到同樣的問(wèn)題我在這里就給大家普及一下html5關(guān)于<video>標(biāo)簽的知識(shí)吧。
在使用html4協(xié)議做網(wǎng)站時(shí)我們想要在網(wǎng)頁(yè)上播放一個(gè)視頻要不使用flash去播放,要么就是嵌入式頁(yè)面來(lái)實(shí)現(xiàn),對(duì)于html5來(lái)說(shuō)這兩種方法非常的不方便因?yàn)橐粋€(gè)牛逼哄哄的<video>出現(xiàn)了,這個(gè)標(biāo)簽的功能就是讓多媒體文件可以很方便的在網(wǎng)頁(yè)中播放。
html中播放一個(gè)視頻只需要一個(gè)標(biāo)簽:
<video src="http://sp.ntaotu.com/localhost-wordpress-phpstudy.mp4" controls="controls" width="500" height="300"></video>
代碼雖然少了很多,但是功能卻很健全,這就是html5的亮點(diǎn)之一吧!
關(guān)于<video>標(biāo)簽所支持的視頻格式和編碼:
MP4 = MPEG 4文件使用 H264 視頻編解碼器和AAC音頻編解碼器
WebM = WebM 文件使用 VP8 視頻編解碼器和 Vorbis 音頻編解碼器
Ogg = Ogg 文件使用 Theora 視頻編解碼器和 Vorbis音頻編解碼器
通過(guò)上面的信息我們會(huì)發(fā)現(xiàn)只有h264編碼的MP4視頻(MPEG-LA公司)、VP8編碼的webm格式的視頻(Google公司)和Theora編碼的ogg格式的視頻(iTouch開(kāi)發(fā))可以支持html5的<video>標(biāo)簽。
如果瀏覽器不支持video標(biāo)簽怎么辦?
比如IE瀏覽器還有老版本的瀏覽器對(duì)html5的支持不太好,當(dāng)用戶(hù)用這些瀏覽器打開(kāi)我們帶有視頻的網(wǎng)頁(yè)怎么辦呢?
我們可以把代碼這樣寫(xiě):
<video src="http://sp.ntaotu.com/localhost-wordpress-phpstudy.mp4" controls="controls" width="500" height="300">您的瀏覽器不支持播放該視頻!</video>
這樣在不支持html5的瀏覽器中就會(huì)提示“您的瀏覽器不支持播放該視頻!”啦!
關(guān)于video標(biāo)簽的擴(kuò)展參數(shù)說(shuō)明:
video 元素允許多個(gè) source 元素。source 元素可以鏈接不同的視頻文件。瀏覽器將使用第一個(gè)可識(shí)別的格式,這樣我們只要多準(zhǔn)備幾個(gè)不同格式的視頻就可以了。
用法:
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 :出現(xiàn)該屬性意味著視頻在就緒后將自動(dòng)播放,用法:autoplay="autoplay"
2, controls :出現(xiàn)該屬性意味著向用戶(hù)顯示控件,如播放按鈕等,用法:controls="controls"
3, height:設(shè)置高度 width:設(shè)置寬度
4, loop:自動(dòng)重播,用法:loop="loop"
5, preload:視頻在頁(yè)面加載時(shí)進(jìn)行加載并預(yù)備播放,用法:preload="auto" - 當(dāng)頁(yè)面加載后載入整個(gè)視頻;preload="meta" - 當(dāng)頁(yè)面加載后只載入元數(shù)據(jù);preload="none" - 當(dāng)頁(yè)面加載后不載入視頻。注意:若使用了autoplay,則忽略preload
6, src:要播放視頻的url
mp4網(wǎng)頁(yè)播放有聲音無(wú)圖像的解決辦法:
關(guān)于網(wǎng)頁(yè)播放mp4格式的視頻,找了一些插件,這里推薦一下video.js
官方網(wǎng)址: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 rel="stylesheet">
<script src="http://example.com/path/to/video.js"></script>
<script>
videojs.options.flash.swf = "http://example.com/path/to/video-js.swf"
</script>
② 設(shè)置video參數(shù)(設(shè)置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 target="_blank">supports HTML5 video</a></p>
</video>
使用demo里面的mp4視頻源,播放一切正常,換上自己的mp4源發(fā)現(xiàn)只有聲音并沒(méi)有圖像。這讓我很為難。
想來(lái)想去這跟插件沒(méi)關(guān)系,跟瀏覽器沒(méi)有關(guān)系,跟自己視頻源的格式編碼有關(guān)系。
找了很多辦法,嘗試過(guò)swf播放,但是mp4轉(zhuǎn)碼成swf格式,失真太嚴(yán)重,導(dǎo)致視頻很模糊,質(zhì)量很糟糕。
下載了格式工廠(chǎng),嘗試著轉(zhuǎn)換了很多格式,都不盡人意。
發(fā)現(xiàn)mp4的視頻編碼有三種:MPEG4(DivX),MPEG4(Xvid),AVC(H264),我使用格式工廠(chǎng)一個(gè)一個(gè)嘗試。
最終發(fā)現(xiàn)轉(zhuǎn)換成AVC(H264)編碼,完美解決問(wèn)題。
總結(jié):網(wǎng)頁(yè)播放mp4視頻,出現(xiàn)有聲音無(wú)圖像問(wèn)題,先使用格式工廠(chǎng)轉(zhuǎn)換mp4->mp4格式,輸出編碼選擇AVC(H264),然后在網(wǎng)頁(yè)中代碼調(diào)用,看是否解決問(wèn)題。
文章內(nèi)容來(lái)源于網(wǎng)絡(luò),侵刪