Problem beim Abspielen von Videos auf iOS und macOS Safari

Hallo zusammen,

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?

1 „Gefällt mir“

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.

2 „Gefällt mir“

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.

image

Meine Konfiguration verwendet lokalen Speicher für Uploads. Die meisten Threads sind hinter der Vertrauensstufe gesperrt, aber wir testen hier in einer öffentlichen Kategorie:

Können Sie einen Link zu dem betreffenden Video teilen oder es hier hochladen?

1 „Gefällt mir“

@Les79 Ich habe dieses Video testweise in beiden Foren hochgeladen.

Können Sie bestätigen, dass das Video im Pixelspace Safari Wiedergabe-Thread nicht funktioniert, das hier aber schon?

1 „Gefällt mir“

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.

2 „Gefällt mir“

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.

1 „Gefällt mir“

Das sehe ich auch so.

Ich verwende diesen Container als Reverse-Proxy

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.

image

Gibt es eine bestimmte Einstellung in Discourse, die ich bewerten sollte?

1 „Gefällt mir“

Es ist nicht Discourse, sondern der Proxy.

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.

1 „Gefällt mir“

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

Ich habe dasselbe Video auf meine Testinstanz hochgeladen unter
https://discourse-on-a-pi5.falco.dev/t/test-safari-bug/25?u=falco

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.

3 „Gefällt mir“

Wiedergabe funktioniert bei mir in Safari nicht

Und es funktioniert auf Test Safari Bug - Discourse richtig?

Ja, das funktioniert! Und ich sehe dort auch HTTP 206.

1 „Gefällt mir“

Sieht nach einer Regression in unserer Standard-Nginx-Konfiguration aus, danke für den Bericht @mandyk

1 „Gefällt mir“

Danke an @Adubs für das Posten eines Gegenbeweises zum Vergleichen! Und an das Discourse-Team für ein großartiges Werkzeug.

5 „Gefällt mir“

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.

https://testfor.pixelspace.xyz/t/safari-playback-test/8

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

Ich hätte das nicht selbst herausgefunden.

3 „Gefällt mir“