MP4-Video (H.264-Format) wird auf dem iPhone nicht wiedergegeben, wenn ich das Video in einer Amazon EC2-Instanz hoste

0

Ich habe mein source.flvVideo target.mp4mit folgendem Befehl in das Format (h.264) konvertiert :

ffmpeg -i source.flv -r 25 -b:a 128k -strict -2 -c:v libx264 -preset slow -s 320x240 -b:v 768k -ar 44100 -c:a aac target.mp4;

Das target.mp4Video wird im Browser meines Computers wiedergegeben, aber nicht auf dem iPhone / iPad, wenn ich mein Video auf einer Amazon EC2-Instanz hoste.

Das gleiche target.mp4Video wird sowohl in meinem Computerbrowser als auch auf dem iPhone / iPad abgespielt, wenn ich es an einem anderen Ort hoste.

QuickTime zeigt den folgenden Fehler an, wenn ich versuche, das Video über die EC2-Instanz zu öffnen:

QuickTime
BYTE_RANGE_ERROR_MESSAGE
Shishir Mudliyar
quelle

Antworten:

4

Endlich haben wir die aktuelle Lösung für die Frage, warum unsere mp4 (h.264) -Videos auf dem iPhone nicht abgespielt werden. Die Lösung lautet: Entfernen oder Kommentieren der Datei compress.conf aus httpd.conf (Apache Server-Konfigurationsdatei).

Die Datei Compress.conf wird zum Komprimieren der Ausgabe verwendet, bevor sie an den Client gesendet wird. Wenn Sie compress.conf nicht entfernen möchten, können Sie einige Zeilen in compress.conf kommentieren. Kommentar

# Laden Sie das Filtermodul

SetEnv filter-errordocs true

FilterDeclare comp-resp

# Alles komprimieren, außer Bilder, Audio und Video

#FilterProvider comp-resp DEFLATE resp = Inhaltstyp! / ^ (Bild | Audio | Video) //

#FilterProtocol comp-resp change = yes

Shishir Mudliyar
quelle
2

Um Video auf diese QuickTime- / Apple-Geräte zu streamen, sendet der Server einen Accept-Ranges: bytesHeader. Dies zeigt dem Player an, dass bestimmte Teile des Videos durch Senden eines Byte-Offsets angefordert werden können. Auf diese Weise können Sie beispielsweise von der Mitte eines Videos aus mit dem Streaming beginnen, ohne die gesamte Datei herunterladen zu müssen.

Normalerweise funktioniert dies standardmäßig. Bytebereichsanforderungen können jedoch auch als Sicherheitsrisiko angesehen werden, z. B. wenn ein Denial-of-Service-Angriff auf den Server gestartet wird. Aus diesem Grund können Bytebereichsanforderungen auf dem Weg entweder über einen Router oder eine Firewall oder vom EC2-Server selbst blockiert werden, was zu der angezeigten Fehlermeldung führen würde.

Überprüfen Sie daher die Verbindung auf mögliche blockierte Anforderungen, oder wenden Sie sich an den EC2-Support.

Siehe auch:

slhck
quelle
Ich habe den Amazon-Entwicklungssupport kontaktiert und auf deren Antwort gewartet. Bis ihre Antwort kommt, mache ich auch etwas Google-Suche und fand "qt-faststart". Ist es in meinem Fall nützlich (ich, e progressives Herunterladen in iPhone / iPad)?
Shishir Mudliyar
Die Verwendung von qt-faststart, um das moovAtom an den Anfang Ihrer MP4-Dateien zu verschieben, ist für alle Arten von Streaming auf jeden Fall empfehlenswert, auch wenn dies nicht ausschließlich mit Ihren Problemen zusammenhängt . Siehe: Grundlegendes zum MPEG-4-Movie-Atom | Adobe Developer Connection
slhck
Das Folgende sind die Header aus der EC2-Instanz, die wir durch Liveheaders in Firefox beobachtet haben. [GET /tmp/race.mp4 HTTP / 1.1 Host: xxx.com User-Agent: Mozilla / 5.0 (X11; Linux i686; rv: 16.0) Gecko / 20100101 Firefox / 16.0 Akzeptieren: text / html, application / xhtml + xml , application / xml; q = 0.9, / ; q = 0.8 Accept-Sprache: en-US, en; q = 0.5 Accept-Codierung: gzip, deflate Verbindung: keep-alive] [HTTP / 1.1 200 OK Server: Apache / 2.2.15 (CentOS) Etag: "1e15b2-4cf6375252c50" Akzeptanzbereiche: Bytes Inhaltslänge: 1971634 Keep-Alive: Timeout = 15, max = 100 Verbindung: Keep-Alive Inhaltstyp: video / mp4]
Shishir Mudliyar
Und ich bekomme auch keine umfassende Antwort vom Amazon-Support-Team. Ich arbeite mit dem Amazon-Support zusammen, um die passende Lösung zu finden
Shishir Mudliyar,
Nun, das sagt Ihnen nur, dass der Server dies zulässt Accept-Ranges: bytes, also muss er auf dem Weg blockiert werden.
Slhck