支持最新版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节点加速分发,海内外学员均可极速加载资源,访问稳定不卡顿,大幅提升学习体验。