zoukankan      html  css  js  c++  java
  • legend3---videojs存储视频的播放速率便于用户观看视频

    legend3---videojs存储视频的播放速率便于用户观看视频

    一、总结

    一句话总结:

    用户改变速率的时候存储视频播放速率到本地localStorage:this.on("ratechange", function(){localStorage.fry_videojs_playbackRate=this.playbackRate();});
    用户加载视频的时候从本地存储中获取视频的播放速率就好:this.playbackRate(localStorage.fry_videojs_playbackRate);

    二、videojs本地存储视频的播放速率

    博客对应课程的视频位置:

    1、先找videojs的常用监听事件

    videojs的一些监听事件汇总_Q147351的博客-CSDN博客_videojs 事件
    https://blog.csdn.net/Q147351/article/details/106663908/

    在里面可以找到监控播放速率改变的方法
     
     var playerVideo = videojs("my-player", options, function onPlayerReady() {
        videojs.log('Your player is ready!');
    
        this.on("ratechange", function(){
            console.log("播放速率改变")
        });
        
    });

    2、google一下 videojs change speed

    如下链接可以找到

    https://stackoverflow.com/questions/19112255/change-the-video-playback-speed-using-video-js

    Helpful: If you need to change the speed after the videoplayer is ready (Jquery), use:

    var video = videojs('videoplay', options);
    
    video.ready(function() {
        // faster speed initially
        this.playbackRate(1.5);
    });

    这里用this.playbackRate()不仅可以设置当前的播放速度,还可以获取当前的播放速度

    3、再搜一下html5本地存储

    在这里我们可以看到有localStorage,就用这个了

    HTML 5 Web 存储
    https://www.w3school.com.cn/html5/html_5_webstorage.asp

    4、解决的对应代码

    用户改变速率的时候存储视频播放速率到本地localStorage,用户加载视频的时候从本地存储中获取视频的速率就好

    (1)、用户改变速率的时候存储视频播放速率到本地localStorage

    this.on("ratechange", function(){
        //console.log("播放速率改变")
        localStorage.fry_videojs_playbackRate=this.playbackRate();
    });

    (2)、用户加载视频的时候从本地存储中获取视频的播放速率就好

    this.on('loadeddata',function(){
        {{--加载好了之后跳转播放的那一块才显示--}}
        $('#video_memory_play').show();
        jump_play_hidden();
    
        //调用本地存储的视频播放速度
        if(localStorage.fry_videojs_playbackRate){
            this.playbackRate(localStorage.fry_videojs_playbackRate);
        }else{
            this.playbackRate(1);
        }
    });

    部分完整代码

    <script>
        var player = videojs(document.getElementById('example_video_1'), {
            controls: true, // 是否显示控制条
            poster: window.video_img, // 视频封面图地址
            preload: 'auto',
            autoplay: false,
            fluid: true, // 自适应宽高
            language: 'zh-CN', // 设置语言
            muted: false, // 是否静音
            inactivityTimeout: false,
            controlBar: { // 设置控制条组件
                /* 设置控制条里面组件的相关属性及显示与否
                'currentTimeDisplay':true,
                'timeDivider':true,
                'durationDisplay':true,
                'remainingTimeDisplay':false,
                volumePanel: {
                  inline: false,
                }
                */
                /* 使用children的形式可以控制每一个控件的位置,以及显示与否 */
                children: [
                    {name: 'playToggle'}, // 播放按钮
                    {name: 'currentTimeDisplay'}, // 当前已播放时间
                    {name: 'progressControl'}, // 播放进度条
                    {name: 'durationDisplay'}, // 总时间
                    { // 倍数播放
                        name: 'playbackRateMenuButton',
                        'playbackRates': [0.5, 1, 1.5, 2, 2.5]
                    },
                    {
                        name: 'volumePanel', // 音量控制
                        inline: false, // 不使用水平方式
                    },
                    {name: 'FullscreenToggle'} // 全屏
                ]
            },
            sources:[ // 视频源
                {
                    src: window.video_url,
                    type: 'video/mp4',
                    poster: window.video_img,
                }
            ]
        }, function (){
            $('#video_div').show();
    
            this.on('loadeddata',function(){
                {{--加载好了之后跳转播放的那一块才显示--}}
                $('#video_memory_play').show();
                jump_play_hidden();
    
                //this.play();
                // console.log('loadeddata');
                // console.log(player.duration());
                //this.currentTime({{$userVideo['uv_time_pos']}});
    
                //调用本地存储的视频播放速度
                if(localStorage.fry_videojs_playbackRate){
                    this.playbackRate(localStorage.fry_videojs_playbackRate);
                }else{
                    this.playbackRate(1);
                }
            });
            this.on('play', function () {
                // console.log('开始播放');
                window.time_interval1 = setInterval(function () {
                    if(player.currentTime()<player.duration()-10&&player.currentTime()>10){
                        if(window.autoReportNum>=(3*60-10)){
                            report_video_progress(player.currentTime());
                            window.autoReportNum=0;
                            //window.pauseNum=0;
                        }
                    }
                }, 3000*60);
            });
            this.on('ended',function(){
                {{----}}
                @if(!$userVideo['uv_finished_at'])
                finish_video(player.duration());
                @endif
                video_lesson_next();
                {{--如果完成了视频,对视频进行判断--}}
                if(!window.next_video.video_url){
                    is_finished_lesson();
                }
                // console.log('视频结束');
            });
            this.on('pause', function () {
                window.clearInterval(window.time_interval1);
                if(pauseNum>=(2*60-10)){
                    report_video_progress(this.currentTime());
                    window.autoReportNum=0;
                    window.pauseNum=0;
                }
                // console.log('暂停播放');
                // console.log(this.currentTime());
            });
            // 视频的播放速率改变
            this.on("ratechange", function(){
                //console.log("播放速率改变")
                //存储播放速率
                //console.log(this.playbackRate());
                //console.log(localStorage.fry_videojs_playbackRate);
                localStorage.fry_videojs_playbackRate=this.playbackRate();
                //console.log(localStorage.fry_videojs_playbackRate);
            });
            // console.log('视频可以播放了',this);
        });
    </script>
     
    我的旨在学过的东西不再忘记(主要使用艾宾浩斯遗忘曲线算法及其它智能学习复习算法)的偏公益性质的完全免费的编程视频学习网站: fanrenyi.com;有各种前端、后端、算法、大数据、人工智能等课程。
    博主25岁,前端后端算法大数据人工智能都有兴趣。
    大家有啥都可以加博主联系方式(qq404006308,微信fan404006308)互相交流。工作、生活、心境,可以互相启迪。
    聊技术,交朋友,修心境,qq404006308,微信fan404006308
    26岁,真心找女朋友,非诚勿扰,微信fan404006308,qq404006308
    人工智能群:939687837

    作者相关推荐

  • 相关阅读:
    docker应用部署
    Netty实现WebSocket通信
    spring-mvc框架简单搭建
    spring-tx 事物
    spring注解及简单实用
    Spring Aop实现简单代码实现
    Jedis操作
    Proxy说明
    下载返回流
    向上捅破天,向下扎到根
  • 原文地址:https://www.cnblogs.com/Renyi-Fan/p/13978894.html
Copyright © 2011-2022 走看看