HLS wurde von Apple entwickelt und steht für « HTTP Live Streaming », das heute am häufigsten verwendete Streaming-Protokoll für die Wiedergabe. Wenn nichts passiert, laden Sie GitHub Desktop herunter, und versuchen Sie es erneut. HLS-Streaming ist eine adaptive Bitrate-Technologie. Dies bedeutet, wenn Video in HLS codiert wird, werden mehrere Dateien für unterschiedliche Bandbreiten und auflösungen (Bildschirmgrößen) erstellt. Die Streams werden dem Client in Echtzeit mithilfe einer zugeordnet. M3u8 Indexdatei basierend auf Bildschirmgröße und verfügbarer Bandbreite. Laden Sie alle Dateien herunter, wie sie von der HLS (HTTP Live Streaming) VoD (Video on Demand) Playlist m3u8 von developer.apple.com/streaming/examples/ FFMpeg ist ein Multimedia-Framework mit der Fähigkeit, Multimedia-Dateien zu codieren, zu dekodieren, zu transcodieren, zu streamen und zu manipulieren. Ich finde dieses Tool aus zwei Gründen wirklich interessant. Erstens ist es Open Source, und zweitens kann es jeden und jeden Streaming-Vorgang ausführen, den Sie ausführen möchten. Das obige Manifest hat 7 Varianten. Nehmen Wir zum Beispiel müssen wir eine lokale Kopie der 1280×720 Variante in einem .mp4-Container herunterladen, wir müssen zuerst die Mediensegmente des Streams für diese Variante abrufen. Um dies zu tun, stellen Sie zuerst sicher, dass Sie eine lokale Installation von ffmpeg haben: Ich habe mehrere Erfahrungen mit HLS-Streams und FFMpeg gehabt, und so werde ich in diesem Artikel teilen, wie ich in der Lage war, Blöcke von Mediensegmenten einer Variante eines HLS-Streams herunterzuladen und zu kombinieren. NB: Dieser Artikel zielt darauf ab, das Konzept von HLS-Streaming und FFMpeg auf einer grundlegenden Ebene einzuführen.

Sie können ffmpeg verwenden, um den HTTP-LS-Stream herunterzuladen und zu dekodieren: Möchten Sie über neue Versionen in denex/hls-downloader benachrichtigt werden? Ab iOS 10 können Sie AVFoundation verwenden, um HTTP Live Streaming (HLS)-Assets auf ein iOS-Gerät herunterzuladen. developer.apple.com/documentation/avfoundation/media_assets_playback_and_editing/asset_manipulation/downloading_and_playing_offline_http_live_streaming_content?changes=_4 Überprüfen Sie die FFmpeg-Installation, indem Sie den Befehl « ffmpeg » direkt von Ihrem Terminal aus ausführen. Wenn die Installation erfolgreich ist, sollten Sie etwas Ähnliches sehen: Ersetzen Sie THE_URL durch die vollständige URL Ihrer M3U8-Playlist (oder versuchen Sie andere Optionen mit –help). . Bonus: Wenn Sie Perls JSON-Modul fehlen (wie ich hatte), führen Sie einfach sudo cpan JSON aus. Wir werden mit dem HLS-Teststream unten arbeiten: mnmedias.api.telequebec.tv/m3u8/29880.m3u8 Die HLS-Streams werden im .ts-Format geliefert und diese .ts-Dateien enthalten in der Regel H.264-codiertes Video und AAC-codiertes Audio, beide von einem Encoder komprimiert. Sie werden wiederum über das RTMP-Protokoll verpackt und an einen Medienserver gesendet, der wiederum den RTMP-Stream entpackt und als HLS-Playlist als HLS-Playlist neu verpackt, um ihn an ein CDN zu senden, das für eine schnellere Verteilung an Player überall zwischengespeichert wird. Dieses Perl-Skript ist ein guter Fetcher: github.com/osklil/hls-fetch Das wird eine playlist.mp4-Datei innerhalb desselben Verzeichnisses generieren, die über jeden Media Player abgespielt werden kann. FFmpeg Installation für Linux: johnvansickle.com/ffmpeg/ FFmpeg Installation für Mac: Verwenden Sie homebrew – « brew install ffmpeg » . Das Ausführen einer Locke vom Terminal aus gegen diesen Stream gibt unten ein ähnliches Manifest: Danach führen Sie den Folgenden-Befehl aus, um Mediensegmente in Ihrem aktuellen Arbeitsverzeichnis zu generieren: Lassen Sie mich erklären, was diese Flags tun: « -i » gibt die Eingabedatei an, die eine Stream-URL oder eine beliebige Mediendatei sein kann. « -map p:5 » weist ffmpeg an, den Stream mit der Programm-ID 5 auszuwählen, was in unserem Fall die 720p-Variante ist (Um die verschiedenen Programm-IDs eines Streams zu kennen, führen Sie nur ffmpeg -i -datei/url> aus).

« -c copy » weist ffmpeg an, standardbezogene Video- und Audioeigenschaften zu kopieren und keine Codierung vorzunehmen. « -f segment -segment_list » weist ffmpeg an, die Eingabedatei mit Ausgabedateien im Format out%03d.ts zu segmentieren. « -t » teilt ffmpeg die Dauer des Ausführens des Streams in Sekunden mit. Wenn Sie den obigen Befehl ausführen, werden Blöcke von TS-Segmenten mit einer Dauer von jeweils etwa 3 Sekunden innerhalb des aktuellen Arbeitsverzeichnisses generiert. Genießen Sie diesen Beitrag? Geben Sie Chukwukadibia Durugo ein Ähnliches, wenn es hilfreich ist. Um die generierten .ts-Dateisegmente in einer einzigen .mp4-Datei zu kombinieren: führen Sie aus dem Arbeitsverzeichnis in Ihrem Terminal den folgenden Befehl aus:.

Par