Home  >  Article  >  Web Front-end  >  Summary of mobile video playback problem cases

Summary of mobile video playback problem cases

php中世界最好的语言
php中世界最好的语言Original
2017-11-27 10:59:024130browse

Let me show you some cases below, which are examples and summaries of some problems. They are worthy of your reference and study, because I used canvas to draw the video and found that the effect is the same as using the video directly. Therefore, I still used the original video method

<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(&#39;ended&#39;, function () {
        $("#vidoid").hide();
        $("#videoimg").show();
    })
});

, but there is still no problem in the browser, just like canvas drawing! Click to experience the native video version of the trick Video

Failure Case 2 (canvas rendering video)

Later I thought of using canvas to render video, that is, through the drawImage method of canvas, combined with requestAnimationFrame animation, requestAnimationFrame animation, I also introduced it before when I made a summary of wedding invitations.

The code is posted below

 function VideoToCanvas(videoElement,fn) {
        if (!videoElement) {
            return;
        }
        var fn=fn||"";
        var canvas = document.createElement(&#39;canvas&#39;);
        canvas.width = videoElement.offsetWidth;
        canvas.height = videoElement.offsetHeight;
        var ctx = canvas.getContext(&#39;2d&#39;);
        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(&#39;play&#39;, function () {
            drawCanvas();
        }, false);
        newVideo.addEventListener(&#39;pause&#39;, stopDrawing, false);
        newVideo.addEventListener(&#39;ended&#39;, 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";
        }
    }

encapsulates show(), hide(), play(), pause(), change address change(), and switch play and pause playPause ();

The usage method is as follows:

var canvasvedio=new VideoToCanvas(document.getElementById("vidoid"),function(){
canvasvedio.hide();
$("#videoimg").show();});canvasvedio.play();

There is also a callback function, which is after the canvas has finished playing, you can Pass in the callback function! Please click on this test address, but new windows will still pop up in Android WeChat and some browsers, which is very frustrating! !

Other applications of canvas drawing video

There are many other applications for canvas drawing video, for example, we can make video playback synchronized blurred background, video screenshots, gray video, etc.

There is a specific article, which is pretty good. I recommend everyone to read it: http://html5doctor.com/video-canvas-magic/

But this can only be done on PC. There is still a problem with the mobile version! ! ! !

I believe you have mastered the methods after reading these cases. For more exciting information, please pay attention to other related articles on the php Chinese website!


Related reading:

css3 click to display ripple effects

How to make flying butterflies in CSS3 Animation

How to use canvas to realize the interaction between the ball and the mouse

The above is the detailed content of Summary of mobile video playback problem cases. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn