2015-03-06 2 views
2

Используется ffmpeg для прямой трансляции через HLS и воспроизведения через video.js. Он работает, но есть 20-секундная задержка между временем начала потока до момента начала воспроизведения.Ffmpeg hls live streaming - Как генерировать более короткие сегменты

Вы знаете, почему команда ffmpeg ниже не создает сегменты, которые составляют 3 секунды, как я определил его в команде. Сегменты имеют тенденцию быть 9 или 10. Не удается получить их на более короткий размер

ffmpeg -f x11grab -s 1280x720 -r 30 -i :0.0+nomouse -f alsa -ac 2 -i pulse -async 30 -vcodec libx264 -pix_fmt yuv420p -acodec libfdk_aac -ar 44100 -b:a 64k -threads 0 -s 640x360 -f hls -hls_time 1 -hls_list_size 1 -hls_allow_cache 0 /tmp/hls/#{@stream_name}/index.m3u8 

Вот m3u8 файл списка воспроизведения:

#EXTM3U 
#EXT-X-VERSION:3 
#EXT-X-ALLOW-CACHE:NO 
#EXT-X-TARGETDURATION:9 
#EXT-X-MEDIA-SEQUENCE:10 
#EXTINF:8.333333, 
index10.ts 
#EXTINF:8.333333, 
index11.ts 
#EXTINF:8.333333, 
index12.ts 
#EXTINF:8.333333, 
index13.ts 
#EXTINF:2.366667, 
index14.ts 
#EXT-X-ENDLIST 
+0

Вопрос: что hls_list_size для в вашем случае - это работает? Я пытался использовать его для того, что, по моему мнению, является его предполагаемым использованием, но, похоже, это не работает. Я установил его как 5 и ожидаю, что на диске будет существовать максимально 5 файлов .ts. Но он просто продолжает добавлять файлы навсегда, заканчивая дисковое пространство ... – Jonny

ответ

6

Вы должны также указать интервал между ключевыми кадрами. Также известен как размер GOP (группа изображений).

-g [time]

+0

Спасибо! похоже, что это трюк! – vedeojunky

+0

Перед использованием -g я использовал -force_key_frames «expr: gte (t, n_forced * 2)», но я не понимаю, почему это не сработало –

Смежные вопросы