Скажем, у меня есть пакет из 40 JPEG, которые представляют 2 видео в секунду, и я хочу сгенерировать m3u8
список воспроизведения + h264 ts
для живого потока HLS - поэтому я делаю что-то вроде этого:
ffmpeg -y -framerate 2 -start_number 0 -i /frames/frame_%d.jpg -frames:v 40 \
-c:v libx264 -crf 21 -preset veryfast -g 2 \
-f hls -hls_time 4 -hls_list_size 5 -hls_flags omit_endlist \
-start_number 0 -segment_start_number 0 -segment_list_flags +live video/stream.m3u8
и это дает мне плейлист вот так:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:0
#EXTINF:4.000000,
stream0.ts
#EXTINF:4.000000,
stream1.ts
#EXTINF:4.000000,
stream2.ts
#EXTINF:4.000000,
stream3.ts
#EXTINF:4.000000,
stream4.ts
Отлично. Теперь скажите, что я получаю еще одну серию из 40 JPEGS, которая следует за первой, и я хочу отбросить stream0.ts
(первые 4 секунды / 8 кадров исходного 40 JPEGS) и добавить новую stream5.ts
(первые 4 секунды / 8 кадров из следующих 40 JPEGS):
ffmpeg -y -framerate 2 -start_number 8 -i /frames/frame_%d.jpg -frames:v 40 \
-c:v libx264 -crf 21 -preset veryfast -g 2 \
-f hls -hls_time 4 -hls_list_size 5 -hls_flags omit_endlist \
-start_number 1 -segment_start_number 1 -segment_list_flags live video/stream.m3u8
Тогда я получаю это:
#EXTM3U
#EXT-X-VERSION:3
#EXT-X-TARGETDURATION:4
#EXT-X-MEDIA-SEQUENCE:1
#EXTINF:4.000000,
stream1.ts
#EXTINF:4.000000,
stream2.ts
#EXTINF:4.000000,
stream3.ts
#EXTINF:4.000000,
stream4.ts
#EXTINF:4.000000,
stream5.ts
Отлично. Но когда я пытаюсь воспроизвести поток HLS с чем-то вроде HLS. js или видео. js, мой видеопоток останавливается. И когда я проверяю поток с помощью TSLemurs HLS Checker tool
, он предупреждает меня об ошибках "CC", которые, как я предполагаю, означают ошибки счетчика непрерывности:
![enter image description here](https://i.stack.imgur.com/38oKk.png)
Как я могу исправить эти ошибки счетчика непрерывности? Можно ли вообще это сделать с помощью ffmpeg?