Giter Club home page Giter Club logo

moodle-mod_openwebinar's Introduction

Moodle openwebinar - Activity

This plugin allows you to give a live webinar inside Moodle with a lot of features. All services/plugins/libs which are used are open source.

Author

MFreak.nl

Author: Luuk Verhoeven, MFreak.nl

Min. required: Moodle 2.6+

Project Status

Build Status

Description

MoodleFreak Openwebinar provides the function of live streaming and chatting in Moodle. You are able to schedule a meeting and give a live openwebinar. There is one public chat room. Most preference of the features can be generally set in settings. Settings can be overridden on instance level to be more customizable.

Everything we are using is open source. There is no need for Flash media server, Adobe Connect, Gotomeeting or other paid services. You can set this up in your own environment. For more information on Moodlefreak click here.

List of features

Room

  • Auto room scaling
  • Live and offline mode
  • Max. 3 completely customizable reminder e-mail messages (to notify users about the openwebinar)
  • User activity pinger to measure online time in the room
  • YUI 3 javascript module
  • Completion triggered on entering the live openwebinar
  • Auto closing live rooms

Chat

  • Live socket chat
  • Saving chat log to moodle DB
  • Emoticons in chat
  • Loading previous message in the chat
  • Users in the room list sorted by status
  • Users in room list include browser and OS version
  • New message sound
  • Supported chat commands in message field
    • /clear This removes all messages in your chat overview

Broadcaster

  • Broadcaster can mute chat messages from guests, students and teachers separately
  • Broadcaster can close/end an openwebinar

Users

  • Chat control panel for user in the room
  • Chat in the room

Video

  • View live and offline video stream
  • Stream RTMP (Real Time Messaging Protocol) viewer
  • Stream HLS (allow almost all devices) with fallback support
  • Modern video api videojs included for more playback support
  • Adding offline or already given video to an openwebinar
  • Fullscreen video mode

File sharing

  • File sharing adding files to the chat
  • User friendly file overview

User activity in openwebinar overview

  • See how long users have been in the room
  • See who visited the openwebinar
  • See chatlog of one specific user

Installation

  1. copy this plugin to the mod\openwebinar folder on the server
  2. login as administrator
  3. go to Site Administrator > Notification
  4. install the plugin
  5. you will need to fill out the settings. Please keep in mind you have the options to use a hosted setup or setup all dependencies yourself.

Installation broadcaster

The openwebinar itself is completely webbased. But to stream a openwebinar as broadcaster you will need some software to stream a RTMP stream.

We’ve used open broadcaster for this which is also an open source project. The users manual for this plugin can be found here.

Installation dependencies

The openwebinar won't run without a Chat server. The chat server is developed by MoodleFreak and can be found on openwebinar_chatserver

For the openwebinar you will also need a rtmp streaming server. We’ve build this especially for nginx-rtmp because its free and open source. Chances are high that another RTMP server will also work.

Note: Keep in mind that streaming will use a lot of bandwidth

Installation - nginx-rtmp for openwebinar

Debian

https://wiki.debian.org/DhyanNataraj/RtmpVideoStreamingViaNginx

Files or folders that doesn't exists must be created!

Error debuild - try
dpkg-buildpackage -uc -us

Ubuntu - not working on debian

apt-get -y update; \
apt-get -y install software-properties-common dpkg-dev git; \
add-apt-repository -y ppa:nginx/stable; \
sed -i '/^#.* deb-src /s/^#//' /etc/apt/sources.list.d/nginx-ubuntu-stable-xenial.list; \
apt-get -y update; \
apt-get -y source nginx; \
cd $(find . -maxdepth 1 -type d -name "nginx*") && \
ls -ahl && \
git clone https://github.com/arut/nginx-rtmp-module.git && \
sed -i "s|common_configure_flags := \\\|common_configure_flags := \\\--add-module=$(cd  nginx-rtmp-module && pwd) \\\|" debian/rules && \
cat debian/rules && echo "^^" && \
apt-get -y build-dep nginx && \
dpkg-buildpackage -b && \
cd .. && ls -ahl && \
dpkg --install $(find . -maxdepth 1 -type f -name "nginx-common*") && \
dpkg --install $(find . -maxdepth 1 -type f -name "libnginx*") && \
dpkg --install $(find . -maxdepth 1 -type f -name "nginx-full*"); \
apt-get -y remove software-properties-common dpkg-dev git; \
apt-get -y install aptitude; \
aptitude -y markauto $(apt-cache showsrc nginx | sed -e '/Build-Depends/!d;s/Build-Depends: \|,\|([^)]*),*\|\[[^]]*\]//g'); \
apt-get -y autoremove; \
apt-get -y remove aptitude; \
apt-get -y autoremove; \
rm -rf ./*nginx*
worker_processes  1;

events {
    worker_connections  600000;
}

http {
    sendfile off;
    tcp_nopush on;
    directio 512;
    default_type application/octet-stream;

    server {
        listen 8080;

        location / {
            # Disable cache
            add_header 'Cache-Control' 'no-cache';

            # CORS setup
            add_header 'Access-Control-Allow-Origin' '*' always;
            add_header 'Access-Control-Expose-Headers' 'Content-Length';

            # allow CORS preflight requests
            if ($request_method = 'OPTIONS') {
                add_header 'Access-Control-Allow-Origin' '*';
                add_header 'Access-Control-Max-Age' 1728000;
                add_header 'Content-Type' 'text/plain charset=UTF-8';
                add_header 'Content-Length' 0;
                return 204;
            }

            types {
                application/dash+xml mpd;
                application/vnd.apple.mpegurl m3u8;
                video/mp2t ts;
            }

            root /mnt/;
        }
    }
}

#START THE RTMP PART
rtmp {
        server {
                listen 1935;
                chunk_size 4096;
                ping 15s;
                ping_timeout 10s;

                application live {
                        live on;
                        publish_notify on;
                        record off;
                        drop_idle_publisher 10s;

                        # Turn on HLS
                        hls on;
                        hls_path /mnt/hls/;
                        #hls_playlist_length 30s;
                        hls_fragment 1s;
                        hls_playlist_length 10s;
                        hls_sync 100ms;
                        # disable consuming the stream from nginx as rtmp
                        #deny play all;

                }

        }
}

Changelog

See version control for the complete history. Major changes in this version will be listed below.

  • Adding travis

moodle-mod_openwebinar's People

Contributors

luukverhoeven avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

Forkers

sircollins hokhyk

moodle-mod_openwebinar's Issues

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.