Permettere lo streaming e non il download di videolezioni

Permettere lo streaming e non il download di videolezioni

di Alfonso Pisani -
Numero di risposte: 6

Salve a tutti,

premesso che sono nuovo di questa comunità e di Moodle per cui mi scuso in anticipo per qualunque inesattezza possa dire ammiccante avevo un quesito da proporre. Dovrei caricare sul mio sito moodle delle videolezioni, ma vorrei che l'utente debba vederle in streaming sul sito, ma non poter scaricare il file per vederle offline, o almeno questa seconda cosa dovrebbe risultargli non molto semplice. Sull'editor ho inserito la risorsa multimediale (dopa aver abilitato i plugin per i media) e tutto sembrava funzionare, ovvero un utente con flash installato vedeva comodamente le lezioni e non gli veniva chiesto di scaricare il file. Purtroppo se si disinstalla flash player al posto del video compare un linke che permette di salvarlo e questo è ciò che io non vorrei. Mi chiedo come sia possibile agire in modo tale che: se l'utente non ha flashplayer gli deve apparire un avviso di installarlo, ma non la possibilità di scaricare il video.

Premetto che ospito i video in locale e non vorrei usare youtube o Vimeo.

Grazie a tutti per il vostro aiuto

Media dei voti:  -
In riposta a Alfonso Pisani

Re: Permettere lo streaming e non il download di videolezioni

di Matteo Scaramuccia -

Ciao Alfonso,
l'unico modo è utilizzare un server di streaming locale tipo Red5: nota che anche uno streaming può essere scaricato "banalmente", utilizzando VLC.

Se vuoi invece evitare il tuo caso occorre modificare il codice JS/YUI di Moodle.

HTH,
Matteo

In riposta a Matteo Scaramuccia

Re: Permettere lo streaming e non il download di videolezioni

di Alfonso Pisani -

Ciao Matteo,

grazie per la risposta. Avrei qualche altra domanda che sicuramente sarà banale, ma come detto sono nuovo in moodle.

Hai centrato il problema perfettamente: a me non interessa che lo streaming sia impossibile da scaricare (anche perché non posso evitarlo ammiccante ). Ciò che voglio è solo che in caso di mancanza di flashplayer non venga visualizzato il link per scaricare il video.

Ho notato con firebug che il codice html generato differisce nei due casi (flashplayer presente o meno). Ti riporto per completezza l'html generato nei due casi:

Caso flashplayer presente
--------------------------
<div class="no-overflow">
<p>
<span class="mediaplugin mediaplugin_flv" id="core_media_flv_b9bd034b88a18d675a4ebf1d7f600b5c">
<object name="core_media_flv_b9bd034b88a18d675a4ebf1d7f600b5c_api" width="640" height="480" id="core_media_flv_b9bd034b88a18d675a4ebf1d7f600b5c_api" data="http://www.chimicambiente.com/corsi/lib/flowplayer/flowplayer-3.2.16.swf" type="application/x-shockwave-flash"><param name="allowfullscreen" value="true"><param name="allowscriptaccess" value="always"><param name="quality" value="high"><param name="bgcolor" value="#000000"><param name="flashvars" value='config={"plugins":{"controls":{"autoHide":true}},"clip":{"url":"http://www.chimicambiente.com/corsi/pluginfile.php/27/mod_lesson/page_contents/5/Modulo%201_Introduzione%20ADR_PPTX.flv","autoPlay":false,"autoBuffering":true,"scaling":"fit","mvideo":{"id":"core_media_flv_b9bd034b88a18d675a4ebf1d7f600b5c","fileurl":"http://www.chimicambiente.com/corsi/pluginfile.php/27/mod_lesson/page_contents/5/Modulo%201_Introduzione%20ADR_PPTX.flv","width":400,"height":300,"autosize":true,"resized":false}},"playerId":"core_media_flv_b9bd034b88a18d675a4ebf1d7f600b5c","playlist":[{"url":"http://www.chimicambiente.com/corsi/pluginfile.php/27/mod_lesson/page_contents/5/Modulo%201_Introduzione%20ADR_PPTX.flv","autoPlay":false,"autoBuffering":true,"scaling":"fit","mvideo":{"id":"core_media_flv_b9bd034b88a18d675a4ebf1d7f600b5c","fileurl":"http://www.chimicambiente.com/corsi/pluginfile.php/27/mod_lesson/page_contents/5/Modulo%201_Introduzione%20ADR_PPTX.flv","width":400,"height":300,"autosize":true,"resized":false}}]}'>
</object>
</span>
<script type="text/javascript">
//<![CDATA[
M.util.add_video_player("core_media_flv_b9bd034b88a18d675a4ebf1d7f600b5c", "http:\/\/www.chimicambiente.com\/corsi\/pluginfile.php\/27\/mod_lesson\/page_contents\/5\/Modulo%201_Introduzione%20ADR_PPTX.flv", 400, 300, true);

//]]>
</script>
</p></div>


Caso flashplayer assente
--------------------------
<p><span id="core_media_flv_f9cf8c99a710673d6df41d5f95997479" class="mediaplugin mediaplugin_flv">
<a class="mediafallbacklink" href="http://www.chimicambiente.com/corsi/pluginfile.php/27/mod_lesson/page_contents/5/Modulo%201_Introduzione%20ADR_PPTX.flv">Modulo%201_Introduzione%20ADR_PPTX.flv
</a>
</span><script type="text/javascript">
//<![CDATA[
M.util.add_video_player("core_media_flv_f9cf8c99a710673d6df41d5f95997479", "http:\/\/www.chimicambiente.com\/corsi\/pluginfile.php\/27\/mod_lesson\/page_contents\/5\/Modulo%201_Introduzione%20ADR_PPTX.flv", 400, 300, true);

//]]>
</script>
</p>


mi aspetterei che ci sia qualche javascript che modifica al volo l'html della pagina. Sapresti darmi qualche indizio su come trovare lo script incriminato in modo da modificarlo?

Ciao e grazie ancora

Alfonso

In riposta a Alfonso Pisani

Re: Permettere lo streaming e non il download di videolezioni

di Matteo Scaramuccia -

Ciao Alfonso,
se non vuoi farti un tema custom che sovrascriva alcuni comportamenti di default puoi provare a modificare il codice PHP nel file lib/outputrenderers.php commentando la disponibilità del link:

diff --git a/lib/outputrenderers.php b/lib/outputrenderers.php
index 531be80..75a0862 100644
--- a/lib/outputrenderers.php
+++ b/lib/outputrenderers.php
@@ -3733,7 +3733,7 @@ class core_media_renderer extends plugin_renderer_base {
             'qt' => new core_media_player_qt(),
             'rm' => new core_media_player_rm(),
             'swf' => new core_media_player_swf(),
-            'link' => new core_media_player_link(),
+            //'link' => new core_media_player_link(),
         );
     }

L'approccio è il medesimo ma con la scorciatoia indicata quando aggiornerai Moodle dovrai ricordarti di ri-commentare sempre quella stessa linea.

HTH,
Matteo

In riposta a Matteo Scaramuccia

Re: Permettere lo streaming e non il download di videolezioni

di Alfonso Pisani -

Ciao Matteo,

grazie ho applicato la scorciatoia e funziona. Per la precisione ho commentato il link nella procedura:


protected function get_players_raw() {
        return array(
            'vimeo' => new core_media_player_vimeo(),
            'youtube' => new core_media_player_youtube(),
            'youtube_playlist' => new core_media_player_youtube_playlist(),
            'html5video' => new core_media_player_html5video(),
            'html5audio' => new core_media_player_html5audio(),
            'mp3' => new core_media_player_mp3(),
            'flv' => new core_media_player_flv(),
            'wmp' => new core_media_player_wmp(),
            'qt' => new core_media_player_qt(),
            'rm' => new core_media_player_rm(),
            'swf' => new core_media_player_swf(),
           // 'link' => new core_media_player_link(), //ALFONSO commented out not to show video link
        );
    }

giusto una curiosità se puoi aiutarmi: ho dato una rapida occhiata al codice di moodle relativo a questa parte e non mi è chiaro dove il sistema si accorge che lo user ha o meno flashplayer caricato (tramite javascript, tag html o altro). Inoltre volevo sapere moodle è costruito su una fratipo Zend codeigniter e simili? Te lo chiedo perché mi piacerebbe studiarmi il codice

Ciao e grazie ancora

Alfonso


In riposta a Alfonso Pisani

Re: Permettere lo streaming e non il download di videolezioni

di Matteo Scaramuccia -

Ciao Alfonso,
dunque, Moodle non usa nessun framework di terze parti ma un insieme di librerie di terze parti per costruire il proprio framework che a partire dalla 2.0 ricorda molto il pattern MVC. Puoi iniziare a studiare come Moodle implementi il suo MVC attraverso questi link:

E' molto utile poi seguire la Community per quanto riguarda il Moodle development, in particolare il General developer forum. Il tempo da investire all'inizio è decisamente significativo perché la curva di apprendimento è molto alta: devi darti piccoli obiettivi verticali - l'elefante si mangia a piccoli morsi ma verticali sorridente.

Dove avviene il check sulla presenza di Flash? Lo trovi qui: https://github.com/moodle/moodle/blob/d65634044ebaa738f55bdec521beb42844d6916a/lib/flowplayer/flowplayer-3.2.13.js#L759.

HTH,
Matteo