Stiamo riscontrando un problema su 3.6.0.beta3-latest in cui gli utenti iPhone e Safari su macOS vedono uno spinner infinito quando tentano di riprodurre un video .mp4 (H.264) caricato. Gli stessi video venivano riprodotti correttamente fino a poco tempo fa (non sono sicuro di quale fosse l’ultima versione di Discourse in cui funzionavano).
Sembra che Safari effettui una richiesta GET per recuperare i primi byte (Range: bytes=0-1) del video (ad esempio, /uploads/default/original/1X/44395933ccadf546b1b1ce65b742e24f900b33fa.mp4), che restituisce 200 ma fallisce per ragioni che non vengono mostrate nella console JavaScript o nell’ispettore di rete (solo evidenziato in rosso, nessun messaggio di errore). Se lo stesso URL viene incollato direttamente nel browser, è possibile scaricare correttamente l’intero video e riprodurlo.
Firefox e Chrome su macOS non hanno problemi a riprodurre i video. Anche i browser su Android non sembrano avere problemi.
I video sono piccoli (nell’ordine dei 10 MB). Non stiamo utilizzando S3 per i caricamenti.
Qualcun altro può confermare o smentire di non avere problemi con iPhone/Safari nella riproduzione di video? E c’è qualcos’altro che posso diagnosticare per far luce sul problema?
Sto riscontrando un problema simile con il mio forum, ma testare gli stessi file qui sembra funzionare bene. Solo gli utenti iOS/Safari sono interessati. Alcuni video nel contenitore WEBM funzionano, ma la maggior parte degli mp4, mov, ecc., no.
Ciao, ho riscontrato problemi di recente e ho commentato in un thread avviato da @tsk che è stato rimosso. Stavo lavorando con l’ipotesi che il problema fosse con i video codificati in mp4/av1 poiché i video webm/vp9 venivano riprodotti sul nostro forum, ma sembra che il problema sia più di questo per gli utenti Safari.
Per ridere, ho verificato di essere sull’ultima versione, anche se non ho visto nulla nei commit che indichi che influenzi gli utenti Apple.
La mia configurazione utilizza l’archiviazione locale per i caricamenti. La maggior parte dei thread è bloccata dietro il livello di fiducia, ma stiamo testando in una categoria pubblica qui:
Questo video è H.264 in MP4, dovrebbe essere riproducibile su tutti i browser che eseguono Discourse. Dato che funziona qui e non sulla tua istanza, sospetto che ci sia qualcosa di configurato in modo errato lì.
Esegui qualche reverse proxy aggiuntivo sopra Discourse? Ho visto alcune intestazioni su questa istanza che non esistono nelle installazioni standard, quindi sono curioso di sapere cosa è stato fatto lì.
Avevo considerato che questo potesse essere in parte responsabile, ma la configurazione non è cambiata e questo è un problema nuovo per la versione 3.6.0-beta2, per quanto ho potuto capire. Ho iniziato a ricevere lamentele dagli utenti Apple dopo la ricostruzione. Simile a @mandyk, non ricordo quale versione stessimo usando in precedenza.
C’è un’impostazione particolare in Discourse che dovrei valutare?
Sfortunatamente non possiamo coprire realisticamente tutte le infinite possibilità di configurazioni quando le persone aggiungono cose sopra Discourse, motivo per cui spediamo con una configurazione nota e valida nell’installazione standard che viene fornita con un proxy inverso configurato per Discourse.
Potrebbe mancare una singola direttiva di configurazione nginx, ma dovrai approfondire questo aspetto.
Confermo anche che il video pubblicato in questo thread viene riprodotto correttamente in Safari.
Non sono sicuro se questo sia rilevante, ma una differenza che riesco a notare è che il video in questo thread viene servito da S3. Quando Safari effettua la prima richiesta range, S3 risponde con HTTP 206, il che sembra corretto. Sia l’istanza Pixelspace che la mia istanza non utilizzano S3, e sembra che Discourse risponda con HTTP 200 (il che non sembra corretto, poiché la richiesta include un header Range: bytes=0-1).
Confermato che il video su discourse-on-a-pi5.falco.devnon funziona per me su Safari. Di nuovo, posso vedere che la richiesta video restituisce 200 invece di 206.
Modifica: Inoltre, sembra che la risposta stia tentando di restituire l’intero video anche se è stato specificato Range: bytes=0-1. Sospetto che le richieste di intervallo vengano ignorate e Safari sembra esserne sensibile.
Ulteriore modifica: Ciò probabilmente significa che la ricerca efficiente su video più grandi è interrotta anche per browser diversi da Safari, poiché devono scaricare l’intero video prima di poter cercare.
Quindi, per ulteriore divertimento, ho copiato il mio app.yml in app2.yml, ho cambiato l’URL e un paio di directory, e ora abbiamo testfor.pixelspace.xyz che esegue il branch stabile.