Skip to content
This repository has been archived by the owner on Nov 15, 2021. It is now read-only.

MoodleFreak - Plugin that allow live webcast with chat and file sharing on a moodle environment

Notifications You must be signed in to change notification settings

LdesignMedia/moodle-mod_openwebinar

Repository files navigation

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

About

MoodleFreak - Plugin that allow live webcast with chat and file sharing on a moodle environment

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published