ffmpeg - как «установить» счетчики непрерывности при создании сегментов .ts для прямой трансляции HLS? - PullRequest
0 голосов
/ 07 марта 2020

Скажем, у меня есть пакет из 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

Как я могу исправить эти ошибки счетчика непрерывности? Можно ли вообще это сделать с помощью ffmpeg?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...