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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den richtigen Weg zu concat mehrere video-Dateien von m3u8-playlist ist
ffmpeg -i "http://example.com/chunklist.m3u8" -codec copy file.mp4
-codec copy
zu vermeiden Codierung (die Zeit)*.mp4
ist gut, aber es scheint ein wenig langsam zu mux, wenn die playlist geladen wird, die von web*.mkv
oder*.ts
besten funktioniert für michkönnen Sie versuchen.
command:
ffmpeg -y \
-v warning \
-loglevel debug \
-i "m3u8 url" \
-vcodec copy \
-c copy -f mpegts out.ts
ts in mp4 konvertieren:
ffmpeg -i out.ts -acodec copy -vcodec copy out.mp4
hier einige python-code, der es tut, Sie müssen nur die url des 1. Segments und die Anzahl der Segmente (aus dem .m3u8-Datei):
Hier's der gleiche code mit ein paar mehr Glocken und Pfeifen