Wie zum download .m3u8 einmal Zeit

Ich habe eine .m3u8 - Datei auf dem remote-host, mit enthalten Feste Anzahl von chunk .ts Dateinamen, und nicht stream:

#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:11
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:9.736,
media_0.ts
#EXTINF:9.96,
media_1.ts
#EXTINF:10.0,
media_2.ts
#EXTINF:10.0,
media_3.ts
#EXTINF:10.0,
media_4.ts
#EXTINF:10.2,
media_5.ts
#EXTINF:10.0,

Wenn ich diesen Befehl verwenden:

# ffmpeg -i "http://example.com/chunklist.m3u8" file.mp4

frame=  582 fps=9.4 q=28.0 size=    1536kB time=00:00:23.21 bitrate= 542.1kbits/s dup=2 drop=4 speed=0.375x

Es funktioniert. Aber Es get frame-by-frame-video und sehr lange Zeit benötigt. (Es dauert seine Zeit fast um die Wiedergabe des Videos.)

Aber da der Weg, der alle .ts - Dateien bekannt sind. ( http://example.com/media_0.ts , http://example.com/media_1.ts, ...), Muss es einen Weg zu bekommen, und mischen Sie Sie alle zur gleichen Zeit.

Aber Wie in ffmpeg direkt?!

BEARBEITEN (versuchen eine Lösung):

Für eine Lösung, ich weiß, wie kann die Verkettung von Dateien mit ffmpeg.

ffmpeg -i "concat:0.ts|1.ts|2.ts|3.ts|4.ts|5.ts" -c copy output.mp4

Dieses ffmpeg-Kommando war toll, und funktioniert in weniger als 1 Sek Zeit!

So versuchen Sie, alle .ts Dateien mit CURL mit diesem Befehl:

curl \
http://example.com/media_0.ts -o 0.ts \
http://example.com/media_1.ts -o 1.ts \
http://example.com/media_2.ts -o 2.ts \
http://example.com/media_3.ts -o 3.ts \
http://example.com/media_4.ts -o 4.ts \
http://example.com/media_5.ts -o 5.ts

Aber können Sie das Ergebnis sehen:

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  687k  100  687k    0     0  75108      0  0:00:09  0:00:09 --:--:-- 74111
100  652k  100  652k    0     0  59404      0  0:00:11  0:00:11 --:--:-- 53400
100  673k  100  673k    0     0  48675      0  0:00:14  0:00:14 --:--:-- 55781
100  657k  100  657k    0     0  63573      0  0:00:10  0:00:10 --:--:-- 62494
100  671k  100  671k    0     0  39019      0  0:00:17  0:00:17 --:--:-- 40863
100  692k  100  692k    0     0  63480      0  0:00:11  0:00:11 --:--:-- 80049

Sehen, ist total download-Zeit wurde 72 sec, während die Gesamtdauer aller Teile ist 59 Sek! dass diese Zeit sehr lang ist!

Also sorry, download alle Teile und dann concat, dass war keine gute Lösung.

EDIT 2

Ich versuche für ein anderes .m3u8 Datei auf dem anderen server mit Unterschied-URL:

Herunterladen und concat gemeinsam:

ffmpeg -i "concat:\
http://184.72.239.149/vod/smil:BigBuckBunny.smil/media_w442897525_b560000_0.ts|\
http://184.72.239.149/vod/smil:BigBuckBunny.smil/media_w442897525_b560000_1.ts|\
http://184.72.239.149/vod/smil:BigBuckBunny.smil/media_w442897525_b560000_2.ts|\
http://184.72.239.149/vod/smil:BigBuckBunny.smil/media_w442897525_b560000_3.ts|\
http://184.72.239.149/vod/smil:BigBuckBunny.smil/media_w442897525_b560000_4.ts|\
http://184.72.239.149/vod/smil:BigBuckBunny.smil/media_w442897525_b560000_5.ts\
" -c copy -y output.ts

Anderen Befehl mit input.txt URLs-Datei.

ffmpeg -f "concat" -i "input.txt" -c copy -y output.ts

input.txt Datei:

file 'http://184.72.239.149/vod/smil:BigBuckBunny.smil/media_w442897525_b560000_0.ts'
file 'http://184.72.239.149/vod/smil:BigBuckBunny.smil/media_w442897525_b560000_1.ts'
file 'http://184.72.239.149/vod/smil:BigBuckBunny.smil/media_w442897525_b560000_2.ts'
file 'http://184.72.239.149/vod/smil:BigBuckBunny.smil/media_w442897525_b560000_3.ts'
file 'http://184.72.239.149/vod/smil:BigBuckBunny.smil/media_w442897525_b560000_4.ts'
file 'http://184.72.239.149/vod/smil:BigBuckBunny.smil/media_w442897525_b560000_5.ts'

Bzw. dieser Befehl einige Zeit, wenn nötig:

ffmpeg -f "concat" -safe "0" -protocol_whitelist "file,http,https,tcp,tls" -i "input.txt" -c copy -y output.ts

Schließlich, dass die download-Geschwindigkeit war gut, VIELLEICHT ist mein Ziel-server hat eine begrenzte Bandbreite. 🙁

  • Wenn Sie die Kontrolle der server-Seite, wie wäre es mit einem zip-Archiv dort statt, dann entpacken Sie nach dem download?
  • Dies ist ein schlechtes Gesetz.
  • ffmpeg -i http://reading/documentation/is/magic/just/try/it/really.m3u8 -c copy file.mp4
InformationsquelleAutor Nabi K.A.Z. | 2017-11-11
Schreibe einen Kommentar