Wir haben ein Problem mit 3.6.0.beta3-latest, bei dem iPhone- und Safari-Benutzer auf macOS einen endlosen Spinner erhalten, wenn sie versuchen, ein hochgeladenes .mp4 (H.264)-Video abzuspielen. Dieselben Videos funktionierten bis vor kurzem einwandfrei (ich bin mir nicht sicher, welche die letzte Version von Discourse war, als sie funktionierten).
Es sieht so aus, als ob Safari einen GET-Request macht, um die ersten Bytes (Range: bytes=0-1) des Videos abzurufen (z. B. /uploads/default/original/1X/44395933ccadf546b1b1ce65b742e24f900b33fa.mp4), der 200 zurückgibt, aber aus Gründen fehlschlägt, die weder in der JS-Konsole noch im Netzwerkinspektor angezeigt werden (nur rot hervorgehoben, keine Fehlermeldungen). Wenn dieselbe URL direkt in den Browser eingefügt wird, können die Benutzer das vollständige Video erfolgreich herunterladen und abspielen.
Firefox und Chrome auf macOS haben keine Probleme beim Abspielen der Videos. Browser auf Android scheinen ebenfalls keine Probleme zu haben.
Die Videos sind klein (im Bereich von 10 MB). Wir verwenden kein S3 für Uploads.
Kann jemand anderes dies bestätigen oder bestätigen, dass er keine Probleme mit iPhones/Safari beim Abspielen von Videos hat? Und gibt es andere Diagnosemöglichkeiten, die das Problem beleuchten könnten?
Ich habe ein ähnliches Problem mit meinem Forum, aber das Testen derselben Dateien hier scheint gut zu funktionieren. Nur iOS/Safari-Benutzer sind betroffen. Einige Videos im WEBM-Container funktionieren, aber die meisten MP4-, MOV-usw. nicht.
Hallo, ich habe kürzlich Probleme festgestellt und in einem Thread von @tsk kommentiert, der gelöscht wurde. Ich ging davon aus, dass das Problem bei mp4/av1-kodierten Videos liegt, da webm/vp9-Videos auf unserem Forum abgespielt wurden, aber es sieht so aus, als ob das Problem für Safari-Benutzer mehr als das ist.
Nur zum Spaß habe ich überprüft, ob ich die neueste Version habe, obwohl ich in den Commits nichts gesehen habe, das darauf hindeuten würde, dass es Apple-Benutzer betrifft.
Meine Konfiguration verwendet lokalen Speicher für Uploads. Die meisten Threads sind hinter der Vertrauensstufe gesperrt, aber wir testen hier in einer öffentlichen Kategorie:
Ja, das hier gepostete Video funktioniert in Safari sowohl auf meinem iPhone 13 als auch auf meinem MacBook Pro M3. Es funktioniert nicht im PixelSpace-Forum.
Dieses Video ist H.264 in MP4 und sollte in allen Browsern abgespielt werden, die Discourse ausführen. Da es hier läuft und nicht auf Ihrer Instanz, vermute ich, dass dort etwas falsch konfiguriert ist.
Führen Sie einen zusätzlichen Reverse-Proxy über Discourse aus? Ich habe auf dieser Instanz einige Header gesehen, die bei Standardinstallationen nicht vorhanden sind. Daher bin ich neugierig, was dort gemacht wurde.
Ich hatte erwogen, dass dies teilweise verantwortlich sein könnte, aber die Konfiguration hat sich nicht geändert und dies ist ein neues Problem seit 3.6.0-beta2, soweit ich das beurteilen kann. Ich begann, Beschwerden von Apple-Benutzern zu erhalten, nachdem ich neu aufgebaut hatte. Ähnlich wie @mandyk erinnere ich mich nicht, auf welcher Version wir zuvor waren.
Gibt es eine bestimmte Einstellung in Discourse, die ich bewerten sollte?
Leider können wir nicht alle unendlichen Konfigurationsmöglichkeiten abdecken, wenn Leute etwas über Discourse legen, weshalb wir mit einer bekannten guten Konfiguration bei der Standardinstallation ausliefern, die mit einem Reverse-Proxy für Discourse konfiguriert ist.
Es könnte eine einzige Nginx-Konfigurationszeile fehlen, aber das müssen Sie selbst recherchieren.
Bestätige auch, dass das in diesem Thread gepostete Video in Safari problemlos abgespielt wird.
Ich bin mir nicht sicher, ob das relevant ist, aber ein Unterschied, den ich feststellen kann, ist, dass das Video in diesem Thread von S3 bereitgestellt wird. Wenn Safari die erste Range-Anfrage stellt, antwortet S3 mit HTTP 206, was korrekt zu sein scheint. Sowohl die Pixelspace-Instanz als auch meine Instanz verwenden nicht S3, und es scheint, dass Discourse mit HTTP 200 antwortet (was nicht korrekt zu sein scheint, da die Anfrage einen Range: bytes=0-1-Header enthält).
Bestätigt, dass das Video auf discourse-on-a-pi5.falco.dev für mich unter Safari nicht funktioniert. Wiederum sehe ich, dass die Videoanfrage 200 statt 206 zurückgibt.
Bearbeiten: Außerdem scheint die Antwort zu versuchen, das gesamte Video zurückzugeben, obwohl Range: bytes=0-1 angegeben wurde. Ich vermute, dass Bereichsanfragen ignoriert werden und Safari empfindlich darauf reagiert.
Weitere Bearbeitung: Dies bedeutet wahrscheinlich, dass das effiziente Suchen in größeren Videos auch für andere Browser als Safari fehlerhaft ist, da sie das gesamte Video herunterladen müssen, bevor sie suchen können.
Nur zum zusätzlichen Spaß habe ich meine app.yml nach app2.yml kopiert, die URL und ein paar Verzeichnisse geändert, und wir haben jetzt testfor.pixelspace.xyz, das den stabilen Branch ausführt.
Meine Benutzer bestätigen, dass es hier über denselben Proxy funktioniert.
Bearbeitung: Ich sehe jetzt, dass das Problem bestätigt wurde. Entschuldigen Sie, dass ich nicht früher daran gedacht habe, dies zu versuchen. Vielen Dank für Ihre Einsichten @mandyk