Riproduci automaticamente e ripeti il video al caricamento

Voglio che gli utenti possano caricare brevi file video da incorporare nei loro post, e voglio che il comportamento predefinito del forum sia configurabile per far sì che tali video vengano riprodotti automaticamente, in loop e con l’audio disattivato. In modo che i video possano essere utilizzati come sostituti delle gif, nello stesso modo in cui funzionano su Discord (infatti i video provengono principalmente da Discord, che utilizza molti .mp4 al posto delle gif, a quanto pare).

Questo argomento mostra come scrivere HTML per far sì che un file video venga riprodotto automaticamente e in loop.

<video width="100%" height="100%" preload="metadata" controls="" autoplay>
      <source src="https://www.simscale.com/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4">
      <a href="https://www.simscale.com/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4">/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4</a>
</video>

Questo funziona, tranne per il fatto che non riesco a capire come potrei usarlo quando un utente sta scrivendo il suo post e caricando il suo file video. Nota come in questo esempio viene utilizzato l’URL completo del file video. Questo non è disponibile per gli utenti quando caricano il loro file, inoltre, se i file caricati dagli utenti vengono spostati sul server o spostati su un diverso provider S3 o CDN, l’URL si romperà.

Quando un utente carica il suo file, nella casella di risposta ottiene un Markdown come questo:

![happy-birthday|video](upload://abcdefg123456789.mp4)

Quindi non sembra possibile per un utente convertire semplicemente questo nell’HTML necessario affinché il suo video venga riprodotto automaticamente e in loop (con audio disattivato). Esiste un metodo disponibile per questo? E ancora meglio, esiste un modo per rendere questo il comportamento predefinito in tutto il forum? O almeno lasciare questo comportamento abilitato per impostazione predefinita, e consentire all’utente di rinunciare alle impostazioni di riproduzione automatica e loop quando sta caricando e pubblicando.
(se non è attualmente possibile, vorrei inviare questa richiesta di funzionalità :slight_smile: )

Ciao :waving_hand:

Sto pensando a due modi in cui sarà possibile.

Il primo è il più semplice, creare semplicemente un piccolo componente tematico che utilizza l’API del plugin api.decorateCookedElement per trovare tutti i video nei post e aggiungere questi attributi. (autoplay, loop, ecc.)

Modificherà tutto l’HTML dei video nei post su tutto il sito. Nel composer apparirà ancora il codice video markdown che hai menzionato sopra.
![happy-birthday|video](upload://abcdefg123456789.mp4)

Pro: ha interessato tutti i video sul sito (quindi anche quelli caricati in precedenza)
Contro: gli utenti non possono controllarlo perché avviene sui post pubblicati. Interessa tutti i video, quindi se hai un argomento con molti video e questi vogliono partire contemporaneamente, può causare problemi.


La seconda opzione richiede un po’ più di lavoro. Si tratta di una modale in cui gli utenti possono controllare quali attributi verranno aggiunti al video caricato. Può essere attivata aggiungendo un pulsante specifico al composer o attivata automaticamente quando rileva un caricamento video.

Una volta fatto, inserisce l’HTML del video nel composer che contiene gli attributi aggiunti.

<video width="100%" height="100%" preload="metadata" controls="" autoplay>
    <source src="https://www.simscale.com/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4">
    <a href="https://www.simscale.com/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4">/forum/uploads/default/original/3X/d/6/d6fab77fb56eeb98ef660d682f344dba4bbb66ce.mp4</a>
</video>

Un ottimo esempio di questo è il componente tematico Insert Video.

Pro: gli utenti possono controllare gli attributi dei loro video e possono scegliere di disabilitare l’autoplay, ecc., quindi anche gli argomenti ricchi di video andranno bene.
Contro: non influenzerà i video più vecchi. Ma non è un grosso problema perché tutto questo secondo processo riguarda il modo in cui gli utenti possono controllare i loro video.


Più

Il primo metodo può essere combinato con un’impostazione utente o un gruppo. Con questo gli utenti possono impostare il comportamento dei video.
Ad esempio: Abilita autoplay video o unirsi a un gruppo che attiverà l’autoplay dei video, ecc…


Modifica: Stavo solo pensando che ho dimenticato il lazy load, probabilmente il primo processo non funziona ora perché il lazy load carica il video solo se l’utente clicca sul pulsante di riproduzione della miniatura. Non l’ho ancora provato… :thinking:

2 Mi Piace

Sì, penso che la cosa migliore sarebbe renderlo configurabile dall’utente, se desidera impostarlo o meno. Mi chiedo quanto sarebbe difficile farlo? Sarebbe considerato un “componente tema”?