edusoho开发腾讯云直播互动课堂 源码独立部署

支持最新版edusoho 二次开发腾讯云直播互动课堂 源码独立部署

腾讯云直播互动课堂是基于腾讯云TRTC实时音视频、IM即时通信、直播录制、云存储等核心能力构建的一站式在线教育解决方案。通过EduSoho二次开发,实现源码独立部署,为教育机构提供稳定、高效、可定制的在线教学平台。

php 复制代码
<?php

namespace TencentLivePlugin;

use Codeages\PluginBundle\System\PluginBase;
use TencentLivePlugin\Biz\TencentLiveServiceProvider;

class TencentLivePlugin extends PluginBase
{
    public function boot()
    {
        parent::boot();
        $biz = $this->container->get('biz');
        $biz->register(new TencentLiveServiceProvider());
    }
}

腾讯云直播配置

老师怎么建立直播课程和上直播课呢?流程是怎么样的呢?直播课程、报名课程、视频课程、音频课程、知识付费一网打尽,打破传统课堂,集合多种营销功能,让在线学习更便捷

添加课时

在后台填写标题名称和选择好您的开课的时间范围

然后去发布课程、接着查看刚刚发布的课程

再接着点击,进入直播教室,进行上课

部分代码披露展示、分享交流

php 复制代码
define(function(require, exports, module) {

    (function($) {
        $.fn.WaterMark = function(options) {
            var settings = $.extend({
                'duringTime': 5 * 60 * 1000,
                'interval': 10 * 60 * 1000,
                'isAlwaysShow': true,
                'xPosition': 'center',
                'yPosition': 'top',
                'isUseRandomPos': false,
                'opacity': 0.8,
                'rotate': 45,
                'style': {},
                'contents': ''
            }, options);

            var showTimer;
            var $thiz = $(this);
            var minTopOffset = 40;
            var minLeftOffset = 15;
            var topOffset = minTopOffset;
            var leftOffset = minLeftOffset;
            var $watermarkDiv = null;

            function genereateDiv() {
                var IEversion = getInternetExplorerVersion();
                $watermarkDiv = $('<div id="waterMark" class="watermark"></div>');
                var rotate = 'rotate(' + settings.rotate + 'deg)';
                $watermarkDiv.addClass('active');
                $watermarkDiv.css({
                    opacity: settings.opacity,
                    '-webkit-transform': rotate,
                    '-moz-transform': rotate,
                    '-ms-transform': rotate,
                    '-o-transform': rotate,
                    'transform': rotate,
                    'filter': "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678, sizingMethod='auto expand')"
                });
                $watermarkDiv.css(settings.style);
                if (IEversion >= 8 && IEversion < 9 ) {
                    $watermarkDiv.css({
                        'height': 60,
                        'filter': "progid:DXImageTransform.Microsoft.Matrix(M11=0.70710678, M12=0.70710678, M21=-0.70710678, M22=0.70710678, sizingMethod='auto expand')progid:DXImageTransform.Microsoft.Alpha(opacity="+ (parseFloat(settings.opacity) * 100) +")"
                    });
                }
                $watermarkDiv.html(settings.contents);
                return $watermarkDiv;
            }

            function alwaysShow() {
                displayWaterMark();
            }

            function displayWaterMark() {
                getOffset();
                $watermarkDiv.css({
                    'top': topOffset,
                    'left': leftOffset
                });
                $watermarkDiv.show();
            }

            function timeingShow() {
                displayWaterMark();
                showTimer = setInterval(function() {
                    displayWaterMark();
                    setTimeout(function() {
                        $watermarkDiv.hide();
                    }, settings.duringTime);

                }, settings.interval);
            }

            function getOffset() {
                if (settings.isUseRandomPos) {
                    setOffsetRandom();
                } else {
                    setOffsetByPosition();
                }
            }

            function setOffsetRandom() {
                var maxTopOffset = ($thiz.height() - $watermarkDiv.height() - minTopOffset);
                var maxLeftOffset = ($thiz.width() - $watermarkDiv.width() - minLeftOffset);

                topOffset = Math.random() * maxTopOffset + minTopOffset;
                leftOffset = Math.random() * maxLeftOffset;
            }

            function setOffsetByPosition() {
                if (settings.xPosition == "left") {
                    leftOffset = minLeftOffset;
                }
                if (settings.xPosition == "center") {
                    leftOffset = ($thiz.width() - $watermarkDiv.width()) / 2;
                }
                if (settings.xPosition == "right") {
                    leftOffset = ($thiz.width() - $watermarkDiv.width()) - minLeftOffset;
                }
                if (settings.yPosition == "top") {
                    topOffset = minTopOffset;
                }
                if (settings.yPosition == "center") {
                    topOffset = ($thiz.height() - $watermarkDiv.height()) / 2 + minTopOffset;
                }
                if (settings.yPosition == "bottom") {
                    topOffset = ($thiz.height() - $watermarkDiv.height() - minTopOffset);
                }
            }

            function startShow() {
                if (settings.isAlwaysShow) {
                    alwaysShow();
                } else {
                    timeingShow();

                }
            }

            function getInternetExplorerVersion()
            {
              var rv = -1; // Return value assumes failure.
              if (navigator.appName == 'Microsoft Internet Explorer')
              {
                var ua = navigator.userAgent;
                var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
                if (re.exec(ua) != null)
                  rv = parseFloat( RegExp.$1 );
              }
              return rv;
            }

            function init() {
                $thiz.append(genereateDiv());
                
                startShow();
            }

            init();
        };
    })(jQuery);

    var Widget = require('widget');
    var swfobject = require('swfobject');
    var docPlayer;
    window.onmessage=function(e){  
        if(e == null || e == undefined ){
            return;
        }
        var isPageFullScreen = e.data;
        if(typeof(isPageFullScreen) != "boolean"){
            return ;
        }
        var docContent = document.getElementById(docPlayer);
        if (isPageFullScreen) {
          docContent.removeAttribute("style");
        }else{
          docContent.style.width = window.document.body.offsetWidth+"px";
          docContent.style.position = "fixed";
          docContent.style.left = "0";
          docContent.style.top = "0";
          docContent.style.zIndex = "9999";
          
        }
    };

    var DocumentPlayer = Widget.extend({
        attrs: {
            swfFileUrl:'',
            pdfFileUrl:'',
            swfPlayerUrl:'../../bundles/topxiaweb/js/controller/swf/edusohoViewer.swf',
            swfPlayerWidth:'100%',
            swfPlayerheight:'100%',
            watermark: ''
        },

        events: {
        },

        setup: function() {
            var self = this;
            docPlayer = $(this.element).attr("id");
            self.init(this.element);
        },

        init: function ($thiz) {

            if (this.isSupportHtml5() && !this.isIE9()) {
                this.initPDFJSViewer($thiz);
            }else{
                this.initSwfViewer($thiz);
            }

        },
        isIE9: function(){
            return navigator.appVersion.indexOf("MSIE 9.")!=-1;
        },
        isSupportHtml5: function(){

            return $.support.leadingWhitespace;

        },

        initPDFJSViewer: function($thiz) {
            self=this;
            $("html").attr('dir','ltr');
            var jsPath = __URL_PROTOCOL + ':' + app.cloudOldDocumentSdkUrl + '#' + self.attrs.pdfFileUrl.value;
            if(app.lessonCopyEnabled==0){
                jsPath = jsPath+'#false';
            }

            $('#viewerIframe').attr('src', jsPath);

            if (this.get('watermark')) {
                this.element.WaterMark(this.get('watermark'));
            }
        },

        initSwfViewer: function($thiz){

            $thiz.html('<div id="website"><p align="center" class="style1">'+Translator.trans('您还没有安装flash播放器 请点击')+'<a href="http://www.adobe.com/go/getflashplayer">'+Translator.trans('这里')+'</a>'+Translator.trans('安装')+'</p></div>');
            var flashvars = {
              doc_url: escape(this.attrs.swfFileUrl.value) 
            };
            var params = {
                //menu: "false",
                bgcolor: '#efefef',
                allowFullScreen: 'true',
                wmode:'window',
                allowNetworking:'all',
                allowscriptaccess:'always',
                wmode: 'transparent',
                autoPlay:false
              };
            var attributes = {
                id: 'website'
            };

            swfobject.embedSWF(
                this.get('swfPlayerUrl'),
                'website',
                this.get('swfPlayerWidth'),  this.get('swfPlayerheight') , "9.0.45", null, flashvars, params, attributes
            );

            if (this.get('watermark')) {
                this.element.WaterMark(this.get('watermark'));
            }

        }

    });

    module.exports = DocumentPlayer;

});

这是直播课的教师端的界面,最右边是老师的头像和学员列表聊天窗口,左边是白板和课件的切换

这是学员手机端观看直播课的界面

✅ TRTC实时音视频,告别卡顿延迟

依托腾讯云顶尖音视频技术,实现全球端到端<300ms超低延迟,高度还原线下课堂实时互动效果。强悍抗弱网性能,70%网络丢包场景下依旧音画流畅不中断,完美适配大班课、小班课、一对一私教等全教学场景,彻底解决师生互动不同步、画面卡顿花屏问题。

✅ IM即时互动,激活课堂氛围

支持文字聊天、举手问答、在线投票、答题卡、点赞互动等多元化操作,所有消息可靠必达,课程公告、课件通知、课堂指令零丢失,

✅ 直播+点播联动

支持百万级高并发直播授课,无在线人数上限,轻松承接大规模公开课、行业宣讲、全员内训场景。直播课程自动录制、智能转码,一键转为点播回放视频,搭配视频加密、防盗链、数字水印多重版权防护,兼顾内容复用与版权安全。

✅ COS云存储+CDN分发,资源极速访问

课件、教学视频、学习文档等资源云端安全存储,结合全球CDN节点加速分发,海内外学员均可极速加载资源,访问稳定不卡顿,大幅提升学习体验。

相关推荐
linlinlove28 天前
新版edusoho25.4.11对接腾讯云视频点播插件(TxVideoPlugin)
edusoho二次开发·edusoho云视频·阿里云视频点播·腾讯云视频点播·edusoho插件更新·edusoho插件开发·网校系统edusoho
万岳科技程序员小金2 年前
网校培训平台搭建指南:基于在线教育系统源码的实现路径
软件开发·app开发·在线教育系统源码·教育平台搭建·网校系统开发·软件开发实战