這篇文章主要為大家展示了“html5中video移動(dòng)端的示例分析”,內(nèi)容簡(jiǎn)而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領(lǐng)大家一起研究并學(xué)習(xí)一下“html5中video移動(dòng)端的示例分析”這篇文章吧。
南崗網(wǎng)站制作公司哪家好,找創(chuàng)新互聯(lián)建站!從網(wǎng)頁(yè)設(shè)計(jì)、網(wǎng)站建設(shè)、微信開(kāi)發(fā)、APP開(kāi)發(fā)、響應(yīng)式網(wǎng)站建設(shè)等網(wǎng)站項(xiàng)目制作,到程序開(kāi)發(fā),運(yùn)營(yíng)維護(hù)。創(chuàng)新互聯(lián)建站于2013年成立到現(xiàn)在10年的時(shí)間,我們擁有了豐富的建站經(jīng)驗(yàn)和運(yùn)維經(jīng)驗(yàn),來(lái)保證我們的工作的順利進(jìn)行。專(zhuān)注于網(wǎng)站建設(shè)就選創(chuàng)新互聯(lián)建站。
在固安等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強(qiáng)發(fā)展的系統(tǒng)性、市場(chǎng)前瞻性、產(chǎn)品創(chuàng)新能力,以專(zhuān)注、極致的服務(wù)理念,為客戶(hù)提供成都網(wǎng)站設(shè)計(jì)、成都網(wǎng)站建設(shè)、外貿(mào)網(wǎng)站建設(shè) 網(wǎng)站設(shè)計(jì)制作定制網(wǎng)站設(shè)計(jì),公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),品牌網(wǎng)站建設(shè),營(yíng)銷(xiāo)型網(wǎng)站建設(shè),外貿(mào)網(wǎng)站建設(shè),固安網(wǎng)站建設(shè)費(fèi)用合理。
具體如下:
<video id="video" style="object-fit:fill" autoplay webkit-playsinline playsinline x5-video-player-type="h6" x5-video-player-fullscreen="true" x5-video-orientation="portraint" src="video.mp4" /> </video> <!-- object-fit: fill 視頻內(nèi)容充滿整個(gè)video容器 poster:"img.jpg" 視頻封面 autoplay: 自動(dòng)播放 auto - 當(dāng)頁(yè)面加載后載入整個(gè)視頻 meta - 當(dāng)頁(yè)面加載后只載入元數(shù)據(jù) none - 當(dāng)頁(yè)面加載后不載入視頻 muted:當(dāng)設(shè)置該屬性后,它規(guī)定視頻的音頻輸出應(yīng)該被靜音 webkit-playsinline playsinline: 內(nèi)聯(lián)播放 x5-video-player-type="h6" : 啟用x5內(nèi)核H5播放器 x5-video-player-fullscreen="true" 全屏設(shè)置。ture和false的設(shè)置會(huì)導(dǎo)致布局上的不一樣 x5-video-orientation="portraint" :聲明播放器支持的方向,可選值landscape 橫屏,portraint豎屏。 默認(rèn)值portraint。無(wú)論是直播還是全屏H5一般都是豎屏播放, 但是這個(gè)屬性需要x5-video-player-type開(kāi)啟H5模式 -->
自動(dòng)播放
設(shè)置autoplay屬性
<video autoplay></video>
移動(dòng)瀏覽器中
但是在很多移動(dòng)瀏覽器里,都是要求用戶(hù)的真實(shí)操作來(lái)(touchend、click、doubleclick 或 keydown 事件等標(biāo)準(zhǔn)的事件)觸發(fā)調(diào)用video.play(),才能自動(dòng)播放影音視頻。
dom.addEventListener('click', function () { video.play() })
微信中
也可以在 wx.ready()里觸發(fā)video.play()
wx.ready(function () { video.play() })
內(nèi)聯(lián)播放
設(shè)置屬性 webkit-playsinline playsinline
<video id="video" webkit-playsinline playsinline /></video>
在iOS Safari和一些安卓的一些瀏覽器下播放視頻的時(shí)候,不能在h6頁(yè)面中播放視頻,系統(tǒng)會(huì)自動(dòng)接管視頻
如果需要在h6頁(yè)面內(nèi)播放視頻,需要在視頻標(biāo)簽上加上 webkit-playsinline,在iOS10以后,需要加上playsinline,建議同時(shí)加上這兩個(gè)屬性。同時(shí)還需要app支持這種模式
webview.allowsInlineMediaPlayback = YES;
ios手Q和微信都支持這種模式,但是android 微信就掛了
android 微信
android微信內(nèi)置瀏覽器采用騰訊X5內(nèi)核,不遵循X5web標(biāo)準(zhǔn),video強(qiáng)制全屏就是其一。視頻播放完畢后還會(huì)出現(xiàn)QQ自己的視頻推薦
據(jù)說(shuō),其有個(gè)白名單,白名單下的視頻資源,就不會(huì)全屏。但是騰訊已經(jīng)不能再增加白名單了。尿性,無(wú)解。。。。。。
目前還有一個(gè)解決辦法,就是使用h6 canvas 播放 video
canvas 播放視頻
使用canvas 遇到的坑:video 必須加 x5-video-player-type="h6" 屬性,否則,在移動(dòng)端就會(huì)卡死不能播放視頻,個(gè)人認(rèn)為是因?yàn)橐曨l被接管的原因?qū)е隆?/p>
<div class="wrapper"> <video id="video" style="display: none" autoplay src="video.mp4" x5-video-player-type="h6"></video> <canvas id="canvas"></canvas> </div> <script> var video = document.querySelector('#video') var canvas = document.querySelector('#canvas') var wrapper = canvas.parentNode var width = wrapper.offsetWidth var height = wrapper.offsetHeight var ctx = c.getContext('2d') var time = null canvas.width = width canvas.height = height canvas.addEventListener('click', function () { video.play() }) video.addEventListener('play', function () { time = window.setInterval(function () { ctx.drawImage(v, 0, 0, width, height); }, 20); }, false); video.addEventListener('pause', function () { window.clearInterval(time); }, false); video.addEventListener('ended', function () { window.clearInterval(time); }, false); </script>
最后發(fā)現(xiàn),雖然使用canvas播放視頻,android微信中可以屏蔽全屏視頻播放完的推薦視頻。但是還沒(méi)辦法禁止視頻播放時(shí) 的全屏問(wèn)題。還是得萬(wàn)惡的白名單。吐槽。。。。。。。。。。。。。。。。
更坑爹的是沒(méi)有找到j(luò)s觸發(fā)退出全屏的方法。
ios黑屏問(wèn)題
ios 在播放視頻時(shí),會(huì)出現(xiàn)短暫的黑屏,然后正常顯示。
解決方法:
在視頻上層覆蓋一個(gè) 添加一個(gè)div并用一張圖片填充,制造播放前加載假象。然后監(jiān)聽(tīng)事件 timeupdate ,視頻播放有畫(huà)面時(shí)移除這個(gè)“div塊”
video.addEventListener('timeupdate', function(){ if(video.currentTime > 0.1){ posterImg.hidden(); } })
Media 方法和屬性
HTMLVideoElement和HTMLAudioElement 均繼承自HTMLMediaElement
// 媒體錯(cuò)誤 MediaObj.error; //null:正常 MediaObj.error.code; //1.用戶(hù)終止 2.網(wǎng)絡(luò)錯(cuò)誤 3.解碼錯(cuò)誤 4.URL無(wú)效 //媒體當(dāng)前狀態(tài) MediaObj.currentSrc; //返回當(dāng)前資源的URL MediaObj.src = value; //返回或設(shè)置當(dāng)前資源的URL MediaObj.canPlayType(type); //是否能播放某種格式的資源 MediaObj.networkState; //0.此元素未初始化 1.正常但沒(méi)有使用網(wǎng)絡(luò) 2.正在下載數(shù)據(jù) 3.沒(méi)有找到資源 MediaObj.load(); //重新加載src指定的資源 MediaObj.buffered; //返回已緩沖區(qū)域,TimeRanges MediaObj.preload; //none:不預(yù)載 metadata:預(yù)載資源信息 auto: //準(zhǔn)備狀態(tài) MediaObj.readyState;//1:HAVE_NOTHING //2:HAVE_METADATA //3.HAVE_CURRENT_DATA //4.HAVE_FUTURE_DATA //5.HAVE_ENOUGH_DATA MediaObj.seeking; //是否正在seeking //回放狀態(tài) MediaObj.currentTime = value; //當(dāng)前播放的位置,賦值可改變位置 MediaObj.startTime; //一般為0,如果為流媒體或者不從0開(kāi)始的資源,則不為0 MediaObj.duration; //當(dāng)前資源長(zhǎng)度 流返回?zé)o限 MediaObj.paused; //是否暫停 MediaObj.defaultPlaybackRate = value;//默認(rèn)的回放速度,可以設(shè)置 MediaObj.playbackRate = value;//當(dāng)前播放速度,設(shè)置后馬上改變 MediaObj.played; //返回已經(jīng)播放的區(qū)域,TimeRanges,關(guān)于此對(duì)象見(jiàn)下文 MediaObj.seekable; //返回可以seek的區(qū)域 TimeRanges MediaObj.ended; //是否結(jié)束 MediaObj.autoPlay; //是否自動(dòng)播放 MediaObj.loop; //是否循環(huán)播放 MediaObj.play(); //播放 MediaObj.pause(); //暫停 //視頻控制 MediaObj.controls;//是否有默認(rèn)控制條 MediaObj.volume = value; //音量 MediaObj.muted = value; //靜音 //TimeRanges(區(qū)域)對(duì)象 TimeRanges.length; //區(qū)域段數(shù) TimeRanges.start(index) //第index段區(qū)域的開(kāi)始位置 TimeRanges.end(index) //第index段區(qū)域的結(jié)束位置 //【★★★**相關(guān)事件**★★★】 //事件分發(fā) var eventTester = function(e){ Media.addEventListener(e,function(){ console.log((new Date()).getTime(),e) },false); } //事件監(jiān)聽(tīng) eventTester("loadstart"); //客戶(hù)端開(kāi)始請(qǐng)求數(shù)據(jù) eventTester("progress"); //客戶(hù)端正在請(qǐng)求數(shù)據(jù) eventTester("suspend"); //延遲下載 eventTester("abort"); //客戶(hù)端主動(dòng)終止下載(不是因?yàn)殄e(cuò)誤引起) eventTester("loadstart"); //客戶(hù)端開(kāi)始請(qǐng)求數(shù)據(jù) eventTester("progress"); //客戶(hù)端正在請(qǐng)求數(shù)據(jù) eventTester("suspend"); //延遲下載 eventTester("abort"); //客戶(hù)端主動(dòng)終止下載(不是因?yàn)殄e(cuò)誤引起), eventTester("error"); //請(qǐng)求數(shù)據(jù)時(shí)遇到錯(cuò)誤 eventTester("stalled"); //網(wǎng)速失速 eventTester("play"); //play()和autoplay開(kāi)始播放時(shí)觸發(fā) eventTester("pause"); //pause()觸發(fā) eventTester("loadedmetadata"); //成功獲取資源長(zhǎng)度 eventTester("loadeddata"); // eventTester("waiting"); //等待數(shù)據(jù),并非錯(cuò)誤 eventTester("playing"); //開(kāi)始回放 eventTester("canplay"); //可以播放,但中途可能因?yàn)榧虞d而暫停 eventTester("canplaythrough"); //可以播放,歌曲全部加載完畢 eventTester("seeking"); //尋找中 eventTester("seeked"); //尋找完畢 eventTester("timeupdate"); //播放時(shí)間改變 eventTester("ended"); //播放結(jié)束 eventTester("ratechange"); //播放速率改變 eventTester("durationchange"); //資源長(zhǎng)度改變 eventTester("volumechange"); //音量改變
以上是“html5中video移動(dòng)端的示例分析”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內(nèi)容對(duì)大家有所幫助,如果還想學(xué)習(xí)更多知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
網(wǎng)頁(yè)標(biāo)題:html5中video移動(dòng)端的示例分析
URL標(biāo)題:http://aaarwkj.com/article42/igcphc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、網(wǎng)站內(nèi)鏈、域名注冊(cè)、做網(wǎng)站、移動(dòng)網(wǎng)站建設(shè)、網(wǎng)站改版
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)