Если вы просто хотите сгенерировать файл M3U8 из существующего сегмента:
ffmpeg -i input.ts \
-map 0 -c copy \
-f segment -segment_list out.m3u8 \
-segment_time 60 \
out%03d.ts
Здесь важно, чтобы вы указали значение -segment_time
равное или превышающее фактическую длительность ввода, иначе ffmpeg снова разделит входной файл.
Выходной файл M3U8 будет содержать ссылку на новый выходной файл TS:
#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
Вы можете использовать это или удалить файл out000.ts
(поскольку он по сути такой же, как входной файл), и изменить имя файла в файле M3U8, так как содержимое медиа-файла будет таким же.
Вы можете сделать такую замену, например, используя perl
:
perl -pi -e 's/out000.ts/input.ts'
Я должен добавить, что для простого случая одного файла сегмента, длительность которого вы знаете, вы можете легко сгенерировать файл M3U8 вручную. Затем необходимо вручную указать значения EXT-X-TARGETDURATION
и EXTINF:
длительность.