M3U8 bleibt nach einigen Sekunden hängen

M3U8 bleibt nach einigen Sekunden hängen

Ich habe unten einen kleinen experimentellen Clip:

http://d3fnzeq4kk32oq.cloudfront.net/802/test_1.m3u8

Mein Problem ist, dass das Video nach ein paar Sekunden hängen bleibt.

Ich würde mich freuen, wenn mir jemand helfen kann

  1. Identifizieren des Problems
  2. Irgendeine Lösung
  3. Jedes Tool zum Erkennen oder Beheben des Problems

Antwort1

Ich sehe keine Probleme. Dieses m3u8 zeigt auf die letzten paar Sekunden einer Live-Übertragung.

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-ALLOW-CACHE:NO
#EXT-X-TARGETDURATION:10
#EXT-X-MEDIA-SEQUENCE:54675
#EXTINF:10.0,
http://d3fnzeq4kk32oq.cloudfront.net/802/chunk-20131128_0122_54675.ts
#EXTINF:2.188,
http://d3fnzeq4kk32oq.cloudfront.net/802/chunk-20131128_0123_54676.ts
#EXTINF:10.0,
http://d3fnzeq4kk32oq.cloudfront.net/802/chunk-20131128_0123_54677.ts
#EXT-X-ENDLIST

HLS teilt das Video in Segmente auf. Diese Wiedergabeliste beginnt mit Segmentnummer 54675 und endet mit 54677. #EXT-X-ENDLISTweist den Player an, die Wiedergabe zu beenden, da wir keine Segmente mehr haben.

Während dieser Stream live war, wurde m3u8 aktualisiert.

https://datatracker.ietf.org/doc/html/draft-pantos-http-live-streaming-12

Antwort2

Die .m3u8Datei ist keinVideoclip; es ist einManifesttypDatei, die beim HTTP-Videostreaming verwendet wird. Sie gibt die URL MPEG2-TScodierter Videosegmente an, die normalerweise etwa 10 Minuten lang sind.

  1. Der Server sendet diese .m3u8Datei an den Client
  2. Anschließend extrahiert der Client die URL zum .tsVideosegment und zeigt das Videosegment an.

Unter normalen Live-Streaming-Bedingungen .m3u8wird alle 10 Minuten eine neue Datei vom Server an den Client gesendet, damit dieser die URL des nächsten 10-minütigen Videosegments kennt. Wenn keine Segmente mehr vorhanden sind oder das Live-Streaming-Ereignis beendet wurde, sendet der Server eine .m3u8Datei mit der #EXT-X-ENDLISTAnweisung, die dem Client mitteilt, dass keine weiteren Segmente mehr vorhanden sind, wie oben von szatmary erläutert.

Daher bleibt Ihr Video wie beschrieben „hängen“, da keine Segmente mehr verfügbar sind.

Reparieren:

Es ist kein Fix erforderlich, da der Server keine weiteren Segmente bereitgestellt hat.

Ressourcen:

Das beste Tool zum Erkennen dieses Problems ist ein Editor wievi(vim) Damit können Sie die Anweisungen in der .m3u8Datei sehen und nach der Anweisung suchen #EXT-X-ENDLIST. Oder verwenden Sie einfach catoder , tailum den Inhalt der .m3u8Datei anzuzeigen.

.m3u8Der von szatmary bereitgestellte Link zum IETF-Entwurf zum HTTP-Live-Streaming ist sehr informativ und erklärt alle in der Datei verwendeten Anweisungen .

Da Apple dieses Protokoll entwickelt und definiert hat, ist dies die beste Informationsquelle: https://developer.apple.com/streaming/

Weitere Ressourcen finden Sie hier: http://en.wikipedia.org/wiki/HTTP_Live_Streaming

verwandte Informationen