移動端video視頻播放的問題案例總結
發表時間:2024-05-11 來源:明輝站整理相關軟件相關文章人氣:
[摘要]下面給大家看幾個案列,都是一些問題案列和總結,值得大家參考和研究,因為我用canvas繪制了video,發現效果和直接用video一樣。因此還是用了原來video的方式<div class="commondw videoimg" id="videoimg&quo...
下面給大家看幾個案列,都是一些問題案列和總結,值得大家參考和研究,因為我用canvas繪制了video,發現效果和直接用video一樣。因此還是用了原來video的方式
<div class="commondw videoimg" id="videoimg"></div><video class="vido" id="vidoid" poster="images/photo/video.jpg">
<source src="media/move.mp4" type="video/mp4"></video>$("#videoimg").on("click", function () {
$(this).fadeOut(1000);
$(".clicktips").hide();
$("#vidoid").show();
$("#vidoid")[0].play();
$("#vidoid").bind('ended', function () {
$("#vidoid").hide();
$("#videoimg").show();
})
});
但是瀏覽器中還是沒有問題的,和canvas繪制一樣!點擊體驗原生video版障眼法視頻
失敗案例二(canvas渲染video)
后來我想到用canvas渲染video,也就是通過canvas的drawImage方式,結合requestAnimationFrame動畫,requestAnimationFrame動畫我之前制作婚禮邀請函總結的時候也介紹過。
下面貼出代碼
function VideoToCanvas(videoElement,fn) {
if (!videoElement) {
return;
}
var fn=fn "";
var canvas = document.createElement('canvas');
canvas.width = videoElement.offsetWidth;
canvas.height = videoElement.offsetHeight;
var ctx = canvas.getContext('2d');
var newVideo = videoElement.cloneNode(false);
var timer = null;
var requestAnimationFrame = window.requestAnimationFrame window.mozRequestAnimationFrame
window.webkitRequestAnimationFrame window.msRequestAnimationFrame;
var cancelAnimationFrame = window.cancelAnimationFrame window.mozCancelAnimationFrame;
function drawCanvas() {
ctx.drawImage(newVideo, 0, 0, canvas.width, canvas.height);
timer = requestAnimationFrame(drawCanvas);
}
function stopDrawing() {
cancelAnimationFrame(timer);
}
function endedCallBack(){
cancelAnimationFrame(timer);
fn && fn()
}
newVideo.addEventListener('play', function () {
drawCanvas();
}, false);
newVideo.addEventListener('pause', stopDrawing, false);
newVideo.addEventListener('ended', endedCallBack, false);
videoElement.parentNode.replaceChild(canvas, videoElement);
this.play = function () {
newVideo.play();
};
this.pause = function () {
newVideo.pause();
};
this.playPause = function () {
if (newVideo.paused) {
this.play();
} else {
this.pause();
}
};
this.change = function (src) {
if (!src) {
return;
}
newVideo.src = src;
};
this.drawFrame = drawCanvas;
this.show = function () {
canvas.style.display = "block";
}
this.hide = function () {
canvas.style.display = "none";
}
}
封裝了顯示show()、隱藏hide()、播放play()、暫停pause()、更換地址change()以及切換播放和暫停playPause();
使用方法如下:
var canvasvedio=new VideoToCanvas(document.getElementById("vidoid"),function(){
canvasvedio.hide();
$("#videoimg").show();});canvasvedio.play();
還有一個回調函數,就是在canvas播放完畢之后,可以傳入回調函數!這個的測試地址請點擊,但是在安卓的微信、和一些瀏覽器中還是會彈出新的窗口,很是郁悶!!
canvas繪制video的其他應用
canvas繪制video有很多其他的應用方式,例如我們可以制作視頻播放同步模糊背景、視頻截圖、灰色視頻等等。
具體有一篇文章,寫的還不錯,推薦大家看一下:http://html5doctor.com/video-canvas-magic/
但是這個只能做PC端了,移動端還是有問題的!!!!
相信看了這些案例你已經掌握了方法,更多精彩請關注php中文網其它相關文章!
相關閱讀:
css3點擊顯示漣漪特效
CSS3怎么制作蝴蝶飛舞的動畫
怎樣用canvas實現小球和鼠標的互動
以上就是移動端video視頻播放的問題案例總結的詳細內容,更多請關注php中文網其它相關文章!
網站建設是一個廣義的術語,涵蓋了許多不同的技能和學科中所使用的生產和維護的網站。