Wenn Sie nur eine M3U8-Datei aus einem vorhandenen Segment generieren möchten:
ffmpeg -i input.ts \
-map 0 -c copy \
-f segment -segment_list out.m3u8 \
-segment_time 60 \
out%03d.ts
Hier ist es wichtig, dass Sie ein angeben -segment_time
gleich oder größer als die tatsächliche Eingabedauer, andernfalls teilt ffmpeg die Eingabedatei erneut auf.
Die Ausgabe M3U8 enthält eine Referenz auf die neu ausgegebene TS-Datei:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-ALLOW-CACHE:YES
#EXT-X-TARGETDURATION:61
#EXTINF:60.033333,
out000.ts
#EXT-X-ENDLIST
Sie können das verwenden oder das löschen out000.ts
Datei (da sie im Wesentlichen der Eingabedatei entspricht), und ändern Sie den Dateinamen in der M3U8-Datei, da der Inhalt der Mediendatei derselbe ist.
Sie können einen solchen Ersatz durchführen, z. mit perl
:
perl -pi -e 's/out000.ts/input.ts'
Ich sollte hinzufügen, dass Sie für den einfachen Fall einer Segmentdatei, deren Dauer Sie kennen, die M3U8-Datei einfach manuell generieren können. Sie müssen dann das angeben EXT-X-TARGETDURATION
und EXTINF:
Dauerwerte auch manuell.