Skip to content

Latest commit

 

History

History
237 lines (175 loc) · 11.5 KB

README.it.md

File metadata and controls

237 lines (175 loc) · 11.5 KB

Lesson Player

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:

  1. Tiene traccia di dove sei arrivato (all'interno di un corso);
  2. Velocizza (a 8x) il video durante i silenzi (quando il professore non parla).
  3. Ingrandisci rapidamente sull'area importante della lezione;
  4. 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.


Presentation

I feedback sono molto apprezzati. Per favore, scrivimi una riga a padvincenzo@gmail.com


Guida introduttiva

Installazione

  1. Scarica, installa e avvia xampp.
  2. 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
  3. Crea una cartella (es: lesson-player/) e copia tutti i file al suo interno.

Download_and_extract

  1. Apri il browser all'indirizzo http://localhost/phpmyadmin/ e crea un nuovo database (es: lesson-player).

Xampp create database

  1. 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.

/* ... */
  1. 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.

Install

  1. (Opzionale) Imposta xampp per l'avvio automatico all'avvio del pc.

Aggiungere videolezioni

  1. 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.
  1. Apri il browser all'indirizzo http://localhost/lesson-player/;
  2. Inserisci tutti i corsi: nome, professore, percorso della cartella (es: classes/Physics I/, notare lo / alla fine);

New_class

  1. Torna alla pagina principale;
  2. Seleziona un corso e premi il pulsante Mostra;
  3. Inserisci tutte le videolezioni appartenenti a quel corso: data, titolo, nome del file (es: Lesson 01.mp4).

New_lesson

Velocizzare i silenzi

Per ogni lezione è possibile trovare e velocizzare i silenzi, tramite ffmpeg:

  1. Scarica e installa ffmpeg;
  2. Apri il terminale (o il prompt dei comandi);
  3. Spostati nella cartella ../lesson-player/ tramite il comando cd <cartella_xampp>/htdocs/lesson-player/;
  4. 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 -
  1. 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).

Come aggiornare

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

Keyboard

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. Premendo Invio su una di esse, partirà la relativa lezione. Lo stesso effetto si ottiene facendo doppio click.

Contribuire

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.

Feedback

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.

Feedback_preview

FAQ

Perché la durata minima dei silenzi deve essere maggiore di 2.25s?

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

  /* ... */
}

Voglio che vengano riconosciuti e velocizzati anche i silenzi più brevi, come posso fare?

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.

Voglio cambiare la velocità di riproduzione minima/massima/durante i silenzi, come posso fare?

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.

Crediti

Donate