Lesson player è un sito web (ma non è online) per guardare le video lezioni sulla rete locale: installandolo sul pc è possibile vedere le lezioni da tutti i dispositivi connessi.
Le sue principali caratteristiche sono:
- Tiene traccia di dove sei arrivato (all'interno di un corso);
- Velocizza (a 8x) il video durante i silenzi (quando il professore non parla).
- Ingrandisci rapidamente sull'area importante della lezione;
- Visualizza il tempo residuo effettivo, considerando sia la velocità di riproduzione che i silenzi.
Puoi discutere del futuro di questo progetto qui
Ti sta piacendo questo progetto? Scrivimi una tua opinione a padvincenzo@gmail.com oppure lascia un commento su vincenzopadula.altervista.org/lesson-player/, grazie.
Leggi in altre lingue: Inglese, Italiano.
I feedback sono molto apprezzati. Per favore, scrivimi una riga a padvincenzo@gmail.com
- Scarica, installa e avvia xampp.
- Apri la cartella di xampp:
- Su Linux:
/opt/lampp/htdocs/
- Su Windows:
C:\\xampp\htdocs\
- Su Mac: monta il volume Xampp e apri la cartella
htdocs
- Su Linux:
- Crea una cartella (es:
lesson-player/
) e copia tutti i file al suo interno.
- Apri il browser all'indirizzo
http://localhost/phpmyadmin/
e crea un nuovo database (es:lesson-player
).
- Dalla cartella di xampp apri il file
_connect.php
e aggiorna le credenziali del database (e volendo anche la lingua):
include("languages/<linguaggio>.php");
// Credenziali del database
$host = "localhost"; // Indirizzo IP del database. Se usi xampp è: "localhost"
$user = "root"; // Il tuo username per accedere al database. Se usi xampp è: "root"
$password = ""; // La tua password per accedere al database. Se usi xampp è: "" (vuoto)
$database = "lesson-player"; // Il nome che hai dato al tuo database.
/* ... */
- Solo per nuovi utenti: dal browser vai all'indirizzo
http://localhost/<nome_cartella>/install.php
(es:http://localhost/lesson-player/install.php
). Questo script cancellerà tutti i dati presenti nel database, se esistono.
- (Opzionale) Imposta xampp per l'avvio automatico all'avvio del pc.
- Nella cartella
.../htdocs/lesson-player/
crea una sottocartella (es:classes/
) e copia qui tutte le videolezioni, organizzate in una struttura tipo:
lesson-player/
└── corsi/
| └── Fisica I/
| | └── Lezione 01.mp4
| | └── Lezione 02.mp4
| | └── ...
| └── Chimica/
| | └── Lezione del 2021-01-01.mp4
| | └── Lezione del 2021-01-02.mp4
| | └── ...
| └─── ...
- Nota: le cartelle e i file dentro la cartella
classes
possono anche essere collegamenti.
- Apri il browser all'indirizzo
http://localhost/lesson-player/
; - Inserisci tutti i corsi: nome, professore, percorso della cartella (es:
classes/Physics I/
, notare lo/
alla fine);
- Torna alla pagina principale;
- Seleziona un corso e premi il pulsante
Mostra
; - Inserisci tutte le videolezioni appartenenti a quel corso: data, titolo, nome del file (es:
Lesson 01.mp4
).
Per ogni lezione è possibile trovare e velocizzare i silenzi, tramite ffmpeg
:
- Scarica e installa ffmpeg;
- Apri il terminale (o il prompt dei comandi);
- Spostati nella cartella
../lesson-player/
tramite il comandocd <cartella_xampp>/htdocs/lesson-player/
; - Esegui ffmpeg con il filtro
silencedetect
, come indicato nel form di creazione/modifica della videolezione. Es:
ffmpeg -hide_banner -nostats -vn -i "classes/Physics I/Lesson 01.mp4" -af silencedetect=n=0.002:d=2.3 -f null -
- Copia e incolla l'output nel form di modifica/aggiunta della videolezione. Esempio di output che ffmpeg genera:
...
[silencedetect @ 0x56093ac71400] silence_start: 8.58428
[silencedetect @ 0x56093ac71400] silence_end: 17.2754 | silence_duration: 8.69112
[silencedetect @ 0x56093ac71400] silence_start: 2765.06
[silencedetect @ 0x56093ac71400] silence_end: 2768.73 | silence_duration: 3.66969
[silencedetect @ 0x56093ac71400] silence_start: 3653.35
[silencedetect @ 0x56093ac71400] silence_end: 3657.01 | silence_duration: 3.66175
[silencedetect @ 0x56093ac71400] silence_start: 4347.37
[silencedetect @ 0x56093ac71400] silence_end: 4349.95 | silence_duration: 2.58562
[silencedetect @ 0x56093ac71400] silence_start: 4424.87
[silencedetect @ 0x56093ac71400] silence_end: 4429.57 | silence_duration: 4.69538
[silencedetect @ 0x56093ac71400] silence_start: 4475.08
[silencedetect @ 0x56093ac71400] silence_end: 4478.69 | silence_duration: 3.61456
[silencedetect @ 0x56093ac71400] silence_start: 4961.04
[silencedetect @ 0x56093ac71400] silence_end: 4965.18 | silence_duration: 4.14791
...
- Si possono anche apportare modifiche al filtro, ma per un corretto funzionamento la durata minima dei silenzi (
d
) deve essere > 2.25. Perché?
Per velocizzare questa operazione ho creato due piccoli script, uno per Linux e uno per Windows. Entrambi eseguono il filtro su tutte le videolezioni presenti nella cartella da cui sono eseguiti, e salvano il risultato in un file di testo dallo stesso nome della videolezione (vanno perció copiati ed eseguiti dalla directory che contiene le lezioni).
Per aggiornare Lesson Player
basta scaricare l'ultima versione e copia e incolla i nuovi file nella tua cartella d'installazione di Lesson Player (rimpiazzando i vecchi file). Non cancellare la cartella che contiene le tue lezioni.
Solo se hai una versione precedente la 0.4.0:
- Vai sulla pagina di
phpmyadmin
(localhost/phpmyadmin
); - Seleziona il database di lesson-player;
- Esegui questo script SQL:
ALTER TABLE class ADD removed BOOLEAN NOT NULL DEFAULT false;
ALTER TABLE lesson ADD removed BOOLEAN NOT NULL DEFAULT false;
Scorciatoie da tastiera:
Tasto/i | Effetto |
---|---|
Esc |
Ciudi il messaggio/richiesta corrente |
Spazio |
Pausa/play |
M |
Muto/sonoro |
F |
Video a schermo intero |
Freccia a sinistra |
Riavvolgi 5s (1m con Ctrl ) |
Freccia a destra |
Vai avanti di 5s (1m con Ctrl ) |
Freccia in alto |
Alza il volume |
Freccia in basso |
Abbassa il volume |
] o + (o = ) |
Aumenta la velocità di riproduzione |
[ o - |
Diminuisci la velocità di riproduzione |
S |
Salta il silenzio in corso |
P |
Screenshot |
O |
Abilita/disabilita overlay |
X |
Ingrandisci/ripristina il video |
Altri tipi di scorciatoie:
- I riquadri dei corsi e delle lezioni sono indicizzate e scorribili con il tasto
Tab
. PremendoInvio
su una di esse, partirà la relativa lezione. Lo stesso effetto si ottiene facendo doppio click.
Chiunque può contribuire a questo progetto, in diversi modi:
- Traducendo il progetto in altre lingue;
- Condividendo nuovi temi;
- Scovando e segnalando/risolvendo bug;
- Suggerendo nuove idee;
- Implementando nuove funzionalità;
- Inviando feedback.
In altre parole, crea una fork e divertiti a scrivere codice. Quando avrai qualcosa che possa migliorare il progetto, apri la tua pull request.
Per qualunque dubbio o perplessità possiamo discuterne sulla pagina apposita.
Per inviarmi un feedback, basta cliccare sul link Feedback
e scrivere qualunque cosa (occhio al linguaggio). In questo modo mi arriverà una mail contenente quello che hai scritto.
Quello che scrivi e il tuo indirizzo IP verranno memorizzati, e nessuno dei campi è obbligatorio.
Alla velocità 8x, preimpostata per i silenzi, il tempo del video si aggiorna ogni circa 2s. Per ovviare questo problema, quando carichi i tempi di silenzio che genera ffmpeg, il server rimuove un margine di 2s dalla fine del silenzio, e ne aggiunge uno di 0.25s dall'inizio. Impostando una durata d
minore di 2.25s, il server riconoscerà questi silenzi con una durata (d - 2.25) ≤ 0
, pertanto saranno ignorati. È possibile modificare questi margini dal file /ajax/lesson.php
, all'interno della funzione insertSilences()
(variabili $marginLeft
e $marginRight
), ma ciò potrebbe causare effetti indesiderati.
function insertSilences() {
/* ... */
$marginLeft = 0.25; // Secondi di margine dopo l'inizio del silenzio
$marginRight = 2; // Secondi di margine prima della fine del silenzio
/* ... */
}
Sfortunatamente, ciò non è possibile senza una ricodifica del video stesso. Pensando proprio a questo ho sviluppato un altro programma: silence-speedup. Spero possa esserti utile.
Apri il file /js/player.js
e modifica i seguenti valori:
class Player {
/* ... */
static fastPlaybackRate = 8; // Velocità di riproduzione durante i silenzi
static minPlaybackRate = 0.5; // Velocità di riproduzione minima
static maxPlaybackRate = 3; // Velocità di riproduzione massima
/* ... */
}
Dopo di ché ricarica la pagina.
- Il sito fa uso della libreria
video.js
e una versione modificata del tema city; - Le icone sono prese da www.flaticon.com.