У меня есть список файлов .ts и я хочу сохранить их как несколько видеофайлов.
Сначала у меня есть .m3u8, подобный этому, полученный из потоковой передачи:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="aaa001_00001.key"
#EXTINF:3.01,
aaa001_00002.ts
#EXTINF:3.01,
aaa001_00003.ts
...
#EXTINF:3.01,
aaa001_01944.ts
#EXT-X-ENDLIST
Шаг 1:
Итак, я попытался преобразовать его в несколько m3u8, как показано ниже:
сегмент1.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="aaa001_00001.key"
#EXTINF:3.01,
aaa001_00002.ts
#EXTINF:3.01,
aaa001_00003.ts
...
#EXTINF:3.01,
aaa001_00569.ts
#EXT-X-ENDLIST
сегмент2.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:567
#EXT-X-KEY:METHOD=AES-128,URI="aaa001_00001.key"
#EXTINF:3.01,
aaa001_00002.ts
#EXTINF:3.01,
aaa001_00003.ts
...
#EXTINF:3.01,
aaa001_01288.ts
#EXT-X-ENDLIST
и так далее ...
, затем выполните команду ffmpeg cmd один за другим ..
ffmpeg -i /fs/segment2.m3u8 -safe 0 -map 0: v -map 0: -cpu-used 4 -threads 0 -представить очень быстро -c copy -bsf: вывод aac_adtstoasc.mp4
Но эти EXT-X-MEDIA-SEQUENCE> 0 (то есть с сегментом2.m3u8 ...) приведут к
"Выходной файл # 0 не содержит никакихstream "
Затем я попытался сделать так, чтобы'gment2.m3u8 'выглядел следующим образом
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="aaa001_00001.key"
#EXTINF:3.01,
aaa001_00002.ts <--the first video chunk
#EXTINF:3.01,
aaa001_00570.ts <--the start point of segment 2
#EXTINF:3.01,
aaa001_00571.ts
...
#EXTINF:3.01,
aaa001_01288.ts
#EXT-X-ENDLIST
ffmpeg работает нормально и выдает мне выходное видеоТаким образом, кажется, что информация о канале потока находится в первом фрагменте.
Тем не менее, есть еще несколько проблем
первый фрагмент видео находится в сегменте2.mp4, которыйЯ явно не хочу этого здесь.
segmВыходное видео ent2 воспроизводит сначала 3,01 с, затем замораживает изображение до тех пор, пока время не достигнет aaa001_00570.ts и воспроизведет снова
Итак, любое предложение, чтобы я мог ссылаться на информацию о потокес первого куска?или игнорировать его в списке воспроизведения и т. д.?
РЕШЕНИЕ ОБНОВЛЕНИЯ
Как это работает, когда # EXT-X-MEDIA-SEQUENCE: 0 и #EXT-X-KEY: IV = по умолчанию
Поэтому я добавляю IV = hex (# EXT-X-MEDIA-SEQUENCE) в каждый плейлист
сегмент1.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:0
#EXT-X-KEY:METHOD=AES-128,URI="aaa001_00001.key",IV=0x00000000000000000000000000000000
#EXTINF:3.01,
aaa001_00002.ts
#EXTINF:3.01,
aaa001_00003.ts
...
#EXTINF:3.01,
aaa001_00569.ts
#EXT-X-ENDLIST
сегмент2.m3u8
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:5
#EXT-X-MEDIA-SEQUENCE:567
#EXT-X-KEY:METHOD=AES-128,URI="aaa001_00001.key",IV=0x00000000000000000000000000000237
#EXTINF:3.01,
aaa001_00570.ts
...
#EXTINF:3.01,
aaa001_01288.ts
#EXT-X-ENDLIST